|
|
|
|
Changelog for geopm-0.5.1-1.1.x86_64.rpm :
Sat Jun 23 14:00:00 2018 Brad Geltz v0.5.1 - GEOPM beta hotfix release! - Introduce the PowerGovernorAgent. This agent is implemented and fully featured. - Restoring the MSR values at the end of a run is now best effort since the system whitelist may prevent the write from being allowed. - Allow min/max frequencies to be specified in the EnergyEfficientAgent\'s policy. - Fix geopmread usages for tutorial. - Fix MSR overflow logic, performance counter initialization, and MSR encode/decode functions. - Fix integration tests for geopmwrite use cases.
Wed May 30 14:00:00 2018 Christopher M. Cantalupo v0.5.0 - GEOPM beta release! - Community updates: - New landing page - New Slack channel - New Code of Conduct - New pull request template - Contributing instructions updated with details of gerrit review process. - Modified implementations and interfaces: - Major refactor of the controller and plugin architecture is provided as an optional new code path. - Most of the changes made to the implementation for this release modify the new code path. - The old code path is still available for users as long as the controller is run without the GEOPM_AGENT environment variable set. - The new code path will be active if the user selects an agent by name with the GEOPM_AGENT environment variable when launching the controller. - The old code path is maintained in the current Controller object along with the the Decider / Platform / PlatformImp plugins. - The new code path is maintained in a replacement for the Controller which has been temporarily named the Kontroller. - The Kontroller will be renamed the Controller after this release, and the old code path will no longer be available. - Similar to the Kontroller/Controller replacement, the KprofileIOGroup KprofileIOSample and KruntimeRegulator are temporary replacements for their non-K counterparts and will be renamed. - The beta release enables a new set of plugin interfaces named the IOGroup, Agent, and Comm. - It is through the IOGroup, Agent and Comm plugins that the GEOPM runtime can be extended. - The Decider / Platform / PlatformImp plugin extensions are deprecated and will be removed after this release. - The IOGroup plugin enables a user to add new signal and control mechanisms for an Agent to read and write. - The Agent plugin enables a user to add new monitor and control algorithms to the GEOPM runtime. - MPI use by the GEOPM runtime which is not linked by application has been completely encapsulated in the Comm object. - The tutorial has been extended with two new directories: tutorial/agent and tutorial/iogroup. - The tutorial/iogroup directory documents how to write an IOGroup plugin. - The tutorial/agent directory documents how to write an Agent plugin. - The interface to the resource manager has been made much more flexible for supporting the new Agent interfaces. - The resource manager interface is documented in the geopm_agent_c(3) and geopm_endpoint_c(3) man pages. - Additionally command line tools have been proposed and partially implemented to support the interfaces documented in those man pages. - The geopm_agent_c(3) APIs and geopmagent(1) CLI has software support. - The endpoint interfaces are a work in progress that has not yet been integrated into the mainline source. - The PlatformIO object provides the interface to the IOGroups. - The PlatformIO C++ object will soon have an associated C interface documented as geopm_platformio_c(3). - The geopmread and geopmwrite provide a CLI to the PlatformIO features. - Introducing the MSRIOGroup which provides an implementation of the IOGroup for MSRs. - Introducing the TimeIOGroup which provides an IOGroup for the time signal. - Introducing the CpuinfoIOGroup which provides data from /proc/cpuinfo as signals. - Introducing the ProfileIOGroup which provides profile data collected from the main compute application through the geopm_prof_c(3) APIs. - The release includes three new installed binaries: geopmread, geopmwrite, and geopmagent. - Each of these command line interfaces is documented with a man page and there is a man page for a future command line tool called geopmendpoint. - Deprecated geopm_policy_ *() interfaces that have been replaced with the geopm_agent_ *() and geopm_endpoint_ *() APIs. - Introducing the first three Agent implementations: MonitorAgent, PowerBalancerAgent, and EnergyEfficientAgent. - Introducing PlatformTopo, replacement for PlatformTopology. - Introducing DefaultProfile singleton which supports geopm_prof_c(3) APIs for profiling. - Added documentation for monitor, energy_efficient, and power_balancer Agents, but the implementation is not currently aligned. - The monitor agent is implemented and fully featured. - The energy_efficient agent will soon be extended to match the man page, and currently use of the network is not enabled. - The existing implementation of the energy_efficient agent does currently provide similar functionality to the efficient_freq Decider. - The power_balancer agent is a work in progress that is not well aligned with the man page, but will be feature complete soon. - Reports and traces generated by Agent code path are designed to be backward compatible with reports and traces generated with the Decider code path. - New environment variables documented in geopm(7): GEOPM_ENDPOINT, GEOPM_AGENT, GEOPM_TRACE_SIGNALS, and GEOPM_DISABLE_HYPERTHREADS. - Remove GEOPM_ERROR_AFFINITY_IGNORE environment variable, no longer required for testing. - New plugin registration mechanism has been put in place and new factory has been implemented. - Replace independent factories with single templated class the PluginFactory. - No longer register a plugin using a half instantiated object. - Removed call to dlsym, and plugins now use __attribute__((constructor)) to specify a callback target used when plugin is loaded. - In this callback the plugin should register with its respective factory. - Each plugin type has a make_plugin() static method that creates the plugin object and returns a pointer to the base class. - The make_plugin() function pointer is what is registered with the factory. - Extend the PluginFactory to require a the registration of a dictionary (map) to enable queries of plugin capabilities. - Use stricter criterion for selecting plugin files to load, name must be of the form libgeopmpi *.so.0.0.0 where 0.0.0 is the GEOPM ABI version. - Moved geopm_plugin_description_s definition to geopm.h. - Add a configure option to enable use of the msr-safe ioctl interface for writing with PlatformIO. - The msr-safe ioctl interface should not be used for writing unless the system has an msr-safe installation that has fixed . - Added APIs for manipulating hint bits in region id hash. - Many changes were made to modernize the use of C++. - Change protected members of all classes to private where possible. - Replace all raw pointer usage with C++11 smart pointers if possible. - Use default keyword for constructors and destructors where appropriate. - Use delete keyword rather than throw to avoid copy constructor. - Add override keyword to derived classes. - Use forward declaration of classes rather than include one header inside of another. - Add and integrate make_unique implementation for C++11. - Confirmed const correctness for all class methods. - Add public interface to register IOGroups with PlatformIO which enables IOGroups to be created at runtime. - Standardize the IOGroup signal and control names so that they are prefixed by the IOGroup name and two colons. - Agents should generally use high level aliases rather than these low level signals and controls. - Introduce functions for converting between signals and bit-fields to allow for PlatformIO to provide full 64 bit integer signals like the region ID. - Add overflow function type to MSR class. - Change frequency APIs to use Hz to enforce uniform use of SI units. - Use instruction offset in OMPT derived region name; this resolves a name ambiguity when more than one OpenMP region is discovered within the same function. - Use gmock archive uploaded to the geopm organization on github. - PlatformTopo is built on top of lscpu and does not require hwloc. - Throw on GlobalPolicy misconfiguration earlier in the runtime execution. - Rename SimpleFreqDecider to EfficientFreqDecider which will be replaced by EnergyEfficientAgent. - Update to efficient Decider and Agent related environment variables according to above name changes. - The json-c library is no longer a dependency, all references have been removed. - Now using the json11 library which is distributed in the \"contrib\" sub-directory. - Updated features: - Enable Agent to augment report and trace. - Enable user to augment trace through environment variable GEOPM_TRACE_SIGNALS in new code path. - Changes to PlatformIO to support non-CPU domains. - Added MSR save/restore functionality to PlatformIO save/reset interfaces. - Allow loading PlatformIO when some IOGroups fail to load. - Add aggregation functions to PlatformIO to encode how to combine signals. - Add PlatformTopo methods for converting domain to string and vice-versa. - Add signal_names() and control_names() to PlatformIO and IOGroup. - Add Skylake server (SKX) as a supported platform. - Add Haswell and SandyBridge MSRs to PlatformIO interface. - OMPT report region names include instruction offset, now two OpenMP regions within the same function can be distinguished. - Add region runtime as default trace column. - Simpler column names in trace; print some columns using old names. - Change region ID to hex in report and trace. - Order regions in report by runtime. - Add application total ignore time to report. - Replace tabs with spaces for report formatting. - Enable PlatformIO to support Epoch based signals. - Add power signals to PlatformIO using derivative calculation previously done in Region object. - Add PlatformIO aliases for region ID, progress, frequency and energy. - Add CombinedSignal class which is used to combine signals from different IOGroups. - Allow for a user provided number of experiment iterations (loops) to perform for each geopmanalysis type - Enable geopmanalysis to provide more detailed information about the results - Allow turbo to be skipped by geopmanalysis when determining the best per-region frequencies. - Updates to geopmanalysis python script to bypass trace parsing if requested and in debug plot ignore check for multiple profile names. - Use hyphen instead of underscore in geopmanalysis options for consistency with other interfaces. - Don\'t require -n and -N with geopmanalysis when skipping launch. - Pass output_dir through to plotter when using geopmanalysis. - Changes to analysis.py for SC17 data: multiply energy percent by 100, have frequency sweep plots use frequencies from profile name. - Add geopmanalysis option to specify controller launch method. - Updated and extended integration tests: - Integration tests validated with the GEOPM_AGENT set to test new code path. - A few problems with the new code path exposed by integration tests have been added to github issues. - A few changes to support integration tests with new code path have been integrated. - Change io.py and integration tests: Allow hex numbers for region ID in report, skip extra lines in report. - Remove Platform plugin registration. - Update EfficientFreqDecider to use new runtime metric for performance. - Update EfficientFreqDecider to use PlatformIO directly and remove method from Policy object for adjusting frequency. - Updated unit tests: - Many unit tests have been added to accompany the new code path which has many new classes. - The new classes were specifically designed to enable unit testing poorly covered code that it refactors. - Refactor Profile constructor into testable functions. - Add unit tests for Profile class. - Simple profile class in test directory for testing and debug: enables profiling of the GEOPM runtime itself. - More detailed checks of messages in unit tests when exceptions are thrown. - Fix test-license to assert that files in MANIFEST.EXEMPT exist. - Remove TestPlugin code that is not used by tests. - Add make check target to tutorial build. - Bug fixes: - Update GEOPM runtime C APIs to print to standard error instead of having the controller suppress error messages. - Handle exceptions that occur during app/controller handshake. - Enable timeout rather than hang if Controller or application fail during execution. - Fix for package-scoped MSRs that will write to all CPUs in a package rather than just one. - Fix HSX and SKX frequency control MSRs to core domain. - Fix issue when running on systems with offline CPUs. - Do not report a completed send if policy or sample contains a NAN. - Fix lscpu parsing for offline CPUs. - Exclude regions with 0 count from report, except unmarked region, which is always 0. - Add verbose error message when PluginFactory::dictionary() is called with plugin name that has not been registered. - Fix get_alloc_nodes for slurm in geopmpy launcher - Fix for test_power_consumption to checks the current platform cpuid to decide power budget. - Fix geopmpy.launcher for Intel\'s mpiexec: does not accept -- as a separator for positional arguments. - Fix for when GEOPM_PLUGIN_PATH contains multiple paths. - Fix tutorial tarball so that it will build out of place. - Fix shared memory issues during start-up when launching the Controller as a separate application. - Remove erroneous double split of the Controller\'s comm; the ppn1 comm is already passed into the constructor. - Fix test to use in-memory file system to avoid adding missing msync() calls. - Fix resource leak in TreeCommunicator constructor. - Fix tracing capability with geopmanalysis. - Leave -- separator in list of arguments to avoid parsing command line arguments intended for application as launcher arguments.
Fri Jan 12 13:00:00 2018 Christopher M. Cantalupo v0.4.0 - Modified implementations and interfaces: - Updated algorithm for choosing CPU affinity in the launcher: fill application CPUs from back to front, and never share physical cores between MPI ranks. - Created new abstraction for interfacing with MSRs and more broadly for abstracting hardware IO (PlatformIO, MSRIO, and MSR classes). - Application region hints are now properly exposed to the decider. - Added geopmanalysis executable to the geopmpy package; this executable runs applications and performs analysis of power and performance based on GEOPM report and trace data. - Added geopmbench to the installed binaries; this is simply an installed version of the tutorial_6 executable. - Added GEOPM_RM environment variable and --geopm-rm command line option to select geopmpy.launcher\'s back end resource manager. - Updated man pages to include geopmanalysis and geopmbench. - Removed handling of SIGCHLD signal in GEOPM runtime (commonly raised in non-error conditions when using popen(3)). - Launcher will guess correct number of OpenMP threads if user has not specified. - Added warning message at start up if report and trace files will not be created due to permissions issues. - Added better error handling to tutorial sources. - Added support for geopmctl to be run as a different user than application. - Added support for user provided shmkey\'s that do not begin with \'/\'. - Added error checking in launcher user requests more ranks per node than there are cores per node. - Added more robust error checking for command line issues in launcher. - Added command line option to launcher to exclude use of hyperthreads: --geopm-disable-hyperthreads. - If a plugin fails at registration time, do not bring down the controller; a warning is printed if debug is enabled. - Remove -s parameter from geopmctl CLI (was being ignored). - Encapsulated use of MPI by GEOPM inside of a class abstraction (IComm), but controller has not been modified to use the new class due to deadlock bug. - Encapsulated in a class the handshake interface between the controller and the application across shared memory. - General clean up of the geompy.plotter implementation. - Added more error checking in Controller. - Some fixes for issues exposed by static analysis. - Updated features: - Added new decider called \"simple_freq\" that adjusts CPU frequency to save energy with a small impact to performance; name will likely change to \"efficient_freq\" in the future. - Added region runtime reporting to traces and Region objects based on the average execution time of a region by all of the ranks on a node. - Added a method to the Region object to give access to the telemetry time stamps to the decider. - Added online learning approach to energy efficient frequency decider. - Added support to geopmpy.launcher for launching with Intel(R) MPI\'s mpiexec. - Added option to plotter to use all samples or just epoch samples. - Modified the tutorials to enable use of the geopmpy launcher. - Improved tutorial Makefile to allow user override of GNU Make standard variables. - Added an RPM spec file for use with the OpenHPC distribution. - Updated and extended integration tests: - Moved Controller death test from the unit tests to the integration tests. - Added integration tests for pthread an application launch of the controller. - Added an isolated hardware test for RAPL power limit functionality. - Updated documentation: both man pages and doxygen have been reviewed and cleaned up. - Updated unit tests: - Added unit test for SubsetOptionParser. - Reduced dependence of unit tests on MPI runtime. - Removed MPIProfileTest unit test which is covered by integration tests, and not really a unit test. - Removed unused MPIControllerTest. - Removed MVAPICH2 Fortran tests. - Bug fixes: - Fixed broken build in tutorials (tutorial_region.c). - Fixed faulty argument parsing by the geopmpy launcher. - Fixed error reporting when using geopmpy with python 3.x. - Fixed issues with affinity when launching the controller as a pthread. - Fixed issue in passing power budgets down a multi-level tree. - Fixed issue in platform choice when head node architecture differs from the compute nodes. - Fixed broken build if --disable-doc configuration option is passed. - Fixed decider setup code to correctly propagate power bounds down tree. - Fixed the way RAPL time window is set. - Fixed the use of cached data by geopmpy.plotter. - Fixed integration test issues related to systems with multiple cluster node partitions. - Fixed process CPU affinity implementation (don\'t use hwloc) and added unit tests for this. - Fixed potential overflow issue with error messages in PlatformImp.cpp. - Fixed race in SharedMemory test. - Fixed markup patch for MiniFE. - Fixed launcher when user explicitly requests OMP_NUM_THREADS=1. - Fixed MPIInterfaceTests so it uses only mocked MPI interfaces, and does not explicitly require MPI. - Fixed memory leaks in GlobalPolicy. - Fixed linking order of libgeopm and libmpi. - Fixed non-performance mode integration test launcher. - Fixed issue where libgeopmpolicy had false dependence on OMPT.cpp - Fixed rpm Makefile target to avoid the rpmbuild -t option to avoid trying to use the OpenHPC spec file. - Fixed issue where platform topology could be determined from nodes other than the ones that run the job. - Fixed Intel(R) MPI launcher\'s use of host files and the --ppn CLI. - Fixed incompatibility between MVAPICH2 affinity and srun affinity. - Fixed test_progress_exit integration test to account for extrapolation error. - Fixed integration test for MPI time accounting. - Fixed launcher problem when node is listed in multiple queues by sinfo. - Fixed and improved affinity assignment in corner cases. - Fixed use of sched_getcpu() for Mac OS X.
Mon Jun 19 14:00:00 2017 Christopher M. Cantalupo v0.3.0 - GEOPM alpha release! - Modified implementations and interfaces: - Added job launch wrapper script which simplifies GEOPM runtime launch. - Added plotting support for visual analysis of report and trace data. - Added python package: geopmpy for supporting python infrastructure (job launch/plotting). - Added support for OMPT integration with the OpenMP runtime to mark GEOPM region entry and exit. - Added support for PMPI interface use in fortran applications enabling full support for fortran applications. - Added support to profile individual MPI functions as distinct regions. - Added support for transmission of region hints from the application to the controller. - Removed MPI_Pcontrol() interface for wrapping geopm_prof_ *() interfaces. - Removed geopm_ctl_spawn() interface. - Removed geopm_prof_disable() interface. - Changed to single aggregated report file per run instead of one per node. - Changed the geopm_tprof_ *() interfaces for thread progress. - Changed GEOPM classes to derive from a pure virtual interface base class. - Changed RPM build from RPM makefile in favor of geopm.spec.in/configure. - Changed the report and trace file format to have headers with meta-data. - Changed how the GEOPM_PROFILE environment variable is used: now dictates the profile name. - Changed geopm_ctl_c interface to no longer be application facing. - Changed requirement for power plane 0 controls: MSR no longer used/needed. - Changed all application hints from *POLICY_HINT * to *REGION_HINT *. - Changed build time wget/curl timeout periods to be longer. - Updated features: - Added support for per-cpu progress reporting from application. - Added hint to ignore time spent in a region such that ignored region times are subtracted from epoch times. - Added policy information to report. - Added user id to shmkey prefix to avoid permissions issues with stale keys. - Added man page for the geopmpy python package, geopmsrun and geopmaprun. - Added documentation for new features and interface changes. - Added cache file support to plotter. - Added interface to Region object to get per-cpu progress. - Added feature to track mpi runtime per region and print in the report. - Added feature to treat unmarked code as a real region. - Added support to resolve OMPT function address to a name in report. - Added support launcher keeping controller off of Linux CPU 0 if possible. - Added support for hyper-threads and multi socket system affinity support in launcher. - Added significant rework of Environment class to avoid security issues. - Added geopm_env_debug_attach() API. - Added region hint support in the ModelRegion wrappers for integration tests. - Added mvapich2 fortran90 test suite for testing GEOPM fortran interfaces. - Added autotools make check support for python unit tests. - Added standard PIP packaging of the geopmpy python package and posting on PYPI. - Added build infrastructure for support for LLVM OpenMP runtime with OMPT enabled. - Updated and extended integration tests: - Added support for using launcher wrapper within integration tests. - Added integration test for OMPT and MPI automatic region detection. - Added better support for the integration test looping script. - Added integration test job timeouts. - Added proper clean up of reports when a test passes. - Added setting of OMP_NUM_THREADS when running integration test. - Added test to compare the regions detected in the trace to the report. - Added integration test for MPI timing. - Updated unit tests: - Added unit tests for the Environment and SharedMemory classes. - Added python unit test for affinity settings in the launcher script. - Added support for edge cases in unit tests. - Bug fixes: - Fixed geopmpolicy to generate a whitelist file without requiring root. - Fixed critical security issues from static analysis. - Fixed missing symbol wrappers for init and finalize MPI fortran functions. - Fixed buffer overflow in MPI API test. - Fixed missing resize of m_level to the active number of levels per node in the TreeCommunicator. - Fixed issue where gfortran does not support bit shift operations of more that 32 bits. - Fixed shared memory cleanup at attach time. - Fixed issue where PlatformImp was initialized twice. - Fixed reporting of unmarked regions. - Fixed bugs in plotter. - Fixed const issue with MPI-2/MPI-3 interface definitions. - Fixed big-o scaling for all2all ModelRegion. - Fixed integration tests for unmarked regions. - Fixed test_progress_exit integration test. - Fixed standard directory specificiation in the spec file - Fixed test_sample_rate integration test. - Fixed check_run issue in scaling integration test. - Fixed integration tests and unit tests to handle the new node-combined report with header format. - Fixed launcher to check for srun affinity plugins before using them. - Fixed fortran configure test for MPI-3 support. - Fixed gfortran test to work with ubuntu. - Fixed mac compile issues. - Fixed fortran test makefile. - Fixed documentation to remove all references to geopmkey.
Wed Apr 5 14:00:00 2017 Christopher M. Cantalupo v0.2.3 - Fixed broken OBS build of version 0.2.2. - Fixed broken integration test for region timing.
Tue Apr 4 14:00:00 2017 Christopher M. Cantalupo v0.2.2 - Modified implementations and interfaces: - Added environment variable GEOPM_RUN_LONG_TESTS to enable long running integration tests. - Added environment variable GEOPM_KEEP_FILES to leave temporary files created by unit tests. - Added environment variable GTEST_XML_DIR to configure location of junit xml output from unit tests. - Changed documentation for geopm_epoch(): multiple calls per application is okay. - Changed geopm_epoch() calls in examples to reflect new usage. - Changed GoverningDecider to use much simpler and more effective algorithm. - Changed all TreeCommunicator MPI runtime communication to send binary data: do not use MPI data marshaling. - Changed all TreeCommunicator MPI runtime communication to one-sided MPI_Put() calls. - Changed tuning for parameters used by BalancingDecider. - Changed tuning for RAPL time window settings. - Changed TDP percentage to double throughout code. - Changed copyright dates for 2017. - Updated features: - Added least squared linear regression to calculate derivative. - Added compiler optimizations for Intel when using Intel toolchain. - Added environment control GEOPM_PROFILE_TIMEOUT of application timeout when waiting for controller. - Added warning message about stale keys. - Added throttling percentage to reports. - Added GEOPM runtime/memory/network overhead calculation and reporting. - Added --enable-overhead configure option for heavy-weight overhead measurement. - Added support for Cray MPI. - Added region IDs to report files. - Added junit xml output from unit tests. - Added energy hardware counter update sample triggering (reduce latency and jitter). - Added memory buffering for trace object, buffer size is hardcoded to 128 MB (should be configurable). - Added rpmbuild --nocheck support (check definition in spec file). - Added minimal documentation about CPU affinity requirements. - Added an example that will print affinity of MPI processes and OpenMP threads. - Added a stability fix for power calculation that will be made more robust. - Updated examples: - Added CoMD to examples. - Added QBOX to examples. - Added AMG to examples. - Updated and extended integration tests: - Added support for ALPS to integration tests. - Added support for resource manager detection. - Added support for integration test environment configuration options. - Added support for better signal handling to integration tests. - Added integration tests that use the trace feature. - Added integration tests for scaling compute node count. - Added integration tests for power cap enforcement by GoverningDecider. - Added integration tests that region entry is always preceded by region exit. - Added integration tests for sample rate frequency and jitter. - Added integration test for consistency between report and trace per region run-times. - Updated unit tests: - Added data driven unit test for derivative feature. - Added unit tests for PMPI wrappers. - Bug fixes: - Fixed documentation for installing from OBS yum and zypper repos. - Fixed some objects which were improperly using default copy constructor. - Fixed issue where unmarked regions (region 0) would report a progress value other than zero. - Fixed accounting issue when exiting a region and then immediately entering it again. - Fixed issue where RAPL values would be reset upon PlatformImp destruction (bad behavior for applications that change values and exit like geopmpolicy). - Fixed error handling in integration test script. - Fixed issue due to changing return type of json_object_array_length() for different versions of the json-c library. - Fixed issue preventing samples from being sent up tree beyond level 1. - Fixed issue with stale shared memory keys by deleting them at start up. - Fixed missing comm swap call in MPI_Gather() and MPI_Gatherv(): terminal error. - Fixed TreeCommunicator topology mapping logic. - Fixed issue with message vector sizing in TreeCommunicator. - Fixed missing ronn executable documentation build issue. - Fixed TreeCommunicator unit tests. - Fixed MPIInterface tests exposed by CLANG. - Fixed RAPL window MSR interface. - Fixed user control of GNU standard build variables when running make. - Fixed missing GEOPM annotation in some MPI wrappers in geopm_pmpi.c. - Fixed accounting for region entries. - Fixed issue by skipping TreeCommunicator tests on OpenMPI prior to 1.8.8 where one-sided comm was fixed.
Fri Nov 18 13:00:00 2016 Christopher M. Cantalupo v0.2.1 - Fix for accounting problem with nested MPI exits. - Fix to thread calculation in integration test to avoid hyper-threads. - Added script to loop over integration tests.
Fri Nov 11 13:00:00 2016 Christopher M. Cantalupo v0.2.0 - Renamed package to Global Extensible Open Power Manager. - Improved features, performance, documentation, testing and continuous integration. - Many bug fixes. - Modified CONTRIBUTING.md to reflect current work-flow. - Enabled Travis-CI on github repository. - Linked Travis-CI to Open SUSE Build Service for automation of multi-distro packaging and testing. - Removed explicit creation and destruction of geopm_prof_c objects from public interface. - Introduced new environment variable GEOPM_PROFILE to control profiling. - Introduced new environment variable GEOPM_DEBUG_ATTACH to enable attaching with a serial debugger. - Removed geopm_prof_print interface. - Removed \"-r\" command line option from geopmctl. - Made the power budget in the policy an average per-node budget instead of a whole job budget. - Modified report to include geopm version. - Added accounting in report for the number of entries into each region. - Added reporting of application totals. - MPI is no longer explicitly a region and MPI accounting is now part of application totals. - Refined how the geopm_prof_outer_sync() API works and renamed interface geopm_prof_epoch(). - The epoch start is no longer associated with application synchronization as geopm_prof_outer_sync was. - Epoch start marks the beginning of the outer most iterative algorithm of the application. - Added a --disable-doc configuration option for systems without ronn. - Changed default shmem key base from \"geopm_default\" to \"geopm-shm\". - Enabled GEOPM profiling without application modification through LD_PRELOAD. - Appended domain numbers to the trace file column headers. - Brought policy back to trace output. - Modified implementation to print warning if controller is not found by the Profile interface. - Enabled building in the SUSE environment. - Added an example that prints the geopm hash of any string. - Added support for Broadwell E Xeon and Knights Landing Xeon Phi platforms. - Added capability to save/restore MSR values before/after GEOPM runs. - Major improvements to signal handling and shutdown clean up. - Improvements to temporary file and shared memory management. - Added a suite of tutorials that steps through GEOPM features. - Posted video walk through of the GEOPM tutorials to YouTube. - Created the ideal \"model\" application for geopm shown in tutorial 6. - Added integration test infrastructure using python unittest and model application. - Added patches for GEOPM mark up to MiniFE and Nekbone benchmark source code. - Added support for batch MSR read through msr-safe ioctl interface. - Tuned decision making algorithms based on performance of several benchmarks. - Allowed GoverningDecider to \"unconverge.\" - Added separate throttling times for sampling and control. - Moved LockingHashTable template to a non-template implementation. - Added distinct entries in profile table for MPI and epoch events. - Switched to one sided communication (MPI_Put/MPI_Get) for passing samples up. - When a new policy is received at the leaf it is enforced immediately. - Modified implementation to unlink shared memory regions as soon as all users have attached. - Added an example which will check if geopm supports the current platform which is used to skip some tests. - Made check for supported platform more robust. - Removed all throw calls inside destructor methods. - Re-implemented application/controller handshake. - Moved default profile object into Singleton pattern. - Cleaned up factory registration pattern. - Added better error checking of user inputs. - Applied the write mask when writing to a MSR. - Abstracted the read_bandwidth signal in the PlatformImp classes. - Made PlatformImp objects abstract to signal topology. - Added death tests for the controller. - Removed use of MPI::Exception and all other MPI C++ constructs as they are deprecated. - Wrote an abstraction of the hwloc interface remove hwloc version specific implementation requirement. - Introduced XeonPlatformImp which Xeon platforms inherit from. - Proposed a class interface to abstract MPI usage by GEOPM\'s controller. - Fixed MSR read to mask off bits read from MSR beyond the overflow bit. - Fixed possible under/over power budget conditions. - Fixed a number of issues in report and trace output. - Fixed issue where hash table could overflow. - Fixed policy creation so that all the man page examples work correctly. - Fixed subtraction of MPI time from outer sync time. - Fixed accounting error in reported per region run-time. - Fixed msr write logic for multi-socket systems. - Fixed MSR save/restore. - Fixed usage of RAPL time window 1 and 2. - Fixed race condition: use MPI_Isend instead of MPI_Irsend. - Fixed RAPL interface logic. - Fixed geopm_time_add() to avoid overflowing nsec field. - Fixed frequency calculation in report. - Fixed the region entry count in report. - Fixed issues around MPI_Request usage in non-blocking MPI calls. - Fixed decider and accompanying logic. - Fixed issue related to sending new polices down when new decisions are made. - Fixed race condition in application/controller handshake. - Fixed shutdown logic in PMPI wrapper when controller is run as a pthread. - Fixed test executable so that non-matching test filters give an error. - Fixed bug in MSR restore from file related to overflow. - Fixed issue that occurs when using googlemock with gcc 6. - Fixed issues around incorrect use of PMPI wrappers. - Fixed a number of issues in the the PMPI wrappers. - Fixed PMPI wrappers to work with both the MPI-2 and MPI-3 standards. - Fixed missing dlclose() calls for dynamically opened shared objects. - Fixed issue related to launching the controller with pthread in PMPI wrapper. - Fixed multiple platform issues. - Fixed death test issue due to inconsistent SLURM exit status codes. - Fixed CPU indexing bug in PlatformImp derived classes. - Fixed typo in Environment.cpp which was breaking GEOPM_ERROR_AFFINITY_IGNORE environment variable. - Fixed the mask for getting frequency from IA32_PERF_STATUS. - Fixed broken download, switched to Fedora URL for downloading gmock 1.7.0.
Mon May 23 14:00:00 2016 Christopher M. Cantalupo v0.1.1 - Fixed race condition in geopm_comm_split_shared(). - Fixed geopmctl so that it works properly (error introduced with policy environment). - Fixed man page links and Makefile target. - Fixed automatic detection of Fortran MPI flags for compile and other build fixes. - Enable application marked with geopm_prof interface to run without controller. - Better consistency checking in global policy. - Enabled profile only use of geopm i.e. no power management (now the default). - Updated STATUS section in README. - Updated TODO list. - Converted plugin developers guide to LaTeX and included it in repository.
Mon May 9 14:00:00 2016 Christopher M. Cantalupo v0.1.0 - First geopm release with code complete runtime component. - Includes a wide range of bug fixes. - Introduced Fortran interface for application APIs. - Introduced globally scoped default profile object for geopm_prof_c interface. - Introduced application tracing capability. - Added NAS Fourier transform benchmark as an example. - Fixes for build system. - Fixes in the documentation. - Remove thread profiling \"helper APIs\" and replace with geopm_tprof_c interface. - Improvements in shutdown logic. - Shared memory key has default value and can be obtained from environment. - Explicit accounting for time spent in MPI calls through PMPI interface. - Enable nesting of MPI regions within user defined regions. - Remove geopm_prof_sample() interface. - Add some helper APIs for splitting MPI communicators. - Integrate with PMPI profiling interface to MPI. - Merges irregular application feedback with periodic hardware telemetry. - Moves some functionality between classes for better encapsulation. - Region information is no longer communicated between compute nodes. - Implemented plug-in selection through the Policy interface. - Handling of MSR counter overflow. - Implemented a basic decider for the leaf and the tree. - Refactor of Platform/PlatformImp implementation. - Updates to test infrastructure. - Added a synthetic benchmark with static imbalance injection.
Fri Dec 11 13:00:00 2015 Christopher M. Cantalupo v0.0.3 - Several bug fixes. - Update to user man pages. - Switch to ronn for man page generation (roff + html). - Major update to developer documentation with Doxygen. - Implemented passing of profile data from application to controller. - Implemented output of a summary profile report. - Implemented infrastructure for plug-in extensions. - Templatized CircularBuffer. - Extended tests, including addition of integration tests.
Fri Oct 16 14:00:00 2015 Christopher M. Cantalupo v0.0.2 - Initial release to . - Updates to man pages. - Support for static power modes. - Support for Platform abstraction. - Whitelist generation for MSR driver. - TreeCommunicator implementation to support hierarchy in MPI. - Build and test infrastructure (autotools, gtest, gmock).
Thu Oct 1 14:00:00 2015 Christopher M. Cantalupo v0.0.1 - Initial tag which includes initial draft of man pages only.
|
|
|