Bioinformatics with CUDA C
2
1
Entering edit mode
9.7 years ago
avimanyu786 ▴ 10

I am an M.Tech student in Computer Science from Calcutta, India studying at Heritage Institute of Technology. I'm currently in 2nd year and have opted for Bioinformatics as an elective subject. I am currently learning CUDA C for my college project. As there are a lot of applications of parallel computing in Bioinformatics, I look forward towards invaluable guidance from the community on this subject.

Recently I have written a GPU based parallel program with CUDA C to compute large multiplication tables up to the order of millions in about 0.4-0.5 ms which practically takes an enormously indefinite amount of time to compute by CPUs. I believe there must be some way of using this in Bioinformatics. Can anyone please guide me on this?

I have also found this article and was looking for any further research opportunities with CUDA which also could be a new project idea.

My system configuration:

  • Platform: CUDA 6 configured on Visual Studio 2013 ( Windows 7 ultimate 64 bit,thinking to revert to Linux soon)
  • Intel Core i7 4770k @ 3.9 Ghz
  • Nvidia GTX 780 3 GB DDR5
  • Adata 256 GB SSD + 1 TB WD Blue HDD
  • 12 GB (3 x 4 GB)RAM
cuda parallel-computing • 3.4k views
ADD COMMENT
3
Entering edit mode
9.7 years ago

I recommend making your software run on AWS GPU instances. Not many people in the field will already have the hardware for GPU based analysis.

Right now a GPU spot instance (g2.2xlarge) is around 9 cents an hour and a compute/memory optimized (c3/r3.8xlarge) spot instance with 32 cores is around 30-40 cents an hour.

If you can show that you can run CUDA jobs (BLAST, short read alignment) in 4 GPU spot instances (~40 cents an hour) faster than a single compute/memory optimized spot instance (~40 cents an hour), then I would probably use your program.

ADD COMMENT
0
Entering edit mode

Thanks :) !

ADD REPLY
1
Entering edit mode
9.7 years ago
pld 5.1k

Is your algorithm calculating the outer product for two vectors both equal to [1,2,...,n], or something along those lines? You could in theory generate lookup tables to replace repeated calculations, but I'm not really sure what you mean by multiplication table.

Did you look on the CUDA website? There is tons of work there. Physical simulations of biological molecules (e.g. protein folding) are obvious choices that can really take advantage of the FPUs. Sequence alignment is the other one, but that area has seen a great deal of exploration already.You might want to find a more generic case to explore optimizing, that has uses in bioinformatics. Many machine learning algorithms, MCMC, and others might be targets.

The reason GPGPU adoption has been slow in bioinformatics is that many problems are not bottlenecked by the ability to do large amounts of floating point calculations (e.g. matrix multiplication). FPUs are not going to help you solve graph problems.

The thing to always do is not so much compare to a serial CPU case, but compare against the current in CPU parallel computing, e.g. MPI/etc. Some parallel algorithms can degrade to worse than serial performance, but for many tasks it is obvious you get a speed up over the serial case. What is not clear always is if you get a speed up over the best case CPU parallelization.

The latest generation of CUDA specific cards have very nice amounts of memory, but still per node/core you can get more memory with a CPU. You can always scale up to match, but how does it scale and how does the cost scale? A GPGPU set up might be faster but the cost of computation is greater than a CPU parallelization since you need more nodes to handle the entire data set. You may also run into tradeoffs in moving data from system memory to GPU memory.

ADD COMMENT
0
Entering edit mode

Thank you so much for your detailed reply!

While learning CUDA, I simply remembered a C program to display a multiplication table for a particular number n, in this way:

n x 1 = n
n x 2 = 2n
n x 3 = 3n
...........

Now if I try to do this up-to n x 1,000,000 , it takes a huge amount of time. So when I did it in CUDA, it worked really fast and that was great. I did it to understand the advantage of CUDA. Then I wondered maybe there could be an application for this in Bioinformatics.

I've gone through the CUDA site but wasn't sure what to start with.

Thanks again :) !

ADD REPLY
1
Entering edit mode

I'd say that starting with sequence alignment, maybe implementing Smith-Waterman or Needleman-Wunsch in CUDA would be a great place to start.

A favorite pet project I like to use for playing around with new languages/approaches is writing a program to calculate the sequence motif using shannon entropy, and then scan sequence data for potential hits. I think it is a great problem because there is a huge amount of room for implementing optimizations.

ADD REPLY
0
Entering edit mode

That would be great! Our Bioinformatics classes have just started. The Smith-Waterman Algorithm has just been discussed. I'll talk about the sequence motif calculation you suggested during class tomorrow. Thanks!

ADD REPLY
1
Entering edit mode

http://schneider.ncifcrf.gov/paper/

Although he's stuck with the 90s geocity look, this is the best place for understanding molecular information theory.

ADD REPLY
0
Entering edit mode

Wow! Such wealth of information! Bookmarked :) ! Nostalgic Geocity look :) . A million thanks!

ADD REPLY

Login before adding your answer.

Traffic: 1942 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6