Git Product home page Git Product logo

gem-cutter's Introduction

GEM-Cutter

1. WHAT IS GEM-Cutter?

Gem-cutter is a high-performance bioinformatic library highly optimized for GPUs. The techniques included on the library allow scaling for large problems, using a fine-grain parallelism and advanced programming techniques for GPUs. The library comprises the most used building blocks used for DNA sequence mapping and alignment software. All the algorithms are highly optimized using custom structures and low-level optimizations specifically for each Nvidia GPU architecture (from Fermi to Volta). The library is hiding all the GPU specific programming details using a transparent message passing programming model. The core library is fully integrated and tested with GEM3-mapper, although all its interfaces are well-thought and generalized to be used in other bioinformatics applications. It is self-contained including all the necessary mechanisms for this correct integration on other tools; as dynamic load balance schedulers, I/O modules, memory and compute resource allocators, batch and buffering interfaces, multi-GPU support and wrappers for automatic asynchronous transfers. Gem-cutter is distributed under GPLv3, all the improvements and contributions to this repository are highly appreciated and welcome.

2. GETTING STARTED

The Gem-cutter library is fully integrated with GEM3-mapper providing support for multi-GPUs systems, highly optimized specifically for each Nvidia architecture from Fermi to Volta and tested on x86, PPC & aarch64.

A full-fledged last version of the Gem3-GPU mapper can be downloaded from the next repository: https://github.com/achacond/gem3-mapper

The library can be downloaded as a single module to be integrated into other applications with the next steps:

git clone --recursive https://github.com/achacond/gem-cutter.git gem-cutter
cd gem-cutter
make clean all

3. GPU ACCELERATED MODULES

The core of the Gem-cutter library is a collection of different bioinformatic GPU primitives, CPU-GPU schedulers, resource managers, index and text builders and I/O modules with the aim to make fully transparent to the user the usage of the GPUs, hiding all the system complexity. The basic building blocks currently included are described in the next list:

* Static Seed FM-index Search
* Adaptative Seed FM-index Search
* Suffix position FM-index decodification
* Candidates position Suffix-Array decodification
* K-mer counting filtering
* Bitparallel Myers edit distance filtering
* Bitparallel Myers edit distance alignment 
* Smith & Waterman gotoh alignment

4. CONTRIBUTORS

Developers:

Special Contributors:

Special Thanks:

  • Nvidia: Nuno Subtil, Jacopo Pantaleoni, Mark Berguer, Jonathan Cohen
  • Thanks to all the friends supporting this project.

5. REPORTING BUGS

Feedback and bug reporting it is highly appreciated. Please report any issue or suggestion on github or by email ([email protected])

6. LICENSE AND CITATION

GEM-Cutter is distributed under GPLv3 license and fully free, technical support and bug fixing is freely provided by the authors and the community.

Boosting the FM-index on the GPU: effective techniques to mitigate random memory accesses
Alejandro Chacón, Santiago Marco-Sola, Antonio Espinosa, Paolo Ribeca, Juan Carlos Moure

Thread-cooperative, bit-parallel computation of Levenshtein distance on GPU 
Alejandro Chacón, Santiago Marco-Sola, Antonio Espinosa, Paolo Ribeca, Juan Carlos Moure

gem-cutter's People

Contributors

achacond avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

marziehlenjani

gem-cutter's Issues

nvcc fatal : Unsupported gpu architecture 'compute_20'

See heathsc/gemBS-rs#1

I see the following error when building gem-cutter:

$ make install
make -f Makefile.gemBS install
make[1]: Entering directory '/home/ucbtmog/progz/gemBS-rs'
make -C c_tools
make[2]: Entering directory '/home/ucbtmog/progz/gemBS-rs/c_tools'
make --directory=gem3-mapper
make[3]: Entering directory '/home/ucbtmog/progz/gemBS-rs/c_tools/gem3-mapper'
make --directory=resources release
make[4]: Entering directory '/home/ucbtmog/progz/gemBS-rs/c_tools/gem3-mapper/resources'
make --directory=gem-cutter release
make[5]: Entering directory '/home/ucbtmog/progz/gemBS-rs/c_tools/gem3-mapper/resources/gem-cutter'
/usr/local/cuda/bin/nvcc -O3 -m64 -Xptxas="-dlcm=ca" -gencode arch=compute_20,code=\"sm_20,compute_20\" -gencode arch=compute_20,code=sm_21 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=\"sm_35,compute_35\" -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=\"sm_50,compute_50\" -gencode arch=compute_52,code=\"sm_52,compute_52\" -gencode arch=compute_60,code=\"sm_60,compute_60\" -gencode arch=compute_61,code=\"sm_61,compute_61\" -gencode arch=compute_62,code=\"sm_62,compute_62\" -c src/gpu_fmi_decode.cu -o build/gpu_fmi_decode.o
nvcc fatal   : Unsupported gpu architecture 'compute_20'
Makefile:90: recipe for target 'build/gpu_fmi_decode.o' failed
make[5]: *** [build/gpu_fmi_decode.o] Error 1
make[5]: Leaving directory '/home/ucbtmog/progz/gemBS-rs/c_tools/gem3-mapper/resources/gem-cutter'
Makefile:16: recipe for target 'release' failed
make[4]: *** [release] Error 2
make[4]: Leaving directory '/home/ucbtmog/progz/gemBS-rs/c_tools/gem3-mapper/resources'
Makefile:32: recipe for target 'release' failed
make[3]: *** [release] Error 2
make[3]: Leaving directory '/home/ucbtmog/progz/gemBS-rs/c_tools/gem3-mapper'
Makefile:56: recipe for target 'gem3' failed
make[2]: *** [gem3] Error 2
make[2]: Leaving directory '/home/ucbtmog/progz/gemBS-rs/c_tools'
Makefile.gemBS:60: recipe for target 'c_tools' failed
make[1]: *** [c_tools] Error 2
make[1]: Leaving directory '/home/ucbtmog/progz/gemBS-rs'
Makefile:7: recipe for target 'install' failed
make: *** [install] Error 2

My NVCC version is:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Jan_28_19:32:09_PST_2021
Cuda compilation tools, release 11.2, V11.2.142
Build cuda_11.2.r11.2/compiler.29558016_0

The server has two GPU GeForce RTX 3090...

I managed to get around the issue by updating Makefile, specifically setting the two following variables to empty:

From

CUDA_SASS_FLAG_20=-gencode arch=compute_20,code=\"sm_20,compute_20\" -gencode arch=compute_20,code=sm_21
CUDA_SASS_FLAG_30=$(CUDA_SASS_FLAG_20) -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=\"sm_35,compute_35\"

To:

CUDA_SASS_FLAG_20=
#-gencode arch=compute_20,code=\"sm_20,compute_20\" -gencode arch=compute_20,code=sm_21
CUDA_SASS_FLAG_30=
#$(CUDA_SASS_FLAG_20) -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=\"sm_35,compute_35\"

It would be great if the Makefile could automatically set the correct $CUDA_SASS_FLAGS based on the NVCC version...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.