-
Notifications
You must be signed in to change notification settings - Fork 64
Graphite release notes
gbezerra edited this page Feb 3, 2014
·
39 revisions
- Dynamic voltage and frequency scaling (DVFS)
- Fixed bug with SYSTEM_NETWORK initial frequency
- Dynamic voltage and frequency scaling (DVFS)
- Fixed bug with the convertToModule() function in common/system/dvfs_manager.cc
- Fixed bug involving limits to max_frequency (now, it can be lower than 1.0 GHz)
- PARSEC
- Facesim - Create empty output directory so that simulation does not crash
- Pin
- Upgraded to Pin version 2.13-62141
- Used child injection (by default) to allow security restrictions with Ubuntu OS
- BerkeleyDB
- Please install BerkeleyDB using the following command (reasons follow)
- $ sudo apt-get install libdb-dev
- Please install BerkeleyDB using the following command (reasons follow)
- PARSEC
- We ONLY support PARSEC 3.0
- We have added a few more patches for integration with the current Graphite release
- Reinstall PARSEC for Graphite following the instructions at https://github.com/mit-carbon/Graphite/wiki/Adding-and-Running-Applications
- [OR]
- Apply the new patches selectively
- Core Power Modeling
- Added power modeling for the processor cores
- Graphite is integrated with McPAT 1.0 for core/cache power modeling
- Graphite bases its core power models off the Niagara 1.0 core power model in McPAT
- Dynamic Voltage and Frequency Scaling (DVFS)
- Replaced previous dynamic frequency scaling mechanism with new DVFS functionality
- Allows for multiple DVFS domains within a tile
- DVFS domains and initial frequencies are defined in the configuration file
- Look at [dvfs/domains] configuration parameter in carbon_sim.cfg for how to configure domains and starting frequencies of each domain
- Technology files define DVFS tables
- Look at technology/dvfs_levels_*nm.cfg for the DVFS tables at the different technology nodes
- You can define your own tables by modifying these files
- Added APIs' for obtaining & changing frequency and voltage from within the application
- Look at common/user/dvfs.h for the APIs
- Included costs for asynchronous communication between frequency domains (reported in the sim.out file)
- The parameter [dvfs/synchronization_delay] is used to configure this cost in carbon_sim.cfg
- Power Models Database
- Power models for CACTI & DSENT are cached in a local disk BerkeleyDB database to avoid re-computation across simulations
- The caching code for CACTI was borrowed from the Sniper simulator
- The databases are created at /tmp/mcpat-$(USER).db and /tmp/dsent-$(USER).db respectively
- A directory is also created at /tmp/dbenv-$(USER) for synchronization purposes so as to allow multiple simulations running simultaneously on the same machine to read & write concurrently in the database
- Power models for CACTI & DSENT are cached in a local disk BerkeleyDB database to avoid re-computation across simulations
- Runtime Energy/Power Monitoring
- It is now possible to log traces of power values during runtime
- These traces can be enabled in carbon_sim.cfg, and they produce CSV files in the results directory
- Enable the traces by setting [runtime_energy_modeling/power_trace/enabled] to true
- Performance Enhancements
- Improved speed of simulation by 40% when using the simple core model and by 15x when using the iocoom core model (in-order core with out-of-order memory support)
- The performance improvements are due to 2 reasons:
- Removing dynamic memory allocation calls in analysis routines
- Pin's dynamic memory allocation performance is terrible since they use a centralized manager with Spin locks
- Using IARG_THREAD_ID to get the thread-ID every time (well, most of the time) Graphite is invoked for performance & power modeling
- Earlier, a system call was used which caused performance slowdown
- Removing dynamic memory allocation calls in analysis routines
- Removed Feature
- Removed the ability to configure tiles to different frequencies at start-up
- If anyone still wants this functionality, they should add a call in software to change the frequency at the start of each different thread during simulation
- Misc
- Removed all floating point save/restore from code and all volatile variables
- Pin has added support for floating point variables in the pintool
- Use iocoom (in-order core with out-of-order memory) as default core model
- Removed printing statistics of thread spawner(s), MCP and system network from sim.out
- Removed all floating point save/restore from code and all volatile variables
- McPAT/CACTI cache power modeling
- Bugfix for McPAT/CACTI cache power models
- Please follow the instructions at https://github.com/mit-carbon/Graphite/wiki/Power-Modeling
- Pin
- Updated to Pin version 2.13.61206
- Clock Skew Management
- Changed default to lax_barrier for shared memory applications and lax_p2p for message passing applications
- Graphite now works with Ubuntu 12.04
- See instructions on github wiki for how to run with Ubuntu
- Pin
- Graphite works with latest Pin version 2.12-58423
- PARSEC
- facesim works in full & lite modes
- dedup, ferret, bodytrack work in lite mode only
- Internal representation of target time
- Changed internal representation of target time from cycles to picosec (see common/misc/time_types.h) to enable easier implementation of multiple clock domains, DVFS, etc.
- Added instruction buffer
- Reduces target energy and host simulation time by fetching a cache line worth of instructions from the L1-Icache in the IF stage and then reading locally from them
- Makefile
- Enable automatic recompilation when changing *.h (previously, this was broken)
- Graphite can be compiled in parallel using the -j option
- Power Modeling
- Enable specifying temperature from the config file (temperature affects leakage power)
- Regression infrastructure
- tools/regress/run.sh for running regressions
- tools/regress/config.py for configuring regressions
- Minor bug fixes
- Handling of dynamic instructions now immediate
- Code cleanup
- Removed 2nd user and memory networks
- Removed basic block packaging of instructions (also improved performance)
- Debian Squeeze is now required for graphite.
- Upgraded to Pin version 2.12-53271
- Only 64-bit target and host architectures are now supported
- Switched to using the internal Pin thread spawning interface from the os-threads interface
- 2.5-3x performance improvement
- Most improvement from removing redundant calls to getCurrentCore() from the memory subsystem models
- New infrastructure for running simulations and viewing outputs
- All simulation outputs now reside in dynamically created directories and no longer overwrite each other
- For more information, look at Simulation Outputs
- Added Private-L1 Shared L2 memory subsystem
- The Shared-L2 is distributed among all the tiles on the processor
- The directory entries are co-located with the L2 cache tags
- Both full-map and limited directories (see carbon_sim.cfg) are supported
- Location:
common/tile/memory_subsystem/pr_l1_sh_l2_msi/
- Changed interface functions for the cache models
- The changes are in fetching/storing/invalidating the cache tag
- Allows for maintaining more accurate access counters and energy information
- Look at Cache Interface Changes (2.1.9 Release) for more information and guidance on how to switch over
- Location:
common/tile/memory_subsystem/cache/cache.[cc/h]
- Graphite is now integrated with PARSEC 3.0 with better support for compiling and running benchmarks
- blackscholes, swaptions, canneal, fluidanimate, streamcluster work in both full and lite modes
- freqmine works in lite mode only
- For more information, look at Adding and Running Applications
- The DSENT network power modeling tool is now used (in place of Orion)
- It models the energy of electrical routers and links as well as optical links
- Location:
contrib/dsent
- Optical network model (atac)
- Network model (atac) is integrated that uses optical links for broadcasts/long-distance unicasts
- Performance and power models for this network is done
- Location:
common/network/models/network_model_atac.[cc/h]
- Network modeling made simpler by including parametric models for routers and links
- Network model performs just instantiation of routers and links as well as route computation
- Latency calculation, contention modeling, energy counters update, forwarding network packet, etc. automatically performed
- Location:
common/network/components/router/
,common/network/components/link
- Look at the
emesh_hop_by_hop
andatac
network models for usage examples
- Removed a lot of obsolete tests
- Miscellaneous bug fixes
- Support for Debian 6 Squeeze. Lenny is still the default. Edit "common/Makefile.common" to select Squeeze.
- Pin 2.10 now required.
- Version support. Graphite prints out version header in sim.out.
- Better support for multiprocess simulations.
- Miscellaneous bug fixes.