Dr. Vincent Natoli from Stone Ridge Technology has recently published a very good article in HPCwire evaluating 10 common objections to GPU computing. In this article he brings up 10 reasons why people have been hesitant to get involved with GPU computing and provides a counter-argument to each of these reasons.

The GPU team at EM Photonics agrees with a number of Dr. Natoli's points as can be seen in our CULA designs principals. For example, his #1 fallacy is:

"I don’t want to rewrite my code or learn a new language."

In CULA, we designed a system that completely abstracts all GPU details from the user - there is no need to learn CUDA to accelerate an existing LAPACK function. You can simply compile your code using CULA functions (or alternatively link against the new link interface) and all details including initialization, memory transfers, and computation are performed with a single function call. This approach allows scientists and developers unfamiliar with GPU programming to quickly accelerate codes with LAPACK functionality.

Another fallacy examined by Dr. Natoli is:

"The PCIe bandwidth will kill my performance"

In CULA, for large enough problems, the PCIe transfer time accounts for less than 1% of the total runtime! For many of the LAPACK functions, the memory requirements are of order O(N2) while the computation is of order O(N3). This discrepancy means that the amount of computation needed is growing at a much faster rate than the memory required. While this might not always be true for other domains, it is certainly the case for the majority of CULA. Additionally, through creative implementations it is possible to overlap GPU computation with GPU transfers and CPU computation. This technique is used heavily in CULA to achieve even higher speeds.

Overall, the article answers some of the most common misconceptions about GPU computing and is a good read for both novices and experts in the area.