OpenCL 커널에서 병목 현상을 찾으려고합니다. Mac OS X에서 OpenCL 프로그램을 프로파일 링 할 수 있습니까? http://www.gremedy.com/에 gDebugger가 있지만 실행하려면 10.5 또는 10.6이 필요합니다. AMD SDK는 Linux 및 Windows 만 지원합니다.Mac OS X 10.8 용 opencl 프로파일 러가 있습니까?
Mountain Lion 용 프로파일 러가 있습니까?
OpenCL 커널에서 병목 현상을 찾으려고합니다. Mac OS X에서 OpenCL 프로그램을 프로파일 링 할 수 있습니까? http://www.gremedy.com/에 gDebugger가 있지만 실행하려면 10.5 또는 10.6이 필요합니다. AMD SDK는 Linux 및 Windows 만 지원합니다.Mac OS X 10.8 용 opencl 프로파일 러가 있습니까?
Mountain Lion 용 프로파일 러가 있습니까?
프로파일 링 정보가 얼마나 자세해야합니까? 내장 된 내부 프로파일 러를 사용해도 되나요?
OpenCL 대기열은 CL_QUEUE_PROFILING_ENABLE 플래그를 사용하여 만들 수 있습니다.
당신이 실행 각 커널 볼 수있는이 방법 :
가있다
With C++ - 바인딩, c 큐의 reation는 다음과 같이 할 수 있습니다 이
_queue = new cl::CommandQueue(_context, _device, CL_QUEUE_PROFILING_ENABLE);
프로파일 정보의 extration은 다음과 같습니다
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, ¶m);
printf("%u: %llu", i, param);
evts[i].getProfilingInfo(CL_PROFILING_COMMAND_SUBMIT, ¶m);
printf(" %llu", param);
evts[i].getProfilingInfo(CL_PROFILING_COMMAND_START, ¶m);
printf(" %llu", param);
evts[i].getProfilingInfo(CL_PROFILING_COMMAND_END, ¶m);
printf(" %llu\n", param);
}
안녕 파벨를 추출 당신은 내 대답의 도움을 했습니까? – Nippey
답장을 보내 주셔서 감사합니다. 그러나 커널 코드의 어느 부분을 개선해야하는지 확인하려면 실제 프로파일 러/분석기가 필요합니다. – Pavel