我有一个任务是为OpenCL程序的性能/时序/事件分析制作一个简单分析工具(winOS)。有人可以提供建议如何开始?
答案 0 :(得分:1)
最简单的一个,在所有平台上都能正常工作:
cl_event perfEvent;
cl_ulong start=0, end=0;
float t_kernel;
/* Enqueue kernel */
clEnqueueNDRangeKernel(commandQueue, kernel, 1, NULL, globalWorkSize, localWorkSize, 0, NULL, &perfEvent);
clWaitForEvents( 1, &perfEvent );
/* Get the execution time */
clGetEventProfilingInfo(perfEvent, CL_PROFILING_COMMAND_START, sizeof(cl_ulong), &start, NULL);
clGetEventProfilingInfo(perfEvent, CL_PROFILING_COMMAND_END, sizeof(cl_ulong), &end, NULL);
t_kernel = (end-start)/1000000.0f;
std::cout << t_kernel << std::endl;
答案 1 :(得分:0)
看看AMD CodeXL。它是免费的,它可能正是你正在寻找的。在CodeXL内部,使用应用程序时间线跟踪模式(配置文件 - &gt;应用程序时间线跟踪),该模式执行程序并生成显示OpenCL事件(如内核分派和数据传输操作)的可视时间轴。