2010-12-04 5 views
2

그래서 쿠다 비주얼 프로파일 2 개 타이머CPU 및 쿠다 비주얼 프로파일의 GPU 타이머

GPU 시간있다 : 그것은 GPU에있어서의 실행 시간이다. CPU 시간 : 해당 방법을 시작하기 위해 GPU 시간과 CPU 오버 헤드의 합계입니다. 드라이버가 생성 한 데이터 수준에서 CPU 시간은 논 블로킹 메서드에 대한 메서드를 시작하기위한 CPU 오버 헤드 일뿐입니다. 블로킹 방법은 GPU 시간과 CPU 오버 헤드의 합입니다. 기본적으로 모든 커널 시작은 비 블로킹입니다. 그러나 프로파일 러 카운터가 활성화되어 있으면 커널 시작이 차단됩니다. 다른 스트림의 비동기 메모리 복사 요청은 비 블로킹입니다.

실제 프로그램이있는 경우 실제 실행 시간은 어떻게됩니까? 나는 시간을 측정하고, GPU 타이머와 CPU 타이머도있다. 차이점은 무엇인가?

+0

나는 당신이 이미 자신의 질문에 대답했다고 생각합니다. – erjiang

답변

2

거의 다 왔으므로 이제는 다양한 옵션 중 일부를 알고 있으므로 마지막 단계는 측정하려는 시간을 정확하게 묻는 것입니다. 이 작업에 대한 올바른 대답은 없습니다. 측정을 통해 무엇을 하려는지에 달려 있기 때문입니다. CPU 시간과 GPU 시간은 계산을 최적화하려고 할 때 정확히 원하는 것이지만 실제로는 꽤 중요한 대기가 될 수 있습니다. 당신은 “ 실제로 exectuion 시간 ” — 시작이라고 언급합니다. 사용자가 프로그램을 시작할 때부터 응답이 울리고 프로그램이 종료 될 때까지의 문제 —의 완전한 실행 시간을 의미합니까? 어쨌든 그것은 실제로 중요한 유일한 시간입니다.

그런 식으로 유닉스 형 시스템에서는 프로그램의 전체 런타임을 측정하는 것을 좋아합니다. /bin/time myprog, 아마도 Windows가 있습니다. 그것은 완전히 독창적이기 때문에 좋습니다. 다른 한편, 전체이기 때문에 너무 광범위하여 도움이 될 수 없으며 코드에 큰 GUI 구성 요소가있는 경우에는 그리 좋지 않습니다. 사용자가 길을 클릭하는 데 걸리는 시간도 측정하기 때문입니다. 결과. 당신이 계산의 일부 세트의 경과 시간을 원하는 경우

, CUDA는 CUDA GPU 타이머 —이 당신이 할 수있는 사용, —이 CUDA Best Practices Guide 참조 코드의 다양한 부분에 배치 할 수 있습니다 매우 편리한 기능 cudaEvent *을 가지고 2.1.2이야 중요한 코드 전후에 넣고 결과를 출력하십시오.

0

gpu 타이머는 이벤트를 기반으로합니다. 은 이벤트가 생성 될 때 처리를 위해 gpu의 큐에 설정된다는 것을 의미합니다. 거기에 작은 오버 헤드가 있습니다. 차이점은 중요하지 않지만 측정 한 것에서