Что означает для CUDA наличие параллельных ядер? - PullRequest
0 голосов
/ 29 января 2019

Я читаю статью о CUDA, в которой говорится: «Программа CUDA - это последовательная программа с параллельными ядрами».Мои вопросы:

  1. Что значит для него быть последовательной программой?Я знаю, что последовательный интерфейс противоположен параллельному, но что это значит с точки зрения того, что код CUDA выполняется на разных процессорах, разных ядрах и т. Д.?Я знаю, что смысл CUDA в том, что он облегчает параллельное программирование, поэтому мне интересно знать, какая его часть является последовательной.

  2. Что значит иметь несколько ядер?Я всегда понимал, что ядро ​​является частью операционной системы, и я думаю, что CUDA - это просто программное обеспечение, которое работает в операционной системе, верно?Как у CUDA есть несколько ядер и как она использует их для достижения параллелизма?

1 Ответ

0 голосов
/ 02 февраля 2019
  1. Ядро CUDA написано с точки зрения одного потока.Он отвечает на вопрос "что будет делать каждый поток?"Ядро CUDA дает одно определение того, что будет делать каждый поток.С точки зрения одного потока, это, кажется, последовательная программа.Однако он становится параллельным во время запуска, когда многие потоки выполняют один и тот же код «параллельно».

  2. Я думаю, что вы неправильно интерпретируете.CUDA имеет «параллельные ядра», что означает, что каждое ядро ​​в CUDA имеет возможность выражать (в соответствии с тем, как оно написано, и специфику концепций CUDA, таких как встроенные переменные) и манифест (во время запуска, через множество потоков выполнения).параллелизмЭто не означает, что CUDA по своей природе требует нескольких ядер для выражения параллелизма.Один запуск ядра CUDA по своей сути параллелен.

Вы можете прочитать руководство по программированию CUDA .

...