2014-07-26 4 views
-2

gettimeofday 또는 cudaEventRecord를 사용하여 루프 시간을 지정하려고합니다. 그러나 그들은 매우 다른 결과를보고합니다. 다음은 의사 코드입니다.cudaEvent와 gettimeofday는 크게 다른 시간을보고합니다.

// get time here (start) 
    while (..) 
    { 
.  .. 
    } 
// get time here (stop) 
// calculate time 
// time = (stop.tv_usec-start.tv_usec)*1.0e-3 + (stop.tv_sec - start.tv_sec); or 
// cudaEventElapsedTime(&time,start,stop); 

나는 둘 다 동시에 사용하지는 않지만 각각 별도로 사용하므로 결과가 동일하지 않습니다. 또한 cudaEvent를 사용할 때 cudaEventSynchrosize (stop)를 호출했습니다. 감사.

답변

1

측정 단위에 문제가 있습니다. 나는 많은 cuda 프로그래머가 아니지만 gettimeofday 함수에 관해 말할 수 있습니다. gettimeofday를 초와 마이크로 시간을 표현하는, 그래서 올바른 의사 코드 라인은 다음과 같습니다

// time = (stop.tv_usec-start.tv_usec)*1.0e-6 + (stop.tv_sec - start.tv_sec); 

여기에 주어진 CUDA 특정 솔루션이 있습니다 Timing CUDA operations. 도움이 되었기를 바랍니다.