没能发挥性能 求助
我有数学问题,是搜索整数方程解的,大致是遍历“n个数选17个数”的所有组合
写成串行大概是这样多重循环
for(x1=1;x1<30;x1++)
for(x2=x1+1;x2<31;x2++)
....
这个循环的特点是x1,x2越大,后面的变量遍历范围越小,用时也就越小。
久仰CUDA强大的计算力,我花好几天搞配置、研究资料,
改写为CUDA程序,思路是给核函数传入2个数组,一个数组是结构体task{int x1;int x2} 用来表示运算参数, 另一个数组__int64用来存放运算结果
每个核函数去寻找未完成的计算任务并进行计算(中间用了原子运算来记录任务进度),形象说是很多人去吃蛋糕,吃完为止。
我还用cudaOccupancyMaxPotentialBlockSize获取最优的Block数分配方案,用CUDA自带那个excel计算器算了使用率达75%。但对比结果是CUDA算了14秒,CPU大概1,2秒,不明白性能瓶颈在哪?代码在家里 有大神愿看的话我回去奉上
CPU是i5 4570 3.2GHz
显卡GTX660 (本来是游戏用的)
deviceQuery.exe:
CUDA Driver Version / Runtime Version 9.0 / 9.0
CUDA Capability Major/Minor version number: 3.0
Total amount of global memory: 2048 MBytes (2147483648 bytes)
( 5) Multiprocessors, (192) CUDA Cores/MP: 960 CUDA Cores
GPU Max Clock rate: 1072 MHz (1.07 GHz)
Memory Clock rate: 3004 Mhz