opencl獲取kerenl運行時間

簡介

  本篇主要是記錄下,如果使用opencl自帶方式,來計算它kerenl運行時間的方法。

具體實現

  openl到代碼框架,這裏就不講了,這方面網上資料很多,這裏主要是獲取運行時間的實現流程:
    1、首先如果想用opencl自帶方式打印時間戳。那麼在clCreateCommandQueue函數中,必須設置CL_QUEUE_PROFILING_ENABLE。
  比如:commandQueue = clCreateCommandQueue(context, devices[0], CL_QUEUE_PROFILING_ENABLE, &status);
      2、獲取kerenl運行時間,必須在確定對應操作完成之後。
  也就是在:clFinish(commandQueue);
            status = clWaitForEvents(1, &prof_event);之後。
      3、使用函數clGetEventProfilingInfo,通過設置參數:
                 1、CL_PROFILING_COMMAND_QUEUED:獲得kerenl放入命令隊列時間。
                 2、CL_PROFILING_COMMAND_SUBMIT:獲得kerenl進入關聯設備時間。
                 3、CL_PROFILING_COMMAND_START :獲得kerenl在關聯設置中開始運行時的時間。
                 4、CL_PROFILING_COMMAND_END   :獲得kerenl在關聯設備中結束運行時的時間。
      4、使用CL_PROFILING_COMMAND_END得到的時間戳減去CL_PROFILING_COMMAND_QUEUED得到的時間戳,就是kerenl從放入命令隊列到運行完成時的時間。
實例代碼下載:http://download.csdn.net/detail/u011630458/9600167
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章