Skip to content

Reimplementation of NCBI BLAST with CUDA backend for faster retrieval

License

Notifications You must be signed in to change notification settings

Abhiram-kandiyana/CUDA-BLAST-2024

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CUDA-BLAST-2024

This repository is to compile NCBI BLAST with CUDA backend. The repo implements both k-mer filtering and Smith-Waterman Alignment processes.

CUDA-BLAST-2024 Installation

  • Follow the below steps to clone this repo:
git clone https://github.com/Abhiram-kandiyana/CUDA-BLAST-2024.git
cd CUDA-BLAST-2024

Dependency Installation

  • Install CUDA to your machine so you can compile the .cu files. Follow this guide for Linux and Windows.

Running CUDA-BLAST-2024

  1. The SRC directory has all the source code (C, CUDA). Move to the SRC directory
cd SRC
  1. It has both the CPU and GPU implementation of BLAST. The CPU implementation is not as fast the GPU implementation. If you are unfamiliar with CUDA, go through the CPU implementation first and then try to read through the GPU implementation.
  • To run the CPU (C) CODE:
    cd CPU_codes
    
    g++ -std=c++17 -o kmer_cpu_final kmer_cpu_final.cpp -pthread
    
    ./kmer_cpu_final
    
  • To run the GPU (CUDA) CODE:
    cd GPU_codes
    
    nvcc kmer_gpu_final.cu -o kmer_gpu_final
    
    ./kmer_gpu_final
    

Results

Method K-mer Length Duration (in seconds) Throughput (queries/sec)
Multithreaded CPU 15 10.014 49.930
CUDA-BLAST-2024 (Ours) 15 2.682 186.428
NCBI BLAST 15 11.000 43.478
Multithreaded CPU 10 10.458 47.811
CUDA-BLAST-2024 (Ours) 10 2.909 171.880
NCBI BLAST 10 14.000 43.478
  • The best results for each K-mer length are bolded.
  • CUDA-BLAST-2024 achieves a 5x improvment in speed over NCBI-BLAST.

About

Reimplementation of NCBI BLAST with CUDA backend for faster retrieval

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published