Требуется ли cudaDeviceSynchronize () перед cudaFree ()? - PullRequest
1 голос
/ 24 сентября 2019

CUDA версия 10.1.Pascal GPU.Все команды передаются в поток по умолчанию:

void * ptr;
cudaMalloc(&ptr, ...);

launch_kernel<<<...>>>(ptr);

cudaDeviceSynchronize();     // Is this required?
cudaFree(ptr);

Меняется ли ответ с cudaMallocManaged()?

1 Ответ

3 голосов
/ 24 сентября 2019

Некоторые вызовы API CUDA, такие как cudaMalloc(), cudaFree(), cudaHostAlloc(), копии с устройства на устройство и т. Д., Изменяют сопоставление адресов виртуальной памяти графического процессора.Эти вызовы вызывают синхронизацию устройства, поэтому вам не нужно звонить cudaDeviceSynchronize(), потому что он уже синхронизируется.

То же самое происходит с cudaMallocManaged().

...