Если (в C ++ + CUDA) cudaMallocManaged()
используется для выделения общего массива в памяти хоста и графического процессора, и программа встречает (скажем, в коде хоста) выход (1), оставляет ли это висячую памятьв GPU постоянно?
Нет.API времени выполнения CUDA регистрирует функцию разрыва, которая высвобождает все ресурсы, заявленные API при выходе из процесса.Эта операция включает в себя уничтожение любых активных контекстов графического процессора, что освобождает память на графическом процессоре.Обратите внимание, что на самом деле процесс должен завершиться, чтобы все это произошло (см. здесь для примера того, как это может пойти не так).