Освобождение памяти CUDA мучительно медленно - PullRequest
4 голосов
/ 29 января 2010

Я размещаю некоторые массивы с плавающей запятой (довольно большие, т.е. 9 000 000 элементов) на GPU, используя cudaMalloc((void**)&(storage->data), size * sizeof(float)).В конце моей программы я освобождаю эту память, используя cudaFree(storage->data);.

Проблема в том, что первое освобождение действительно медленное, около 10 секунд, тогда как остальные почти мгновенные.

Мой вопрос заключается в следующем: что может вызвать эту разницу?Является ли освобождение памяти на GPU обычно таким медленным?

Ответы [ 2 ]

3 голосов
/ 29 января 2010

Как отмечалось на форумах NVIDIA, это почти наверняка проблема с тем, как вы синхронизируете вещи, а не с cudaFree.

1 голос
/ 29 января 2010

не должно быть таким медленным, в Linux с cuda 2.2 это занимает доли секунды. Вы пытались запустить профилировщик хоста и устройства, чтобы понять, почему именно медленный? сколько отдельного распределения вы выполняете ?, которое имеет некоторое наказание, но не такое большое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...