использование косвенных командных буферов в вычислительных ядрах в ios Metal - PullRequest
0 голосов
/ 20 января 2020

Мне неясно "косвенные буферы команд (ICB)" в металле iOS. Я прочитал документацию, но мне все еще не очень понятно, как ее использовать, когда ее использовать. Документы говорят, используйте его, когда вам нужно повторно использовать буфер команд. Но разве это не похоже на то, что почти во всех приложениях процесс повторяется для всех последующих кадров?

В моем конкретном случае c я должен вычислить выравнивание между двумя облаками точек. Процесс итеративный, так как мы запускаем три итерации ICP. Каждый с выводом последней итерации в качестве входных данных для следующего. Таким образом, при всей неразберихе, которую я уже имею в отношении косвенных командных буферов, это похоже на репликационный командный буфер и, следовательно, хорошее место для размещения в ICB. Но здесь есть одна загвоздка: я должен прочитать результаты этапа t-1 и принять решение на основе порога. А затем снова отправьте его в качестве входных данных в функцию ICP для следующей итерации.

Во-вторых, большинство документов говорят, что «в основном используется только один буфер команд на кадр», но что, если вам нужно принимать решения на основе на выходе одного ядра в конвейере, скажем, пяти ядер. Как этот сценарий работает с предложением «один буфер команд на кадр».

...