На MTLComputePipelineState что определяет maxTotalThreadsPerThreadgroup? - PullRequest
2 голосов
/ 19 апреля 2019

При работе с металлическими шейдерами / вычислительными ядрами на iOS или MacOS ...

MTLComputePipelineState имеет предел maxTotalThreadsPerThreadgroup.

Этот лимит можно запросить после создания состояния конвейера. Это ограничение зависит как от характеристик оборудования графического процессора, версии ОС, так и от кода ядра Metal.

  • Какие аспекты кода ядра Metal влияют на MTT-ComputePipelineState maxTotalThreadsPerThreadgroup?
  • Что можно сделать, чтобы увеличить значение при фиксированной комбинации аппаратного обеспечения / ОС?

Например:

  • Зарегистрировать использование?
  • длина кода?
  • Принудительное встраивание?

(Вопрос не в том, как рассчитать оптимальные размеры, а в том, как изменить код для достижения наибольшей группы потоков.)

Ссылка на документы Apple для MTLComputePipelineState: https://developer.apple.com/documentation/metal/mtlcomputepipelinestate/1414927-maxtotalthreadsperthreadgroup

Ссылка на документы Apple для "Расчет размеров группы потоков и сетки": https://developer.apple.com/documentation/metal/calculating_threadgroup_and_grid_sizes?language=objc

...