Team number: xohw20_405
Project name: X-drop on FPGA
Version of uploaded archive:1
University name: Politecnico di Milano
Supervisor name: Marco Domenico Santambrogio
Supervisor e-mail: email@example.com
Participant: Alberto Zeni
Participant: Guido Walter Di Donato
Participant: Francesco Peverelli
Board used: Xilinx Alveo U280
Vitis Version: 2019.2
The seqan folder contains the Seqan library
The report of the development of PALADIN is in report/
Source files are in the src/ folder:
- xdrop.cpp contains the kernel
- host.cpp contains the host
Pairwise sequence alignment is one of the most computationally intensive kernels in genomic data analysis, accounting for more than 90% of the run time for key bioinformatics applications. This method is particularly expensive for third-generation sequences due to the high computational expense of analyzing these long read lengths (1Kb-1Mb). Given the quadratic overhead of exact pairwise algorithms such as Smith-Waterman, for long alignments the community primarily relies on approximate algorithms that search only for high-quality alignments and stop early when one is not found. In this work, we present the first FPGA implementation of the popular X-drop alignment algorithm, named PALADIN.
The repo already includes a host and a bitstream for the Alveo U280. Before executing PALADIN be sure so source XRT.
Before executing PALADIN be sure so source XRT and Vitis. PALADIN requires Vitis 2019.2 and C++14. To build PALADIN simply type:
make all TARGET=hw
PALADIN has been written to run on the Xilinx Alveo U280. PALADIN will an executable called host and a bitstream file for the Alveo U280 called xdrop.xclbin.
To check everything works properly type:
./host inputs/example.txt 17 21 build_dir.hw.xilinx_u280_xdma_201920_3/xdrop.xclbin
This command executes PALADIN on our example dataset with a k-mer length of 17, an X-drop value of 21. If everything executes correctly you can start using PALADIN with any input, and any X-drop.
The command line inputs are:
./host [input] [k-mer-length] [X-drop] [bitstream]
The input format for this demo is:
[seqV] [posV] [seqH] [posH] [strand]
Each line of the input contains a pair of sequences to align: the query sequence (seqV), the starting position of the seed on the query sequence (posV), the target sequence (seqH), the starting position of the seed on the target sequence (posH), and the relative strand ("c" if on opposite strands, "n" otherwise). Tab separated.