2016-09-19 3 views
0

OpenCL 및 JOCL을 사용하여 GPU에서 병렬 커널을 실행합니다.gpu에서 시간 측정 실행 및 할당

1/작업 항목 및 작업 그룹의 용어에서 커널의 크기를 알 수있는 기능이 있나요 어떻게 나의 엔비디아 GPU 플랫폼에서 실행됩니다

나는 알고 싶어?

2/GPU/CPU 데이터 전송없이 커널의 실행 시간을 알 수 있습니까? 커널을 시작하기 전에 Java 도구 System.currentTimeMillis(); 을 사용했지만 데이터 전송 시간을 포함합니다.

3/더 정확하게 각 GPU 코어의 실행 시간을 알 수있는 가능성이 있습니까? 커널

+0

http://jocl.org/samples/JOCLEventSample.java – Marco13

+0

에서 이벤트를 사용하여 커널의 실행 시간을 얻는 방법을 보여주는 전용 예제가 있습니다. 유용합니다 –

답변

0

1)

get_global_size(0) gives number of items in x dimension 
get_global_size(1) gives number of item arrays in y dimension 
get_global_size(2) gives number of item matrices in z dimension 

총수는 그 승산이지만 커널 만 -1- 희미 시작 인 경우에만 제 기능은 충분하다.

get_local_size(0 or 1 or 2); 

은 전체 항목이 아닌 그룹의 항목에 대해 동일한 것을 제공합니다.

get_num_groups (0 or 1 or 2) 

은 유사하지만 전체 그룹에서 많은 수의 그룹을 제공합니다. 치수

번호

에서 찍은
int dims=get_work_dim() 

2) 이벤트 기반 호스트 코드의 성능 질의 :

http://www.jocl.org/cloth/docs/doc-utils/org/jocl/utils/Events.html

computeExecutionTimeMs (org.jocl.cl_event 이벤트) 계산 실행 시간 지정된 이벤트의 밀리 세컨드 단위.

1), 2), 3) 프로파일 러

모든 "각 코어"를 제외하고 보여 (그러나 항상 동일한 코어에 매핑 할 수 없습니다 "레인"의 정보를 제공하지만, 당신이 볼 수 있습니다 무엇 단일 스레드가하고 있었다) 부분. https://developer.nvidia.com/nvidia-nsight-visual-studio-edition 비주얼과 테이블은 병목 현상과 커널 핫스팟에 대한 충분한 정보를 제공합니다.

+0

감사합니다. 프로파일 러에 대한 질문이 있습니다. Eclipse와 함께 사용할 수 있습니까 ?? 링크에서 그들은 단지 비주얼 스튜디오를 인용했다. –

+0

프로세스에 "부착"되어있는 경우 jvm 또는 jar 실행 프로세스와 관련된 항목에 프로세스를 첨부 할 수 있습니다. 어쩌면 Visual Studio에서 명령 행을 실행하는 사람도있을 수 있습니다. –