Должны ли подбуферы OpenCL быть освобождены явно, даже если их родительский буфер освобожден?

#opencl

#opencl

Вопрос:

Мне интересно, будет ли освобождение буфера OpenCL A, который содержит вложенные буферы A1, A2, … автоматически освобождать также вложенные буферы — особенно на хосте, а не на устройстве.

Ответ №1:

Спецификация для clCreateSubBuffer не содержит никаких исключений из общих правил создания объектов и подсчета ссылок для вложенных буферов. Далее говорится,

Возвращаемый объект buffer ссылается на хранилище данных, выделенное для буфера

Поэтому я думаю, можно с уверенностью сказать, что вам нужно освобождать каждый вложенный буфер, а также родительский буфер по отдельности, и реализации могут освобождать полное родительское хранилище данных только после освобождения последнего объекта вложенного буфера.

Я, конечно, не сталкивался с какими-либо проблемами при следовании этому шаблону самостоятельно.