我有一个非常简单的程序,使用opencl:
#include <stdio.h>
#include <CL/cl.h>
int main(){
getchar();
cl_int error;
cl_uint platforms;
cl_platform_id platform;
error=clGetPlatformIDs(1, &platform, &platforms);
if (error != CL_SUCCESS) {
printf("\n Error number %d", error);
}
else
printf("OK\n");
return 1;
}
我哄骗它
g++ overhead_tan.cpp -o overhead_tan -lOpenCL
该程序有效,但开销很大!当我启动程序时,它将不得不等待没有CPU资源。不是吗?但结果是:
Threads:
1 [||||||||||||||||||||||||| 42.7%]
2 [| 0.7%]
3 [|||||||||||||||||||||| 37.9%]
4 [|| 1.3%]
Mem[|||||||||||||||||||| 1476/5929MB]
(在我启动程序之前,所有线程都加载了~1%)它告诉我内核在那里运行。
为什么会有这种开销?