Font Size: a A A

Research On BLAST Algorithm Acceleration Based On GPU

Posted on:2012-05-08Degree:MasterType:Thesis
Country:ChinaCandidate:X Q LiFull Text:PDF
GTID:2178330335450758Subject:Computer system architecture
Abstract/Summary:
With the growth of the massive amount of data, CPU still continues to move forward in accordance with Moore'Law. But the bottleneck has emerged when CPU deals with those huge amounts of data, which is very obvious, especially in the three-dimensional graphics processing performance. GPU (Graphic Processing Unit, graphics processor) has obtained a rapid development under the popular environment of integrated circuit development. GPU has a very fast calculation speed which has exceeded the level of the CPU's calculation and especially in the floating-point calculations. Furthermore, GPU is of very high memory bandwidth (25.3 GB/S), which is far more than CPU. Because of the tremendous computational ability of GPU, a lot of researchers is trying to use GPU's powerful computation ability widely in various fields of scientific computing and there have been many successful application examples, such as medical treatment, video picture processing, energy and finance etc. Long time ago we need to be familiar with and grasp graphics knowledge to program on GPU, which makes it difficult to step into the threshold of the general computing of GPU for those people who are not major in graphics. Even so, with the appearance and development of the general computing interface, it made the threshold of general computing of GPU lower. The programming tool in this paper is base on parallel programming interface which is named CUDA. CUDA is specialized for general computing of GPU and a production of NVIDIA. Based on CUDA, we have tested the whole BLASTN program (a subprogram of BLAST) and then found a hotpot function of BLASTN, finally we used CUDA to transform the hotspot function into CUDA program which is executed on GPU parallel.CUDA is an extension of C language and it provides many powerful interfaces for GPU programming, which makes it easy to grasp related knowledge and then program on GPU. In this paper we have discussed and analyzed the GPU flow programming models and the main GPU architectures, after that we have analyzed the feasibility of applying GPU in general computing. Based on those GPU knowledge we have introduced programming interface of general computing of GPU. Finally, we decided to apply GPU general computing in biological information fields. Nowadays, biological information has been developed quickly. With the development of the biological information, massive amount data which is must handled by computer grows with each passing day.BLAST is a set of program tool which is used to retrieve BLAST database for biological sequences. Nowadays, it is widely used in almost all the biological information research center all over the world. According to different needs for different researchers, researchers have added more and more new biological sequences into BLAST database, therefore, the scale of the BALST database is much larger. As a result, the executing speed of retrieving relevant BLAST database is much slower just because of the large scale database. According to the development trend of BLAST database at present, the retrieval speed of BLAST in future will become much lower, even intolerable. Low retrieval speed of BLAST is mainly because it adopts serial program to search the BLAST database system. Furthermore, all the BLAST programs will have frequent I/O communication in the process of executing BLAST programs and this I/O communication makes the running speed of BLAST program reduced greatly. To solve these problems, some special teams have used the method of super computer, large cluster system and the FPGA to accelerate BLAST program in parallel. All these method have obtained certain good effect. But all those optimization in parallel are based on special environment of cluster or expensive super computer, therefore, those parallel BLAST program versions can not be used widely in the world and only a few researchers or scientific research institution can use these parallel BLAST program versions. GPU has quite low hardware expense and very suitable for solving the problem that can be highly paralleled and have a high density calculation. In consideration of BLAST programs have a lot of loops in the classical serial sequence alignment algorithms and the data correlation of each loop is very small, furthermore, each loop has a high calculating density, therefore we can use massive amount of CUDA threads to execute these loop part of the BLAST program in parallel. Considering the above reasons, in this paper we have tested the running time of some core functions of BLASTN which a classical program in BLAST programs. Finally we found a core function that is consuming more time than other core functions do and we can call this core function hotspot alignment function. We used the parallel programming interface of CUDA to transform the hotspot alignment function into CUDA program that is execute in parallel. As a result, we made a comparison that the hotspot alignment function obtained a higher retrieval speed after transforming into CUDA parallel program.In this paper, we selected the bottom layer core matching function and modified source code that is related to this core matching function. Finally, we transplanted the related source code into GPU and tested the running time of the core matching function that had been transplanted into GPU. But the BLAST software package is a vast and complex software package and it contains kinds of independent applications. At the same time, the BLAST source code supports many programs, such as blatn, blastp, blastx, megablast etc. The code branch of BLAST is very complicated and we need a lot of parameters to select the program we want to use, therefore, the parameters of the program itself bring a lot of branch, which makes it difficult to read and understand all program algorithms. The whole BLAST packages are encapsulated by C++ language and the whole process of the algorithm is divided into several classes. The core computation function is started by many classes, so it is necessary to modify considerable quantities of BLAST source code. There is much I/O communication in the BLAST and BLAST adopts the method of filemapping to read database file as matching. BLAST needs to extract the database file that is compressed at ratio 4:1 to compression ratio 1:1, which will consume many system memories. If we transplant more core computing algorithm to GPU, we need to modify more BLAST source code and even restructure all source packages.
Keywords/Search Tags:GPGPU, CUDA, BLAST, High Performance Computing of GPU
Related items