Когда вызывать cudaDeviceSynchronize?

когда звонитcudaDeviceSynchronize функция действительно нужна?

Насколько я понимаю из документации CUDA, ядра CUDA являются асинхронными, поэтому кажется, что мы должны вызыватьcudaDeviceSynchronize после каждого запуска ядра. Тем не менее, я пробовал один и тот же код (обучение нейронных сетей) с и безcudaDeviceSynchronizeкроме одного до измерения времени. Я обнаружил, что получаю тот же результат, но со скоростью от 7 до 12 раз (в зависимости от размеров матрицы).

Итак, вопрос в том, есть ли причины использоватьcudaDeviceSynchronize кроме измерения времени.

Например:

Is it needed before copying data from the GPU back to the host with cudaMemcpy?

If I do matrix multiplications like

C = A * B
D = C * F

я должен положитьcudaDeviceSynchronize между обоими?

Из моего эксперимента кажется, что я не понимаю.

ПочемуcudaDeviceSynchronize замедлить программу так сильно?

Ответы на вопрос(3)

Ваш ответ на вопрос