Fast and Accurate Performance Analysis of Synchronization
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
architecture-config
external
pthread-trace
simsync-cl
simsync
.clang-format
.gitignore
CMakeLists.txt
LICENSE
README.adoc

README.adoc

PMAM 2018 Reference Implementation

This repository is a reference implementation of the model presented at The Ninth International Workshop on Programming Models and Applications for Multicores and Manycores (PMAM 2018).

Trace Generation

A Pin tool for generating synchronization traces can be found in the pthread-trace directory. The Pin tool has been tested using Pin version 3. You should also be able to use Pin version 2 with some modifications. To compile the tool, make sure you have defined the PIN_ROOT environment variable to point to the root directory of your Pin installation. To use the tool, run Pin with the compiled library (e.g., pthread-trace.so) and a multithreaded application that uses the pthread library.

Generating Performance Estimates

The core library for generating estimates can be found in the simsync directory. You can control the library via the command line using the simsync-cl binary. Both the library and the command line executable are compiled using CMake.

CMake can configure the project for different build systems and IDEs (type cmake --help for a list of generators available for your platform). We recommend you create a build directory before invoking CMake to configure the project (cmake -B). For example, we can perform the configuration step from the project root directory:

cmake -H. -Bcmake-build-release -DCMAKE_BUILD_TYPE=Release
cmake -H. -Bcmake-build-debug -DCMAKE_BUILD_TYPE=Debug

After the configuration step, you can ask CMake to build the project.

cmake --build cmake-build-release/ --target all
cmake --build cmake-build-debug/ --target all

Once compiled, you will find the simsync-cl executable in a directory of the same name. Use the --help argument for information on the command line interface. Architecture configurations used in the publication can be found in the architecture-config directory for different benchmarks and number of threads/cores.