2015-04-15 2 views
2

Я пытаюсь провести некоторые эксперименты с свойством Hyper-Q на устройствах C.C 3.5 и выше. Я нашел некоторую информацию, связанную с оборудованием, задействованным в этом свойстве. Одним из задействованных подразделений является группа управления сетью. В соответствии с этим документом http://www.nvidia.com/content/PDF/kepler/NVIDIA-kepler-GK110-Architecture-Whitepaper.pdf данное устройство может отправлять и приостанавливать сетки. Но мой вопрос: «Какова политика, разработанная Группой управления сеткой для выбора подходящей сетки для выполнения?».Как работает блок управления сеткой в ​​CUDA?

Спасибо.

ответ

1

Сетка - это все блоки потоков, связанные с запуском ядра. В общем, сетка будет выбрана для выполнения

  1. в том порядке, что она была получена (т.е. в порядке запусков ядра) < и>
  2. Когда ресурсы устройства, необходимые для выполнения доступны, < и >
  3. в приверженностью с потоковой семантикой

Подвесок сетей сегодня может произойти при ограниченном наборе обстоятельств:

  1. debugging - для того, чтобы одним графических отлаживать
  2. CUDA Dynamic Parallelism

Подробной информации о приостановке сетей в CDP не опубликован, насколько я знаю, но цель блока сетки управления в этом дело в

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

Эта последняя необходимость обусловлена ​​тем, что в отличие от других одновременных запусков ядра, которые обычно независимы друг от друга, есть implicit or explicit synchronization requirement между родителем и ядром ребенка.

+0

Большое спасибо за информацию @Robert Crovella –