Skip to content

GEOPM 1.1.0

Compare
Choose a tag to compare
@cmcantalupo cmcantalupo released this 11 Nov 19:24
· 4535 commits to dev since this release
  • Tue Nov 5 2019 Diana Guttman diana.r.guttman@intel.com v1.1.0
  • Release overview:
    • Support for Python 3.6 has been added.
    • Support for Python 2.7 continues but will be removed in a future release.
    • New features targeting integration with resource managers.
    • Enhancements to EnergyEfficientAgent.
    • Improved support for automatic OpenMP region detection.
    • Support for launching with OpenMPI.
    • Bug fixes, new and updated tests, and updates to documentation.
  • New features:
    • GEOPM environment variables can now be initialized from a JSON file.
    • Add geopm_agent_enforce_policy() function and Agent::enforce_policy() to public interface.
    • Add tracing for the profile table log with GEOPM_TRACE_PROFILE.
    • Add REGION_COUNT signal to get number times a region has been seen.
    • Add REGION_COUNT signal to default trace columns.
    • Add python wrappers for geopm_pio_c, geopm_topo_c, geopm_error_c, and geopm_agent_c interfaces.
    • Add format_function() method to IOGroups to get a formatting function from a signal name.
    • Add IOGroup for Compute Node Linux PM counters.
    • Allow the FrequencyMapAgent to come from the agent's policy rather than the deprecated environment variable.
    • Add launcher for OpenMPI.
  • New beta features:
    • Add geopmconvertreport script to convert report file into yaml and json.
    • Add a new error type for data store errors.
    • Add PolicyStore class to map agents and profiles to policies.
    • Introduce new Endpoint API, which replaces and extends the ManagerIO.
    • Implement geopm_endpoint_c API.
  • Modified implementations and interfaces:
    • Add CSV class to support CSV files created by GEOPM.
    • Modify Tracer and ProfileTracer to use the CSV class.
    • Add trace_formats() method to Agents.
    • Change freq_sweep analysis to use system max frequency for default max.
    • Move geopmpy package to 'production' status.
    • Minimize set of functions in Environment C interface.
    • Change Environment class variable names for better readability.
    • Update FrequencyMapAgent to use Environment class for its environment variable.
    • Add TEMPERATURE_* signals to list shown by geopmread.
    • Change REGION_RUNTIME signal reflect time of outer region only.
    • Add MSR turbo ratio limit for KNL.
    • Use max turbo ratio limit for platform max frequency.
    • Remove ability to write turbo ratio limit.
    • Add MPI_Barrier before entering all2all model region.
    • Increase problem size of FFT to D class.
    • Add IMPI support to tutorials.
    • Add feature to geopmagent and Agent interface where partial policies will be completed with NANs.
    • Add SLURM -bootstrap option for IMPI.
    • Add geopm_time_to_string() to convert a time structure into a string.
    • Add write_file() helper function.
    • Add value of policy to report, or DYNAMIC when policy comes from an Endpoint.
    • Separate Agent creation time from init() in Controller.
    • Add DebugIOGroup for extending trace with internal Agent values.
    • Add pthread mutex to beginning of SharedMemory regions, with get_scoped_lock() as the only method to lock the mutex.
    • Remove pthread mutex from ManagerIO struct.
    • Use git ls-tree to generate the MANIFEST in any git repo.
    • Remove m_request_s from PlatformIO public interface.
    • Change RPM to build libgeopmpolicy only and remove check step.
    • Add get_hostnames() method to Controller.
    • Add unlink() method to SharedMemory.
    • Update VERSION with each call to autogen.sh.
    • Do not markup anything in geopmbench if all regions are suffixed with '-unmarked'.
    • Update OMPT interface to newest standard.
    • Use libdl and libelf to map instruction address to symbol name.
    • Remove hard requirement for hosts file usage in tutorials.
    • Remove MacOS portability.
    • Remove signal handling logic from Controller.
    • Change board power min/max/tdp to use sum aggregation.
    • Change power cap policy of PowerGovernorAgent and PowerBalancerAgent to POWER_PACKAGE_LIMIT_TOTAL.
    • Change "mpi-time" in report to "network-time" and change time to include all network time.
    • Rename EPOCH_RUNTIME_MPI signal to EPOCH_RUNTIME_NETWORK.
    • Move Environment class definition to header.
    • Split geopm_pmpi.c into C/C++ parts.
    • Clean up build and run scripts for tutorials.
    • Remove region entry and exit lines from the trace by default; they can be added with --enable-bloat.
  • Improved error messages and warnings:
    • Make prefix of runtime warning strings consistently start with "Warning: ".
    • Improve error message when msr driver can't be loaded.
    • Print a proper message on failure to launch lscpu job.
    • Add more verbose geopm plugin load failure warning.
    • Add more detailed description to geopm_error_message() based on last exception thrown.
    • Change throw to warning for PowerBalancerAgent running on a single node.
    • Fix error message when MSR read fails.
  • Extensive changes to EnergyEfficientAgent algorithm:
    • Change EE Agent to learn separately for each control domain.
    • Add max filtering to EnergyEfficientRegion.
    • Use sticker when passing NaN in the policy.
    • Add PERF_MARGIN as a policy for EnergyEfficientAgent.
    • Do not set frequency for regions shorter than 50 ms or unmarked.
    • Have EE Agent always use min frequency for network regions.
    • Update EE agent to use region count to detect adjacent regions with same hash.
    • Add separate max frequency to use for static policy.
    • Bug fixes and refactoring in EnergyEfficientAgent.
  • Updates to integration tests:
    • Increase iterations for EnergyEfficientAgent test.
    • Decrease margin in test for geopm python wrapper measuring time.
    • Add a integration test checking that chosen frequencies increase monotonically with CPU-bound time in regions.
    • Update integration tests to use new trace file format.
    • Add imbalance to power_balancer integration test.
    • Refactor report mock functions in integration tests.
    • Move integration test helpers into util.py.
    • Add integration test for the epoch data in report.
    • Add msr save and restore calls to test launcher.
  • Updates to unit tests:
    • Add unit tests for EnergyEfficientAgent.
    • Cleanup environment variables in unit tests.
    • Add unit tests for the geopmpy.io module.
    • Add unit tests for the geopmpy.launcher module.
    • Make profile tests work with different task sets.
    • Fix TestAffinity to check for OMP_NUM_THREADS in test setup.
    • Fix ExceptionTest to account for extra char in error message.
  • Updates to documentation:
    • Add Daniel Wilson to the AUTHORS file.
    • Change CONTRIBUTING instructions on how to get version.
    • Add version to geopm man pages.
    • Update man pages and README to describe Environment changes and integration with resource managers.
    • Fix PlatformTopo C++ man page to match new interfaces.
    • Add section to README about user environment for non-standard install.
    • Modify frequency_map man page to use floating point frequencies.
    • Rename geopm_pio_c man page to show its section number.
    • Add man page for Endpoint class.
    • Update endpoint_c man page.
    • Remove references to uninstalled man pages from geopm.7.
    • Remove specific list of available launchers from geopm.7.
    • Add documentation to README for Ubuntu support.
    • Add example for systems programmers using PlatformIO.
    • Fix typos in documentation.
  • Bug fixes:
    • Fix paths for building tutorial from module environment.
    • Fix Tracer handling of # signals from environment.
    • Fix Tracer handling of region hash and hint integers.
    • Fix a bug where regions with the same name as the profile did not appear in the report.
    • Fix trace file cache loading print in io.py.
    • Rename and fix analysis for EE and frequency map agents.
    • Fix a bug where LD_PRELOAD was always set.
    • Update geopmplotter to sue agents and cosmetic fixes to plots.
    • Fix geopm::string_split() so it works with multi-character delimiters.
    • Fix build when using --disable-openmp.
    • Fix build when using --disable-mpi.
    • Fix a bug where launcher did not use srun reservation for geopmread cache.
    • Fix placement of verbose flag for geopmbench.
    • Fix epoch reporting when there are no regions.
    • Fix generation of report hdf5 cache.
    • Fix date generation in geopm_time.h.
    • Only overwrite roff pages with ronn if the roff page is missing.
    • Avoid a buffer overrun when copying cpusets.
    • Check if MPI has been finalized before freeing the comm.
    • Fix stderr piping in autogen.sh.
    • Fix build errors from gcc8.
    • Fixes to allow installed headers to be used out of source.
    • Fix a bug where tutorial tarball was not built when docs are disabled.
    • Remove DRAM power from PowerGovernorAgent samples.
    • Avoid loss of precision when converting policies to json strings.
    • Do not use GEOPM_REGION_HASH_INVALID in Agent implementations.
    • Remove '0x' from IMPI affinity mask.