утечка унифицированной памяти 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

Другие вопросы по тегам