如何为OpenCL程序制作简单的分析工具?

时间:2012-06-21 17:38:14

标签: profiling opencl

我有一个任务是为OpenCL程序的性能/时序/事件分析制作一个简单分析工具(winOS)。有人可以提供建议如何开始?

2 个答案:

答案 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事件(如内核分派和数据传输操作)的可视时间轴。