Getting Started with CUDA¶
Requirements¶
In order to follow this HowTo, you need:
- git to download the sources
- cmake to build the projects
- the CUDA toolkit >= v5.0 to compile the CUDA demos
- a CUDA-capable GPU with SM architecture >= 2.0 to run the CUDA demos
Refer to Getting Started for detailed SeqAn installation instructions.
Getting the source code¶
CUDA acceleration resides in the develop branch of SeqAn, hosted on GitHub. Execute the following command to get the last sources:
$ git clone -b develop https://github.com/seqan/seqan.git SeqAn
Compiling the demos¶
Hello CUDA¶
Let us first setup the build system:
$ mkdir SeqAn-Builds && cd SeqAn-Builds
$ cmake ../SeqAn -DCMAKE_BUILD_TYPE=Release
Now we can compile and execute our CUDA hello world:
$ make demo_cuda_hello
$ bin/demo_cuda_hello
Hello CUDA!
Important
Some users experienced compilation problems on Mac OS X. If the compilation fails with: clang: error: unsupported option ‘-dumpspecs, then you need to manually create links to gcc 4.4 in the nvcc directory. If you for example installed gcc44 via MacPorts in /opt/local/bin you can create these links as follows:
$ ln -s /opt/local/bin/gcc-mp-4.4 /usr/local/cuda/bin/gcc
$ ln -s /opt/local/bin/g++-mp-4.4 /usr/local/cuda/bin/g++
MMap String¶
Now let’s try the MMap String demo. This demo maps a text file in memory, copies it on the device and uses Thrust to count the number of occurrences of a given character into the file.
$ make demo_cuda_mmap
$ echo "THIS IS A TEST" > test.txt
$ bin/demo_cuda_mmap test.txt T
3
FM-index counting¶
The FM-index counting demo builds an FM-index over a static text. Given a set of patterns, the program counts - both on the host and on the device - the total number of occurrences of all patterns in the text.
$ make demo_cuda_count
$ bin/demo_cuda_count ACGTACGTACGTACGT ACGT GTA
CPU Occurrences: 7
GPU Occurrences: 7