CUDA память потребляется при выходе из функции - PullRequest
0 голосов
/ 25 сентября 2019

На моем gtx1060 не хватило памяти, поэтому я начал проверять доступную память.У меня есть одна функция, которая выполняет много вычислений на GPU с векторами тяги, а затем вторая функция, которая обрабатывает результаты функции function_1.

Я проверил память в конце function_1 и сразу после возвратаот function_1, и свободная память сильно отличается.

void debug_check_gpu_memory()
    {
        float free_m, total_m, used_m;
        size_t free_t, total_t;

        cudaMemGetInfo(&free_t, &total_t);

        free_m  =(uint) free_t/1048576.0 ;
        total_m =(uint)total_t/1048576.0;
        used_m  = total_m - free_m;


        cout << "     Memory :: " << endl;
        cout << "          Free = " << free_m << endl;
        cout << "          Used = " << used_m << endl;
        cout << "         Total = " << total_m << endl;
        cout << "-----------------------------------" << endl;
        cout << "\n\n";

    }

void function_1()
    {
        ...
        ...
        debug_check_gpu_memory();
           // Memory ::
           //    Free  =  3536.88
           //    Used  = -1373.69
           //    Total =  1979.19
        return;
    }

void function_2()
    {
        debug_check_gpu_memory();
           // Memory ::
           //    Free  =  728.87
           //    Used  = 1250.31
           //    Total = 1979.19
    }

main()
    {
           function_1;

           debug_check_gpu_memory();
           // Memory ::
           //    Free  =  728.87
           //    Used  = 1250.31
           //    Total = 1979.19

           function_2;

    }

Вопрос

  1. Почему в первой функции я вижу отрицательное число для «Используемой» памяти?Я проверяю память на протяжении первой функции, и она всегда отрицательная.

  2. Почему между концом функции_1 и повторной проверкой в ​​основном или в функции_2 используется другой объем памяти?

Система:

Linux - Fedora 29 64 бит
NVIDIA-SMI 430.14
Версия Cuda: 10,2
Память 6075 МиБ
- я тоже не понимаю, почему вижу только 1979 МБполезная память, когда nvidia-smi показывает, что я использую ~ 500 МБ вне моей программы.

1 Ответ

1 голос
/ 25 сентября 2019

Благодаря комментарию @Robert_Crovella, я удалил оскорбительный тип, и проблема исчезла.Я не уверен, как правильно закрыть вопрос, если исходный вопрос на самом деле не был проблемой.

Я использовал код, найденный в этом посте на форумах Cuda.Вместо этого я попытался использовать функцию get_free_memory (), найденную здесь , и она работала довольно хорошо.

Это не было проблемой cuda, это была проблема приведения типов.Спасибо.

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