Welcome, Guest
Username: Password: Remember me

TOPIC: CUDA core и потоковый процессор - одно и то же?

CUDA core и потоковый процессор - одно и то же? 5 years 3 months ago #6

  • Вадим
  • Вадим's Avatar
Здравствуйте, давно не могу найти ответа: cuda core и потоковый процессор - одно и то же? (не имею в виду мультипроцессор)
The administrator has disabled public write access.

CUDA core и потоковый процессор - одно и то же? 5 years 3 months ago #7

Добрый день,

Если речь о тех потоковых процессорах, которые пишут в спецификациях видеокарты, например: 1536 потоковых процессоров, то имеются в виду обычные CUDA cores для обработки floating-point вычислений.
The administrator has disabled public write access.

CUDA core и потоковый процессор - одно и то же? 5 years 3 months ago #12

  • MBystrov
  • MBystrov's Avatar
  • OFFLINE
  • New Member
  • Posts: 4
  • Karma: 0
То есть, к примеру, на одно мультипроцессорное ядро SMX приходится 192 ядра CUDA, то все они предназначены для обработки floating-point вычислений?

И ещё вопрос по поводу warp: количество выполняемых warp на ядре SMX за один такт одновременно может быть больше одного? И от чего это количество зависит - от количество warp sheduler и LD/ST блоков?
The administrator has disabled public write access.

CUDA core и потоковый процессор - одно и то же? 5 years 3 months ago #15

1) Да, CUDA cores предназначены для single precision floating point, за double precision отвечают отдельные DP units (для архитектуры Kepler)

2)Одновременно может исполняться до 4 варпов (по количеству warp scheduler). Варп исполняется на конкретном такте только в том случае, если его инструкция готова к исполнению (все данные получены и готовы к обработке), однако варпов в одном мультипроцессоре может быть до 64 и warp scheduler будет выбирать из них готовые к исполнению.
The administrator has disabled public write access.

CUDA core и потоковый процессор - одно и то же? 5 years 3 months ago #16

  • MBystrov
  • MBystrov's Avatar
  • OFFLINE
  • New Member
  • Posts: 4
  • Karma: 0
Спасибо!

То есть получается 2048 нитей намультипроцессор, между которыми делятся все ресурсы, такие, к примеру как, регистровая память.
И при этом число блоков на мультипроцессор практически не ограничено? Можно запускать ядро с параметрами <<<65535,2048>>>. Таким образом, драйвер разделит эти 65535 блоков между мультипроцессорами, и всё будет хорошо работать? Или, всё-таки, можно запустить ядро только с параметрами <<<N,2048>>>, где N число мультипроцессоров?
И ещё вопрос сразу: какие ресурсы разделяются между блоками?
The administrator has disabled public write access.

CUDA core и потоковый процессор - одно и то же? 5 years 3 months ago #17

Да, в архитектуре Kepler максимальное количество конкурентных нитей на один SMX - 2048, в то же время, число конкурентных блоков - 16. То есть одновременно делить ресурсы, такие как регистры и разделяемая память между собой будут максимум 16 блоков и максимум 2048 нитей. Кроме того, есть ограничение по размеру блока - 1024 нити, поэтому <<<65535,2048>>> вызовет ошибку. Все блоки (если их больше чем мультипроцессоров) выстраиваются в очередь и драйвер выбирает из них, какие исполнять и в каком порядке (это программист не контролирует) . Однажды попавший в SMX блок занимает свое количество регистров и разделяемой памяти, не мигрирует между SMX и не может быть выгружен из SMX. Он освобождает место для следующих блоков только когда выполнит все свои инструкции.
Большая часть подобных нюансов рассмотрена в нашем бесплатном онлайн-курсе (cuda-on-line.parallel-computing.pro/), более детальное изучение есть в программах наших on-site тренингов. (www.parallel-computing.pro/index.php/courses)
The administrator has disabled public write access.
Time to create page: 0.093 seconds