MUMmerGPU 1.0
August 7, 2007
Michael Schatz, Cole Trapnel, Art Delcher, & Amitabh Varshney
-------------------------------------------------------------
MUMmerGPU is a high-throughput DNA exact sequence alignment program that
runs on nVidia G80-class GPUs. It aligns sequences in parallel on the video
card to achieve a more than 3-fold speedup over the widely used serial CPU
program MUMmer. It is supports many of the same options as MUMmer, and in
many cases, can be used as a drop in replacement.

MUMmerGPU uses the "Compute Unified Device Architecture" (CUDA) Software
development kit to program the graphics cards. If you do not have a nVidia
G80, you can still use MUMmerGPU using the G80 emulator available in CUDA.
The emulated version with run much slower than the native version, and
potentially slower than the CPU version of MUMmer.

Table of Contents
-----------------
. Build & Usage Instructions
. FAQ
. Acknowledgements




Build & Usage Instructions
------------------
1) Download and install the CUDA Toolkit 1.0 for your OS from: 
   http://developer.nvidia.com/object/cuda.html

2) Download and install the Linux display driver (100.14) from:
   http://developer.nvidia.com/object/cuda.html

3) Edit the CUDA_INSTALL_PATH in the src/Makefile to point to the top level
   directory where you installed the CUDA Toolkit.

4) Run 'make' in the src directory, which will compile the program to run on
   the GPU as:
   bin/linux32/release/mummergpu

   If you do not have a G80, you can also run 'make emu=1' which will compile
   the program to run on the CPU with an emulator as:
   bin/linux32/emurelease/mummergpu

5) Usage: mummergpu [options] reference.fa query.fa
   reference.fa must be a single sequence in fasta format
   query.fa is a multi-fasta file containing your sequences the more
   sequences you provide, the faster MUMmerGPU will execute.
   See mummergpu -h for an explanation of the options, many of the options are
   the same as those available in MUMmer.
   See: http://mummer.sourceforge.net/manual/#mummer for more information


FAQs
----
Q: I have a G70 or other older nVidia graphics card. Can I run MUMmerGPU on it?

A: No, MUMmerGPU requires a G80 or later video card. You can run MUMmerGPU
with the G80 emulator, but the alignments will be computed much slower than
if you had a G80.



Q: How does MUMmerGPU handle the MUMmer uniqueness options: -mum, -mumcand,
-mumreference, and -maxmatch?  

A: MUMmerGPU does not filter matches by uniques and always computes all
maximal matches regardless of their uniqueness (-maxmatch). The filtering
options provided by MUMmer (-mum, -mumcand, & -mumreference) are heuristics to
speed up the alignment process. This is not necessary with the very efficient
MUMmerGPU. If you want to filter your alignments to report only the most
biologically significant, you should use 'delta-filter' instead, which uses a
more sophisticated algorithm for finding the best set of alignments.

See the MUMmer manual for more information: 
http://mummer.sourceforge.net/manual/#filter


Q: How does MUMmerGPU handle ambiguous bases?

A: MUMmerGPU only supports DNA characters (ACGT). Non DNA characters in the
reference are converted arbitrarily to a DNA character (A). Non-DNA characters
in the query set are converted to 'x' to guarantee a mis-match.


Q: How can I get help with MUMmerGPU?

A: Subscribe and post to the mailing list at: 
   http://sourceforge.net/mail/?group_id=201280




Acknowledgements
----------------
This work was supported in part by National Institutes of Health grants
R01-LM006845 and R01-LM007938, and National Science Foundation CISE RI grant
CNS 04-03313.

