把OpenMP加入CUDA程序里因为想用到两块GPU来做一些简单的计算
在SDK里cudaOpenMP有一段话说是可以开启比GPU设备多的CPU线程,但是没提到这样做的原因和好处
首先,用两块GPU和不用量的CPU核心数得到以下速度提升:
i7-2600K + GTX 570 * 2 ----------------------------------Speed Up
CUDA + OpenMP (2 Threads)-----------------------------89.58
CUDA + OpenMP (4 Threads)-----------------------------160.44
CUDA + OpenMP (8 Threads)-----------------------------224.30
然后想到即使一块GPU用更多的CPU线程数来控制应该也可以得到速度的提升,于是做了以下测试:
i7-2600K + GTX 570---------------------------------------Speed Up
CUDA---------------------------------------------------------31.36
CUDA + OpenMP (2 Threads)----------------------------61.83
CUDA + OpenMP (4 Threads)----------------------------109.58
CUDA + OpenMP (8 Threads)----------------------------177.11
对结果非常满意,可是就是不知道原因,看了许多文章都不建议使用多个CPU线程来控制一个GPU,想问一下为什么?