我在大学的论文中使用这个 GPU
我在这个东西上运行了很多不同的内核,执行时间停留在 12666.6689 毫秒,即使我有一个包含 88 条指令 * 100m 次迭代的循环。
__kernel void scalar_mult_add(__global int * list)
{
unsigned int x=38;
unsigned int y=38;
for(int i=0; i<1000000 ; i++){
y=x*y;
x=x+y;
}
}
唯一可以使执行时间增加的事情是 x!=0
在 for 循环语句中添加
__kernel void scalar_mult_add(__global int * list)
{
unsigned int x=38;
unsigned int y=38;
for(int i=0; i<1000000 && x!=0 ; i++){
y=x*y;
x=x+y;
}
}
为什么这种事情总是发生?我无法理解:例如,8800 万条指令与 100 万条指令具有相同的执行时间,尽管我没有那么多单元来同时执行像 100 万条指令那样的大内核。
为什么x!=0
在循环中添加单个语句会使执行时间增加那么多,而在 for 循环中添加几个语句却没有?