Implementation of a modified Prange that exploits a known error weight distribution.
For now the png package is probably needed as M4RI uses it internally. However, because nowhere on their site it is listed as a dependency, it is also possible that the package is only used when installed on the system. Furthermore OpenMP is needed.
sudo apt install autoconf automake make cmake libpng-dev libomp-devTo install OpenMP on MacOs, execute the following command:
brew install libompTo setup and build the project, start with:
git clone [email protected]:ChuTriel/TemplateISD.git
./setup.shsetup.sh is needed to setup M4RI for our use.
To build the project after it is sucessfully prepared, type the following commands and replace <target> with what you need:
mkdir build && cd build
cmake ..
make <target>Valid targets are:
| target | Description |
|---|---|
| main | Single-threaded prange (OpenMP is not required to be installed to build this target) |
| prange | Multi-threaded prange (Requires OpenMP to be installed) |
| dumer | Multi-threaded dumer (Requires OpenMP to be installed) |
| bench | Benchmark for prange and dumer |
For example, if you want to build and run the multi-threaded prange variant, the whole command chain looks like this:
mkdir build && cd build
cmake ..
make prange
./prangeNothing special to mention here.
./prange <nr_threads>You can optionally specify the number of threads by providing it as a cli argument. If no argument is provided then the maximum possible number of threads is chosen.
./dumer <nr_threads>You can optionally specify the number of threads by providing it as a cli argument. If no argument is provided then the maximum possible number of threads is chosen. The parallelization is performed permutation-wise for now. Perhaps nested threading where the birthday decoding is also parallelized will be enabled in the future (using a second cli argument).