CUDA против Direct X 10 для параллельной математики. Есть ли у вас какие-либо мысли об этом? - PullRequest
0 голосов
/ 09 марта 2009

CUDA против Direct X 10 для параллельной математики. Есть ли у вас какие-либо мысли об этом?

Ответы [ 5 ]

3 голосов
/ 10 марта 2009

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

DirectX 10 будет легче взаимодействовать, я думаю, но если вы действительно хотите продвигать свою оптимизацию скорости, вы должны обойти дополнительный слой. DirectX 10 также не будет знать, когда использовать текстурную память по сравнению с постоянной памятью по сравнению с разделяемой памятью, также как вы будете знать, в зависимости от вашего конкретного алгоритма.

Если у вас есть доступ к Tesla C1060 или чему-то в этом роде, CUDA - лучший выбор. Вы действительно можете ускорить процесс, если знаете специфику вашего GPGPU - я видел 188-кратное ускорение в одном конкретном алгоритме на Tesla по сравнению с моим рабочим столом.

1 голос
/ 09 марта 2009

Я нахожу CUDA неловким. Это не C, а подмножество. Он изначально не поддерживает плавающую точку двойной точности и эмулируется. Для одинарной точности это нормально, хотя. Это зависит от типа задачи, которую вы выполняете. Вы должны тратить больше времени на вычисления параллельно, чем на передачу данных, чтобы их стоило использовать. Но эта проблема не уникальна для CUDA.

Я бы подождал Apple OpenCL, который, похоже, станет отраслевым стандартом для параллельных вычислений.

0 голосов
/ 23 апреля 2011

Должно быть легко выбирать между ними.

Если ваше приложение может допускать специфичность для Windows, вы все равно можете рассмотреть DirectX Compute. В противном случае используйте CUDA или OpenCL.

Если ваше приложение не может терпеть блокировку поставщика на NVIDIA, вы не можете использовать CUDA, вы должны использовать OpenCL или DirectX Compute.

Если ваше приложение выполняет взаимодействие с DirectX, учтите, что CUDA / OpenCL повлечет за собой переключение контекста при взаимодействии с графическим API, а DirectX Compute - нет.

Если один или несколько из этих критериев не влияют на ваше приложение, используйте прадедушку массивно параллельных цепочек инструментов: CUDA.

0 голосов
/ 11 марта 2009

CUDA не имеет ничего общего с поддержкой операций с плавающей запятой двойной точности. Это зависит от доступного оборудования. Серии 9, 100, 200 и Tesla поддерживают операции с плавающей запятой двойной точности тесла .

0 голосов
/ 09 марта 2009

Ну, CUDA портативна ... Это большая победа, если вы спросите меня ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...