2016-06-24 2 views
0

В качестве абстрактной концепции параллельных вычислений локальная (общая) память выделяется для блоков потоков (CUDA)/рабочих групп (OpenCL) и распределяется между всеми потоками в тех же блоках потоков (CUDA)/Workgroups (OpenCL).Как распределяется локальная (общая) память?

Как это фактически выделяется? выделяется ли он первым потоком блока/группы или выделяется до создания блоков контроллером памяти? или что-то другое ?

+1

@DarkZeros: Этот комментарий, вероятно, достаточный ответ, если вы хотите добавить его как один – talonmies

+0

@DarkZeros Спасибо, это объясняет это очень хорошо – OmarGW

ответ

1

Что OpenCL считает «Локальная память»:

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

Он очень похож на регистры или кеш L1/L2 в процессорах/многоядерных системах. Компиляторы знают о реестрах целевого ЦП и планируют соответственно. Когда планировщик планирует, что рабочие группы на аппаратные ресурсы всегда обеспечат достаточную память для каждой рабочей группы.

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

Смежные вопросы