Asynchrones Kopieren des Speichers vom Host auf das Gerät mithilfe von Thrust- und CUDA-Streams

Ich möchte mit thrust as in Speicher vom Host auf das Gerät kopieren

thrust::host_vector<float> h_vec(1 << 28);
thrust::device_vector<float> d_vec(1 << 28);
thrust::copy(h_vec.begin(), h_vec.end(), d_vec.begin());

Verwenden von CUDA-Streams analog dazu, wie Sie mithilfe von Streams Speicher vom Gerät auf das Gerät kopieren würden:

cudaStream_t s;
cudaStreamCreate(&s);

thrust::device_vector<float> d_vec1(1 << 28), d_vec2(1 << 28);
thrust::copy(thrust::cuda::par.on(s), d_vec1.begin(), d_vec1.end(), d_vec2.begin());

cudaStreamSynchronize(s);
cudaStreamDestroy(s);

Das Problem ist, dass ich die Ausführungsrichtlinie nicht auf CUDA setzen kann, um den Stream beim Kopieren vom Host auf das Gerät anzugeben, da Thrust in diesem Fall davon ausgehen würde, dass beide Vektoren auf dem Gerät gespeichert sind. Gibt es eine Möglichkeit, dieses Problem zu umgehen? Ich verwende die neueste Thrust-Version von Github (in der Datei version.h steht 1.8).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage