2012-06-20 14 views
5

Soy nuevo en el uso de Thrust y hay una cosa que no entiendo. ¿Thrust es asíncrono o síncrono?¿Thrust es síncrono o asíncrono?

Si escribo el siguiente código, el tiempo no es 0. Pero en las otras etiquetas, otros usuarios informan un resultado de 0. ¿Cuál es la verdad?

clock_t start,end; 

start=clock(); 
thrust::sort_by_key(vettore.begin(), vettore.end(), counter.begin()); 

end=clock(); 

double time=((double)(end-start))/CLOCKS_PER_SEC; 

cout<<"execution time"<<time<<endl;// the result is 0.327 
+0

Nota: pregunta relacionada en el foro de NVIDIA [aquí] (https://devtalk.nvidia.com/default/topic/864759/is-thrust-copy-synchrous-or-asynchronus-/). – BenC

Respuesta

2

lanzamientos del kernel siempre han sido asíncrono - incluso en CUDA 1.0 - por lo que cualquier llamada de empuje que se traduce sólo en el lanzamiento de un núcleo serán asíncrona.

Cualquier código de empuje que desencadena implícitamente memcpy será sincrónico debido a la falta de compatibilidad de transmisión, como se mencionó en marina.k.

+3

Por ejemplo, thrust :: reduce() es definitivamente sincrónico ya que lee el resultado y lo devuelve al hilo de llamada a través del valor de retorno. Hago algunos comentarios sobre estas limitaciones en mi reciente publicación de blog sobre Thrust: http://developer.nvidia.com/content/expressive-algorithmic-programming-thrust – harrism

0

clock() la granularidad de la función no es tan buena como piensas en Windows. Y en Windows XP su granularidad es tan alta como 16 mseg.

En lugar de utilizar clock() utilice un temporizador de alta resolución o las funciones de temporización de la biblioteca Cutil (que generalmente se prefiere).

Discusión sobre temporizador de alta resolución en Windows: C++ high precision time measurement in Windows

La discusión sobre el uso de la biblioteca CUtil para medir el tiempo: CUDA: CUtil timer - confusion on elapsed time

0

puede hacerlo añadir manualmente el time.h al indexador, vaya a Preferencias - > C/C++ -> paso a paso y lo puso delante de la existente "archivos para ser indexados por adelantado" de esta manera:

time.h, cstdarg, stdarg.h, ..... 

que ir a trabajar

Cuestiones relacionadas