Skip to content

Releases: tudasc/MetaCG

v0.7.1

07 Nov 08:56
Compare
Choose a tag to compare

MetaCG v0.7.1

Fixes

  • Fix CMake policy to work with CMake versions older than 3.24

MetaCG v0.7.0

15 Oct 15:12
Compare
Choose a tag to compare

MetaCG v0.7.0

MetaCG v0.7.0 brings these new features and fixes

MetaCG graph library

  • Fixes compilation errors with some gcc versions
  • Implements a detection mechanism for node hash collisions
  • Implements a new callgraph format version and accompanying reader and writer facilities
  • Removes unmaintained dot-graph reading facilities
  • Removes unmaintained call-graph statistics module
  • Reorganizes namespaces throughout the whole library
  • Streamlines usage of reader and writer facilities
  • Unifies the logging usage throughout the project

PGIS

  • Fixes an error in which PIRA could not complete any runs after the first one, if load imbalance was enabled in pgis due to an export error

Infrastructure

  • Improves the docker container build times
  • Improves the CMake setup to feature a default build configuration and better dependency handling
  • Removes module that was once used to convert phasar generated callgraphs into the mcg format

MetaCG v0.6.2

07 Feb 21:27
Compare
Choose a tag to compare

Changelog

Fixes

  • Fixes an issue which caused PIRA-related metadata not being serialized correctly again.

MetaCG v0.6.1

28 Dec 22:31
Compare
Choose a tag to compare

Changelog

Fixes

  • Issues when building MetaCG on certain RHEL systems

MetaCG v0.6.0

18 Oct 19:08
Compare
Choose a tag to compare

MetaCG v0.6.0 brings these new features and fixes

  • Improved CMake that allows to use the graph library via add_link_libraries
  • Utility tool to automatically generate a call graph via CMake File API
  • Simplified and updated CMake handling of dependencies
  • General code clean up

MetaCG Graph Library

  • Removes explicit edge class
  • Metadata is now registered automatically, simplifying the use of it
  • Metadata can be attached to edges (not serialized into the file)
  • Better multigraph managing API
  • Improved implementation for json generation in MCGWriter class
  • Ability to sort edges in generated dot output
  • Ability to attach arbitrary Metadata and query its key
  • Several fixes for potential null pointer accesses

CGCollector

  • Fixes to name generation

PGIS

  • Overhead-based heuristics to work within the PIRA automatic profiler

Infrastructure

  • Ability to run all integration tests concurrently

MetaCG v0.5.0

12 Jan 09:23
Compare
Choose a tag to compare

Changelog

Functionality / Implementation

  • Significant speed improvement in MetaCG building and querying the call-graph
  • Adds MetaCG logger utility (to fix potential segmentation faults)
  • Improves the handling of Ctors/Dtors significantly (differences in mangling of symbols with internal linkage between GCC and Clang may occur)
  • Implements new and much better dot I/O functionality in separate (service) class and namespace.
  • Adds new command line option semantics for dot export
  • Removes some outdated command line options
  • Adds experimental Alias Analysis for better handling of function pointers and for enabling the handling of cross TU Calls (off by default)
  • Remove reachability fields from CgNode and related refactoring
  • Changed ownership logic from shared to unique pointer
    • Callgraph-object is uniquely owned by MCGManager
    • Nodes and Edges are uniquely owned by Callgraph object
    • Access to these now works via raw pointer
  • Fully switch from the old JSON annotation mechanism to the MCGWriter
  • Deprecation of the setGraph method: PGIS_PIRA phases are now supposed to explicitly pass a call-graph if needed
  • Changed program logic to be more conservative when dealing with questionable inputs
    • Querying existence of Metadata does not implicitly add Metadata
  • [deprecated] Explicit modelling of edges, and transfer of graph-structure knowledge from node to call-graph

Fixes

  • Fixes the reading of call counts and runtime from the cube file
  • Fixes potential nullptr dereference and segmentation fault
  • Fixes bug causing the format two tests to check the result of the format one tests
  • Fixes potential CMake issue with modern linkers
  • Fixes a bug that causes uninstantiated virtual template function to be added to the callgraph, causing clang to crash in getAllManglings()
  • Fixes build with/without optional components

Infrastructure

  • Matrix builds for GCC in version 10 and 11, and LLVM versions (10, 14) and (13, 14).
  • Removes outdated jobs / tags
  • Adds a template with our CI defaults
  • Re-enables the podman based build in Ubuntu container

