Exploiting graphics processing units for computational biology and bioinformatics
Computational Genetics Laboratory, Department of Genetics, Dartmouth Medical School, Lebanon, NH 03756, USA
Interdisciplinary sciences, computational life sciences, Vol. 2, No. 3. (1 September 2010), pp. 213-220.
@article{payne2010exploiting,
title={Exploiting graphics processing units for computational biology and bioinformatics},
author={Payne, J.L. and Sinnott-Armstrong, N.A. and Moore, J.H.},
journal={Interdisciplinary Sciences: Computational Life Sciences},
volume={2},
number={3},
pages={213–220},
issn={1913-2751},
year={2010},
publisher={Springer}
}
Advances in the video gaming industry have led to the production of low-cost, high-performance graphics processing units (GPUs) that possess more memory bandwidth and computational capability than central processing units (CPUs), the standard workhorses of scientific computing. With the recent release of generalpurpose GPUs and NVIDIA’s GPU programming language, CUDA, graphics engines are being adopted widely in scientific computing applications, particularly in the fields of computational biology and bioinformatics. The goal of this article is to concisely present an introduction to GPU hardware and programming, aimed at the computational biologist or bioinformaticist. To this end, we discuss the primary differences between GPU and CPU architecture, introduce the basics of the CUDA programming language, and discuss important CUDA programming practices, such as the proper use of coalesced reads, data types, and memory hierarchies. We highlight each of these topics in the context of computing the all-pairs distance between instances in a dataset, a common procedure in numerous disciplines of scientific computing. We conclude with a runtime analysis of the GPU and CPU implementations of the all-pairs distance calculation. We show our final GPU implementation to outperform the CPU implementation by a factor of 1700.
October 30, 2010 by hgpu