簡體   English   中英

是否有適用於Mac OS X 10.8的opencl分析器?

[英]Is there an opencl profiler for mac os X 10.8?

我試圖在我的OpenCL內核中找到瓶頸,是否可以在Mac OS X上分析OpenCL程序? 我在http://www.gremedy.com/上找到了gDebugger,但是它需要10.5或10.6才能運行。 AMD SDK僅支持Linux和Windows。

有山獅的探查器嗎?

您的剖析信息必須有多詳細? 可以使用內置的內部事件探查器嗎?
可以使用CL_QUEUE_PROFILING_ENABLE標志創建OpenCL隊列。

這樣,您可以看到每個執行的內核:
當它已經

  • 入隊
  • 提交給您的OCL設備
  • 入門
  • 截至

使用C ++-Bindings時 ,隊列的創建如下所示:

_queue = new cl::CommandQueue(_context, _device, CL_QUEUE_PROFILING_ENABLE );

分析信息的提取如下所示:

1)保存要分析的已排隊內核提供的事件對象(在數組中)。

cl::Event evt;
_queue->enqueueNDRangeKernel( _kernel, cl::NullRange, _range, cl::NullRange, NULL, &evt); 

2)執行隊列后,提取分析信息

std::vector<cl::Event> evts;

//add all events to this vector here
//cl::Event evt;
//_queue->enqueueNDRangeKernel( _kernel, cl::NullRange, _range, cl::NullRange, NULL, &evt); 
//evts.push_back(evt);

uint64_t param;
for (unsigned int i=0; i<evts.size(); i++)
{
    evts[i].getProfilingInfo(CL_PROFILING_COMMAND_QUEUED, &param);
    printf("%u: %llu", i, param);
    evts[i].getProfilingInfo(CL_PROFILING_COMMAND_SUBMIT, &param);
    printf(" %llu", param);
    evts[i].getProfilingInfo(CL_PROFILING_COMMAND_START, &param);
    printf(" %llu", param);
    evts[i].getProfilingInfo(CL_PROFILING_COMMAND_END, &param);
    printf(" %llu\n", param);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM