Skip to content

High-Performance FPGA implementation of the X-drop algorithm

License

Notifications You must be signed in to change notification settings

albertozeni/XDropXOHW-Public

Repository files navigation

Project Information

Team number: xohw20_405
Project name: X-drop on FPGA
Date: 30/06/2020
Version of uploaded archive:1

University name: Politecnico di Milano
Supervisor name: Marco Domenico Santambrogio
Supervisor e-mail: marco.santambrogio@polimi.it
Participant: Alberto Zeni
Email: alberto.zeni@mail.polimi.it
Participant: Guido Walter Di Donato
Email: guidowalter.didonato@mail.polimi.it
Participant: Francesco Peverelli
Email: francesco1.peverelli@mail.polimi.it

Board used: Xilinx Alveo U280
Vitis Version: 2019.2

Project Organization

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

Project Description

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.

Usage

The repo already includes a host and a bitstream for the Alveo U280. Before executing PALADIN be sure so source XRT.

Compilation

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.

Demo

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.

Link to YouTube Video

https://www.youtube.com/watch?v=7Bn-XBZIsmA&t=4s

About

High-Performance FPGA implementation of the X-drop algorithm

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages