NVIDIA GPU Programming Workshop

In conjunction with the research collaboration between Bina Nusantara University and NVIDIA, a workshop entitled “Graphics Processing Unit Programming” was held on 23 November 2015, at Anggrek Campus, Bina Nusantara University, the only university that was appointed by NVIDIA as GPU Education Center in Indonesia.

This workshop has two sessions with different topics. The first session was presented by Fitra Kacamarga. Participants were explained about the Introduction of GPU, NVIDIA GPU Architecture, and also CUDA programming model. From the explanation, it was described that GPU specializes in processing and producing computer graphics. One important thing about GPU is that it has larger memory bandwidth than CPU. Furthermore, the architecture of GPU is another thing worth to know. GPU hardware is organized into array of streaming multiprocessor (SM) where each SM has many streaming processors (SP) and their own control units, registers, execution pipeline, and caches. In addition, GPU mainly uses global memory.

The next activity was to program in Computer United Device Architecture or CUDA which provides the ease of parallel programming using GPU. CUDA provides C-based Application Programming Interface (API) to utilize GPU. CUDA has unique architecture model. It organizes the computation into many blocks, each consisting of many threads. User can specify the number of blocks and the number of threads within a block. Moreover, CUDA supports one- two- and three- dimensional layouts of block and threads, depending on the application.

CUDA runtime system generates a grid threads that organized in two-level hierarchy; each grid is organized into an array of blocks, and each block is organized into an array of threads. Each block has a unique 2D coordinates, meanwhile each thread has a unique 3D coordinates. Programmer can set the grid and block dimensions. The function of cudaDeviceSynchronize() can be used to allow threads in the same block to coordinate their activities.

The next session was presented by Dr. James Baurley, it was about Statistical Computing using GPUs in [R]. Dr. James explained the benefit of using [R], it is used for data analysis and statistics, interpreted language with excellent graphics package, and most importantly, it is free. There are several accesses to GPU in [R], from CUDA libraries, CUDA C++, and R packages. As an example of GPU in [R], a research about Oryzasativa (Asian rice) was discussed. In the term of rice genotype, it is useful to know the DNA sequence, Single-nucleotide polymorphism (SNP) genotype and traits to be able to categorize the good and poor yield.

There are several steps to do genetic association analysis of yield.First by importing the data, then merge genotype and phenotypes together into one analysis data set, after that a visual check for outliers should be made, finally remove outliers. To do univariate analysis, first GPU libraries need to be loaded, do linear regression, and then summarize the model. The last thing to do is to use the GPU device. The conclusion is, [R] GPU libraries make it easy to utilize GPU in computation like regression and correlation.