Git Product home page Git Product logo

versalignlib's Introduction

versalignLib

Author: Tobias Neumann

Programming language: C/C++11

Technologies: SSE2, AVX2, OpenCL, OpenMP

Source: tar, zip

What is it?

versalignLib is a showcasing project of parallelization technologies comprising implementations of the sequence alignment algorithms Smith-Waterman and Needleman-Wunsch.

It builds a set of libraries, each library containing implementations utilizing a different parallelization technology (OpenMP, SSE2, AVX2, OpenCL). They are provided as shared objects and can be dynamically loaded depending on available resources and can be benchmarked to one another.

For any details on usage and benchmarks of the reference implementation, please refer to the Github wiki.

INSTALLATION

Building versalignLib requires cmake (>=2.8.11), g++ and an OpenCL implementation.

Build tools

Typically cmake and g++ should be already available on your machine. If not, please install them.

OpenMP

To activate OpenMP parallelization, your compiler needs to have OpenMP support. Otherwise all Kernels except the OpenCL Kernel will run single-threaded. OpenMP is natively supported by gcc and for newer versions of Clang.

OpenCL

To build the OpenCL library, an OpenCL implementation must be available on your machine.

Mac

Mac OS X comes natively with an OpenCL implementation. No need for further setup.

Linux

For Linux, versalignLib utilizes the AMD OpenCL™ APP SDK. All you need to to is to make versalignLib aware of the AMD OpenCL™ APP SDK library by setting the following environment variables:

cd versalignLib
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/opencl-AMD-sdk/x86_64/lib"
export OPENCL_VENDOR_PATH="$PWD/opencl-AMD-sdk/x86_64/lib/vendors"

In case the symlink to the libOpenCL.so.1 library is not preserved, recreate it like this:

(cd opencl-AMD-sdk/x86_64/lib ; rm libOpenCL.so ; ln -s libOpenCL.so.1 libOpenCL.so)

AVX2

cmake automatically checks whether AVX2 build support is available and will only produce the shared object if if detects support.

Caveat 1: You still need to check for AVX2 instruction support during runtime, for more see the versalignLib example implementation!

Caveat 2: OpenMP support for the AVX2 Kernel is currently disabled and needs more bugfixing!

Build

To build versalignLib simply run the following commands:

cd versalignLib
mkdir build
cd build

# Release
cmake -DCMAKE_BUILD_TYPE=Release ..
# Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..

make

System requirements

CPU: 64 bit SSE2 enabled, (optional) AVX2 enabled
RAM: Tested on regular systems with minimum 4 GB RAM
OS: Linux (Ubuntu Server 16.04, Debian 7.7), Mac OSX (10.11)
Software: cmake (>=2.8.11)

versalignlib's People

Contributors

t-neumann avatar

Stargazers

 avatar  avatar

Watchers

 avatar

versalignlib's Issues

AVX2 OpenMP

Segfaults in AVX2 Kernel with OpenMP support. Deactivated for now.

Merging backtracking

Backtracking methods in default backtracking can be merged - same is true for SSE and AVX backtracking.

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.