2013-11-28 1 views
0

커널이 AMD GPU에 제출되어 실제로 실행 된 사이에 많은 지연이 있습니다. 내 프로그램은 I/O가 커널을 간섭하지 않도록 블로킹 = CL_TRUE로 블로킹/읽기를 차단하고 있습니다. 그런 다음 clGetEventProfilingInfo를 사용하여 커널 큐잉, 제출, 시작 및 종료에 대한 정보를 얻습니다. 아래의 데이터 (및 코드)는 커널이 약 5 초를 보낸 다음 5 초를 소비 한 것을 나타냅니다. 일반적으로 제출 된 시간은 실행 시간과 같습니다. 커널 실행 지연에 대한 여러 포럼 게시물 (예 : http://devgurus.amd.com/thread/166587)을 살펴 보았지만 해결 방법이없는 것으로 보입니다. GPU가 저전력 모드가 아닌지 확인했습니다. 다른 사람이 이것을 보았습니까? 진단 방법에 대한 제안이 있습니까?OpenCL 커널에서 큰 submit-> start 지연

write 131.000000 ms 
kernel queued->submitted 0.022348 ms 
kernel submitted->started 5553.957663 ms 
kernel started->ended 5529.893060 ms 
read 39.000000 ms 

1306  cl_ulong end, queued, start, submit; 
1307  clGetEventProfilingInfo(jniContext->exec_event, 
1308    CL_PROFILING_COMMAND_QUEUED, sizeof(queued), &queued, NULL); 
1309  clGetEventProfilingInfo(jniContext->exec_event, 
1310    CL_PROFILING_COMMAND_SUBMIT, sizeof(submit), &submit, NULL); 
1311  clGetEventProfilingInfo(jniContext->exec_event, 
1312    CL_PROFILING_COMMAND_START, sizeof(start), &start, NULL); 
1313  clGetEventProfilingInfo(jniContext->exec_event, 
1314    CL_PROFILING_COMMAND_END, sizeof(end), &end, NULL); 
+0

측정하는 데 사용하는 코드를 추가 할 수 있습니까? 내 말은, 커널을 시작할 때의 전체 코드입니다. – DarkZeros

+0

물론, 전체 코드는 http://pastebin.com/SCpcRrjP에서 얻을 수 있습니다. – agrippa

+0

하나의 커널을 한 번만 실행하는 것을 볼 수 있습니다. 종종 커널의 첫 번째 호출에서 큰 타이밍 결과를 볼 수 있습니다. 많은 OpenCL 구현은 마지막 순간까지 특정 작업을 연기하므로이 작업으로 인해 첫 번째 실행이 후속 실행보다 오래 걸릴 수 있습니다. 커널을 벤치마킹하려면 여러 번 실행해야 할 수도 있습니다. 일부는 이것을 "GPU를 워밍업 (warming up the GPU)"이라고 부릅니다. – Dithermaster

답변

0

은 후속 없습니다 : (2013년 11월 22일를 출시) 최신 베타 드라이버 (v13.4은 2013년 5월 29일에 발표) 최신 버전의 드라이버를 업그레이드 한 후 우리는 더 이상이 성과를보고있다 발행물. 이 문제는 AMD A10-6700을 사용하는 64 비트 Centos에서 발생했지만이 문제가 발생하고 다른 칩셋을 사용하는 경우 최신 베타 드라이버로 업그레이드하고 문제가 해결되는지 확인하는 것이 좋습니다.

관련 문제