утечка унифицированной памяти cuda
Я писал программу, которая выполняет базовое обнаружение объектов с помощью cuda. Я столкнулся с проблемой, когда я выделяю объединенную память с помощью cudaMallocManaged, выполняю с ней некоторую обработку, а затем освобождаю ее с помощью cudaFree. Событие, однако, cudaFree никогда не возвращал ошибку, память, кажется, никогда не освобождается, поскольку диспетчер задач показывает, что как использование системной памяти, так и использование общей памяти графического процессора постоянно увеличивается. Что-то в корне неверно в моем понимании единой памяти или это ошибка?
Минимальный пример:
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <cassert>
int main()
{
while (1)
{
void* ptr;
cudaMallocManaged(&ptr, 1 << 20);
assert(cudaFree(ptr) == cudaSuccess);
}
}
Я использую Windows 10, версия cuda - 10.2, версия драйвера - 26.21.14.4122.
1 ответ
Либо моя установка драйвера была повреждена, либо это ошибка драйвера. Я исправил ситуацию, переустановив cuda, а затем переустановив последний драйвер графического процессора (готовый к игре драйвер с веб-сайта nvidia). Я не уверен, почему он вообще был испорчен.
РЕДАКТИРОВАТЬ: новая версия драйвера - 445,87