2012-06-20 22 views
5

Ich bin neu in der Verwendung von Thrust und da ist eine Sache, die ich nicht verstehe. Ist Thrust asynchron oder synchron? Wenn ich den folgenden Code schreibe, ist die Zeit nicht 0. Aber in den anderen Tags melden andere Benutzer ein Ergebnis von 0. Was ist die Wahrheit?Ist Thrust synchron oder asynchron?

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

Hinweis: Verwandte Frage zum NVIDIA-Forum [hier] (https://devtalk.nvidia.com/default/topic/864759/is-thrust-copy-synchrous-or-asynchronus/). – BenC

Antwort

2

Kernel startet immer asynchron gewesen - auch in CUDA 1.0 - so dass jeder Thrust-Aufruf, der nur in einem Kernel-Start führt wird asynchron sein.

Jeder Thrust-Code, der implizit Memcpys auslöst, wird aufgrund fehlender Stream-Unterstützung synchron sein, wie von marina.k angedeutet.

+3

Zum Beispiel ist Schub :: reduzieren() definitiv synchron, da es das Ergebnis zurück liest und es über den Rückgabewert an den aufrufenden Thread zurückgibt. Ich mache einige Kommentare zu diesen Einschränkungen in meinem letzten Blogpost auf Thrust: http://developer.nvidia.com/content/expressive-algorithmic-programming-thrust – harrism

0

Die Granularität der Uhr() Funktion ist nicht gut, wie Sie in Windows denken. In Windows XP beträgt die Granularität sogar 16 ms.

Verwenden Sie anstelle von clock() einen Timer mit hoher Auflösung oder die Timing-Funktionen der Cutil-Bibliothek (was im Allgemeinen bevorzugt wird).

Diskussion über High Resolution Timer in Windows: C++ high precision time measurement in Windows

Diskussion über die Nutzung der CUtil Bibliothek für Timing: CUDA: CUtil timer - confusion on elapsed time

0

Sie tun können, es den time.h zum Indexer manuell hinzufügen, um Einstellungen zu gehen - > C/C++ -> Indexer und legte es vor den bestehenden wie diese "Dateien up-front indiziert werden":

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

es zur Arbeit gehen

Verwandte Themen