我正在开发一个openCL程序,一切都运行良好,但问题是clCreateContext函数调用占用了大部分程序执行时间(程序运行大约400毫秒,其中380毫秒仅用于创建上下文)。 / p>
在创建上下文和命令队列后,内核在线编译。我的系统只包含一个OpenCL设备(Nvidia Pascal)。
我在Nvidia GeForce GT 640上尝试了相同的程序,创建上下文(大约100毫秒)所需的时间更少,但与执行时间相比仍然太大(我打印了设备名称,它们都很好)。
vector<cl_platform_id> platforms;
cl_device_id device_id;
clGetPlatformIDs(0, NULL, &ret_num_platforms);
ret = clGetPlatformIDs(ret_num_platforms, &platforms[0], NULL);
ret = clGetDeviceIDs(platforms[0], deviceType, 1, &device_id, &ret_num_devices);
timeStamps[0] = get_timestamp();
context = clCreateContext(NULL, 1, &device_id, NULL, NULL, &ret);
timeStamps[1] = get_timestamp();
contextTime=(timeStamps[1]-timeStamps[0]) / 1000.0L;
cout << " Context Time: " << contextTime << " ms\n";
command_queue = clCreateCommandQueue(context, device_id, CL_QUEUE_PROFILING_ENABLE, &ret);