Awesome
Pair-HMM accelerator using CAPI SNAP & Apache Arrow
This repository consists of a hardware design for accelerating the pair-HMM forward algorithm using the posit number format.
Both the hardware description of the accelerator as well as a C++ software test case is provided.
Requirements
Clone the repository & Initialize submodules
git clone https://github.com/lvandam/pairhmm_posit_hdl_arrow
cd pairhmm_posit_hdl_arrow
git submodule update --init
CMake 3.3.1+
Available at https://cmake.org/download/, or perhaps through the OS package manager
Boost C++
For some accuracy measurements I am using the Boost C++ library (version 1.67, but perhaps later versions also work). A quick tutorial on how to install it can be found at https://www.boost.org/doc/libs/1_67_0/more/getting_started/unix-variants.html. Perhaps it is also available through the package manager.
Apache Arrow C++ library
The following instructions are extracted from https://github.com/apache/arrow/tree/master/cpp
Dependencies (for Ubuntu/Debian)
sudo apt-get install cmake libboost-dev libboost-filesystem-dev libboost-system-dev
Build
git clone https://github.com/apache/arrow.git arrow
git checkout f8cd36a # To ensure compatibility
cd arrow/cpp
mkdir release
cd release
cmake .. -DCMAKE_BUILD_TYPE=Release
make unittest
sudo make install
CAPI SNAP
git clone https://github.com/open-power/snap.git snap
git checkout 0313b46 # To ensure compatibility
Set the SNAP_ROOT
environment variable, i.e. by putting this in a .bashrc
file:
export SNAP_ROOT=<PATH_TO_SNAP_FOLDER>
Then
cd snap
make snap_config
make software
Fletcher Runtime Library
git clone https://github.com/lvandam/fletcher.git fletcher # Forked from repo by Johan Peltenburg (compatibility)
cd fletcher/runtime
mkdir build && cd build
cmake .. -DPLATFORM_SNAP=ON
make
sudo make install
Accelerator Driver Library
FPGA setup
sudo capi-flash-script.sh bitfiles/XXXX.bin
Usage
Build and run the example in sw/
.
Make sure to set the parameters in src/defines.hpp
according to the posit configuration used.
cd sw
mkdir -p build && cd build
cmake ..
make
./pairhmm <pairs> <X> <Y> <initial constant>
Reference
This content is developed as part of a research project at the Computer Engineering lab at Delft University of Technology. If any of this is of use to you, please include the following reference in your related work:
Laurens van Dam, Johan Peltenburg, Zaid Al-Ars, and H. Peter Hofstee. 2019. An Accelerator for Posit Arithmetic Targeting Posit Level 1 BLAS Routines and Pair-HMM. In Proceedings of the Conference for Next Generation Arithmetic 2019 (CoNGA’19). Association for Computing Machinery, New York, NY, USA, Article 5, 1–10. DOI:https://doi.org/10.1145/3316279.3316284