Ich weiß, dass Aufrufe an einen Funktor mit thrust::for_each
mit Daten in thrust::host_vector
eine parallele Ausführungsrichtlinie haben, aber werden sie tatsächlich parallel ausgeführt?Aufruf eines Schubfunktors auf dem Host zum Ausführen mehrerer Threads
Wenn nicht, was wäre der richtige Weg, diese aufzurufen, obwohl ich weiß, dass das System, auf dem ich es ausführe, virtualisiert ist, so dass alle Kerne auf demselben Rechner zu sein scheinen?
[EDIT]
Ich weiß, dass es so etwas wie thrust::omp::par
ist aber ich kann nicht scheinen zu können, mit OpenMP einen vollen Schub Beispiel zu finden.
Ich habe eine Follow-up-Frage: Also wenn ich einen (benutzerdefinierten) Funktor verwenden würde, würde es als '__device__' oder' __host__' definieren? –
Es scheint, dass es "__host__" sein sollte, obwohl beide funktionieren sollten –
'__device__' und' __host__' sind nicht dasselbe wie das Schub-Backend. Für Schub- "Host" -Operationen muss der Funktor die "__host__" -Dekoration enthalten. Für "Backend-Operationen", die die GPU als Backend verwenden, muss der Funktor die "__device__" -Dekoration enthalten. Für alle CPU-basierten Backends (einschließlich OMP) muss der Funktor die Dekoration "__host__" enthalten. Der Grund dafür ist, dass "__host__" und "__device__" nicht genau dasselbe bedeuten wie das "Host" - und Schub "Device" - Backend. –