Versions

  • Support for Clang/LLVM 10, 13 and 14

MetaCG v0.4.0

05 Apr 13:19
Compare
Choose a tag to compare

Changelog

Functionality

  • MCGWriter to serialize the Callgraph into a MetaCG file.
  • MetaDataHandler required value function to serialize the MetaData for MCGWriter
  • Objects to model and consolidate file format information of MetaCG file format
  • MCGManager can handle multiple call-graphs at a time

Fixes

  • MCG file format version in CGMerge now read from first non-null file content
  • Building error caused by static assert: ambigious operator
  • Explicit list all required clang/llvm libraries as new versions of ld are stricter and don't link libraries just because a symbol in them is referenced.

Infrastructure

  • Use C++17 instead of 20 to prevent build errors with GCC 11.2
  • Improved library dependencies handling in CMake (especially for pre-installed libraries)
  • Better Extra-P integration in builds

Versions

  • Bumps nlohmann-json version to 3.10.5 (other versions may/should work too)

MetaCG v0.3.0

14 Feb 16:16
Compare
Choose a tag to compare

Changes

Features are user-facing, Fixes are both user-facing and developer-facing, Refactorings are developer-facing, CI are infrastructure related notes.

Features

  • Aggregation strategies for Extra-P performance models and analysis parameter config file (PIRA II, LIDe)
  • MetaCollectors for loop depth, conditional branches, (experimental) type of statements count, when type 2 metadata is enabled
  • Add new algorithms for static filtering based on loop depth, FPAndMemOps or conditional branches
  • Add options to select the algorithm for the cutoff selection
  • Adds citation file
  • Significant refactoring of MetaCG components (for details see below)

Fixes

  • Update ToolchainOptions to explicit link required libraries. New linker versions are more strict with linking not explicit declared dependencies
  • Update spdlog
  • Fix warnings reported by clang-tidy, especially unnecessary copies
  • Run tests in Debug configuration, so that asserts are enabled
  • Remove leftover headers
  • Update detection of python include directory
  • Disable wrong asserts
  • Updates MetaCG to correct release version
  • Working on issue w.r.t. recursion and adds test for recursive function
  • Potential temporary fix for non-terminating CGCollector on some target codes

Refactorings

  • Split graph components into their own library / namespace
  • Moved top-level MetaData to own file.
  • Moved MCGReader to graph lib && removed outdated code
  • New high-level interface for callgraph construction
  • Moved MetaData basic definitions to their own respective file in graph namespace
  • Moved graph library into separate componen
  • Prefer set/map over the unordered variants to make results consistent across different systems
  • External dependencies are now put into ${METACG_REPO}/extern by default
  • Applies the source formatter to all source code files (seems that CLion in my branch messed that up)
  • cmake-format style file to be used with cmake-format
  • Removed outdated CMake resources
  • Renamed CMake to better fit overall structure

CI

  • Added container step in Gitlab CI
  • Different stages won't work on different machines. Make sure you use the right tags.
  • Updated Gitlab CI yaml config to account for new project structure
  • Improves container setup to use pre-stored base image from registry
  • CI will fail if CMakeLists and other CMake-related files do not adhere to the formatting style file
  • Enables podman builds for all branches and runs PGIS unit tests in the container
  • Uses more modern CMake commands to build and install MetaCG

MetaCG v0.2.1

17 Mar 10:22
Compare
Choose a tag to compare

Changelog

CGCollector

Fixes non-termination issue in CGCollector for some cases
Fixes crashes for certain ways of recursion

PGIS

Fixes an error that prohibited PIRA I from producing any reasonable results.
Adds FindSynchronizationPoint mechanism to PGIS and its LI detection.
Makes the export of the CG as dot file a CLI switch in PGIS
Makes call-site instrumentation optional

MetaCG v0.2.0

17 Mar 10:18
Compare
Choose a tag to compare

Whole-program call-graph file format in json format.

Changelog

MetaCG

  • Introduces new file format, with a more unified interface for meta annotations
  • Adds a few other MetaInformation examples

CGCollector

  • Improves the handling of function pointers within a single translation unit

PGIS

  • Includes the load imbalance detection heuristics from Peter Arzt's Bachelor thesis
  • Refactorings to the Reader to handle both file formats