Kiedy zadzwonić do cudaDeviceSynchronize?

kiedy dzwoni docudaDeviceSynchronize funkcja naprawdę potrzebna ?.

O ile rozumiem z dokumentacji CUDA, jądra CUDA są asynchroniczne, więc wydaje się, że powinniśmy zadzwonićcudaDeviceSynchronize po każdym uruchomieniu jądra. Próbowałem jednak tego samego kodu (trening sieci neuronowych) zi bez niegocudaDeviceSynchronize, z wyjątkiem jednego przed pomiarem czasu. Odkryłem, że uzyskuję ten sam wynik, ale z szybkością między 7-12x (w zależności od rozmiarów matrycy).

Tak więc pytanie brzmi, czy są jakieś powody, by użyćcudaDeviceSynchronize poza pomiarem czasu.

Na przykład:

Czy jest to potrzebne przed skopiowaniem danych z GPU do hosta za pomocącudaMemcpy?

Jeśli zrobię mnożenie macierzy, jak

C = A * B
D = C * F

powinienem położyćcudaDeviceSynchronize między obiema?

Z mojego eksperymentu Wygląda na to, że nie.

DlaczegocudaDeviceSynchronize spowolnić program tak bardzo?

questionAnswers(3)

yourAnswerToTheQuestion