benblack769 / SD3-implementation

Implementation of a efficient dynamic parallelism detector for my senior thesis
1 stars 0 forks source link

Dynamic Data dependence analysis

This package attempts to efficiently find memory dependencies dynamically based on the pairwise method and this paper: SD3: A Scalable Approach to Dynamic Data-Dependence Profiling

Different versions

There are different versions of the parallelism detection that are implemented in different branches of this repository:

Building the code

The code is built with CMake.

A simple CMake build puts the binaries in the bin directory. For example, using make on linux:

cmake . -DCMAKE_BUILD_TYPE=Release
make

Running tests

Main regression/end-to-end test

In test-scripts, there are two important files.

So to run this test completely, do

cd test-scripts
python3 conflicts.py
python3 test_runner.py

and then check

git status

to make sure that the output files that were generated by test_runner.py were the same as they were in git.

Unit tests

The unit_test executable is a simple custom unit test framework that gives error messages about unit tests that do not pass.

Other tests

Other tests, not really appropriate for unit testing are the stride_detector_test and the merge_test.

These take input files that are a list of memory accesses, and spit out how they processed them. The files in single_pc_test_data are for this. Also, the files test-data/OldTestInputs are somewhat appropriate for input.

Changes from SD3

Since I had much less time than the original SD3 developers, I changed a number of the basic data structures to make implementation easier, while keeping asymptotic efficiency.

The major changes are: