Release cl :: Буфер и утечка памяти на устройстве - PullRequest
0 голосов
/ 29 марта 2020

мы знаем, что в openCL с помощью cl::CreateBuffer() мы можем создать буфер в устройстве, которое выделяет память там. Но мой вопрос заключается в том, будет ли буфер свободен после завершения программы или есть функция, которую мы должны использовать, чтобы освободить память, чтобы предотвратить утечку памяти на устройстве.

1 Ответ

2 голосов
/ 29 марта 2020

Деструктор для объекта cl::Buffer, возвращаемый cl::CreateBuffer(), освободит буфер, что также освободит всю память, выделенную на устройстве. Это основной механизм, на который вы должны полагаться.

Смерть процесса по любой причине (cra sh, чистый выход) даже при выделенных ресурсах также разрушит дескриптор контекста процесса в драйвере устройства, что приведет к драйвер для выполнения очистки.

Конечно, ошибки на любом уровне стека могут помешать этому во всех случаях корректно происходить, но в целом, когда ваш процесс умирает, все должно быть сброшено.

...