A bioinformatics institution requested us to tune a program that they made for studying the human genome without the use of a supercomputer. They needed the ability to pull specific human genome information from the vase pool of data available to them for easier analysis in their research lab.
Their program used a really awesome mathematics algorithm but the complexity of this algorithm became a bottleneck in their program. We began their program tuning process by using multi thread architecture, then we changed the operating system from Windows to Linux and used a high performance workstation.
We originally changed the theoretical processing time from 60 days to 30 days. Unfortunately, the change in processing time was still not short enough for use in actual research, so we had to cut it down further. When looking for solution to solve this time crunch problem, we found the GPGPU (General-Purpose Computing on Graphic Processing Unit) solution.
A Japanese national university gene research team successfully adopted our GPU solution for their gene research. They permitted us to post their gene research article on our home page.
The article is a result of our cost-effective and performance effective GPU solution.
|Ueki M, Tamiya G.
Ultrahigh-dimensional variable selection method for whole-genome gene-gene interaction analysis.
2012 May 3;13:72.
|Ueta M, Tamiya G, et al.
Epistatic interaction between Toll-like receptor 3 (TLR3) and prostaglandin E receptor 3 (PTGER3) genes.
J Allergy Clin Immunol.
We attempted to parallelize the genome analytic process using a CPU but the maximum parallelized number depends on available CPU cores. In a High Performance Computing solution, this approach needs either a huge budget or should be done using a super computer.
We decided instead to use GPU technology which has a more powerful calculation performance than CPU technology does. GPU has thousand of cores in contrast to a CPU which only has a few cores. That difference means a GPU is able to calculate much fast than a CPU can.
Please check out funny video by Nvidia depicting how a GPU is able to conduct more multi tasking processes than a CPU.
We selected Nvidia's cheap GPU that adopted a programming language called "CUDA" as our POC and we got great results after testing. GPU technology was really more effective for our program than CPU technology was and we were able to reduce a significant amount of processing time. In addition, it was very low cost.
In light of these results, we chose Nvidia's GPU and CUDA (program language), and adopted C++ for the CPU side.
A GPU bottleneck was memory transfer between the CPU and the GPU, but nowadays unified memory technologies are trending in GPU world. When the memory transfer bottleneck is solved, GPU performance will also accelerate.
We were able to significantly reduce the processing time to 6 hours from the original 1440 hours (60 days). We also had 4 major processing time check points comparing the best CPU processing times and best GPU processing times. Our final result showed a difference of 120 times processing speed. Which was a really nice result.
GPU solution gives you...
1. High performance efficiency.
2. Cost benefit (lower cost than a CPU scale-up).
3. Super computer performance on your desktop.