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