Multi-purpose alignment library on the Graphcore Intelligent Processing Unit (IPU).
This project contains the ipuma-library which implements implementations of
the Smith-Waterman alignment algorithm for the IPU.
The following software are required for building and running the alignment libraries:
poplar-sdk >= 2.3.0
cmake >= 3.18.4
gcc >= 7.5.0
For some python scripts used in extracting log files numpy and pandas are required. These are not required for running the alignment binaries themselves!
Preferably execute the following commands in a venv or a conda environment:
$ pip install numpy==1.22.2 pandas==1.4.1$ mkdir -p build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release -GNinja ..
$ ninjaCorrectness tests are contained in ipuma-tests.
$ build/test/ipuma-testsArtificial performance test scenarios on generated data are contained in
ipuma-perf. These do not fail, but should present GCUPS results that can be
compared.
$ build/test/ipuma-perfThe ipusw binary can be used to perform benchmark measurements on specified
datasets on the IPU.
The cpusw binary is a wrapper around
StripedSmithWaterman.
The ./scripts/run_ipusw_benchmarks_mult.sh script will execute IPU-based
alignment benchmarks.
The script expects alignment benchmark datasets to be located in ./download
and will output log files to ./output.
The script optionally accepts a name for the execution, otherwise
ipuswrun will be used:
$ ./scripts/run_ipusw_benchmarks_mult.sh [NAME]The StripedSmithWaterman CPU benchmark results can be obtained by the
following command, the parameter is optional and defaults to cpuswrun:
$ ./scripts/run_cpusw.sh [NAME]After executing either script, a folder containing logs will be created inside
the ./output/* directory. These logs can be parsed into CSV format using the
following script:
$ ./scripts/merge_results_rep.sh ./output/<NAME> out.csvseqan uses an existing align_bench
wrapper. The following commands will automatically build and execute the
experiments for seqan:
$ ./scripts/run_seqan.shThis will pull and build seqan inside the scripts/seqan folders and output
result logs into scripts/seqan/results.
The benchmark results in a table format will be output to stdout.
