CUDA: cudaMallocManaged имеет дело с выходами? - PullRequest
0 голосов
/ 04 октября 2018

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

Я собираюсь догадаться, что ответ НЕТ на основании Будет ли выход () или исключение препятствовать вызову деструктора конца области действия? , но я не уверен, является ли графический процессоримеет какой-то механизм восстановления.

1 Ответ

0 голосов
/ 04 октября 2018

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

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

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