cuda единая утечка памяти - PullRequest
3 голосов
/ 21 апреля 2020

Я писал программу, которая выполняет базовое c обнаружение объектов с помощью cuda. Я столкнулся с проблемой, когда я выделяю объединенную память с помощью cudaMallocManaged, выполняю некоторую обработку с ее помощью и затем освобождаю ее с помощью cudaFree. Несмотря на то, что cudaFree никогда не возвращал ошибку, кажется, что память фактически никогда не освобождается, поскольку диспетчер задач показывает, что как использование системной памяти, так и использование совместно используемой памяти gpu постоянно увеличиваются. Что-то в корне неверно в моем понимании единой памяти или это ошибка?

Минимальный пример:

#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 Ответ

0 голосов
/ 21 апреля 2020

Либо установка моего драйвера была повреждена, либо это ошибка драйвера. Я исправил это путем переустановки cuda, а затем переустановки последнего драйвера gpu (готового к игре драйвера с сайта nvidia). Хотя я не уверен, почему он был поврежден.

РЕДАКТИРОВАТЬ: новая версия драйвера 445.87

...