Есть ли «правильный» способ освободить все ресурсы, когда вы закончите обработку openCL? - PullRequest
0 голосов
/ 03 февраля 2011

Полагаю, простой способ - перезапустить программу, но есть ли способ получить тот же эффект, не закрывая программу? Я вызываю правильные операторы release для моей выделенной памяти, моего контекста и очереди команд, но я никогда не верю, что любой вызов openCL действительно делает то, что я хочу, когда я его вызываю.

Например, вызов для создания буфера фактически не создает буфер, пока я не прочитал из него.

Мне любопытно, есть ли способ принудительной очистки или что-то подобное. Дайте мне знать, спасибо.

1 Ответ

4 голосов
/ 03 февраля 2011

Нет, спецификация OpenCL определяет только функции clRelease * для этого. Кроме того, вам не нужно выполнять дополнительную очистку, просто объекты OpenCL подсчитывают ссылки, поэтому они удаляются только тогда, когда количество ссылок достигает 0.

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

...