top of page

GPU Computing

Since this algorithm requires many operations on large matrices, it can take a long time to run. We use GPU computing, also known as GPU acceleration, to overcome this difficulty.

 

GPU computing involves the use of a GPU to carry out some non-graphical computations which would usually be done by a CPU. GPU’s have a parallel architecture, with many lower powered cores able to perform computations simultaneously. This makes tasks which involve many small, independent computations well suited to GPU computing.

Image Source: http://parallelcompute.sourceforge.net/parcom.php

CNN algorithms generally require many independent operations to be performed on matrices of data, making them compatible with GPU computing. Therefore, we decided to use this technology to improve the speed of our algorithm.

 

The most widely available software platform for GPU computing is NVidia’s CUDA. The platform allows the user to access a GPU using the traditional computing languages C and C++. The CUDA platform is the backbone of MATLAB’s parallel computing toolkit as well the the MatConvNet library’s parallel computing features, which meant that we didn’t have to worry about writing CUDA code.The downside of this platform is that it only works with NVidia GPU’s.

 

The main challenges in this area were to find a computer with an NVidia GPU and to set up the MatConvNet library to use this GPU. Luckily, we discovered that most CAEN computers have NVidia K620 GPU’s, which are compatible with CUDA and are also quite powerful.

 

In order to use MatConvNet with GPU acceleration, the library must be compiled specifically for GPU support. This process is difficult or impossible using CAEN’s Windows desktop environment, but is possible using CAEN Linux if the path (location) of the CUDA library is known.

Please see setup_instructions.txt for more details on this process:

https://github.com/deedstho/ImageProcessing.git

bottom of page