Должен ли я создавать приложения CUDA сейчас или ждать DirectX 11? - PullRequest
5 голосов
/ 22 октября 2008

Поскольку Windows 7, вероятно, перейдет на RTM в следующем октябре (и DirectX 11 с ним), стоит ли ждать явных возможностей GPXPU в DirectX 11, то есть это будет кроссплатформенная (ATI / Nvidia, а не Windows / Linux / Mac) /Без разницы); или я должен создать приложение CUDA сейчас?

Ответы [ 4 ]

3 голосов
/ 23 октября 2008

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

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

Изучение синтаксиса CUDA сравнительно быстро по сравнению с освоением парадигмы параллельной обработки данных, поэтому, если вы намерены подготовиться к программированию GPGPU, начинать с CUDA сейчас было бы очень полезным шагом.

2 голосов
/ 22 октября 2008

С точки зрения обучения, я думаю, что вам было бы полезно начать с CUDA сейчас, так как это очень поможет вам в размышлениях о параллелизме данных, в котором хорошо работают графические процессоры. Затем, когда / если вы перейдете к DirectX 11, у вас будет хорошая основа для работы с ним, но это зависит от того, какое у вас время (например, если у вас есть время экспериментировать с вещами только для обучения).

В качестве альтернативы, люди из Mac настаивают на том, чтобы OpenCL (Open Compute Language) был общим решением, хотя на данный момент мало что известно. Это еще одна технология, которую вы можете подождать и проверить.

Конференция Microsoft PDC состоится в конце этого месяца, возможно, они объявят о полезной информации о DX11, чтобы помочь вам принять решение.

Мой общий совет заключается в том, что я думаю, что сейчас есть чему поучиться, что вы сможете использовать позже (с DX11 или OpenCL), но вам нужно спросить себя, готовы ли вы изучить какую-то технологию, которая может не сделать это в долгосрочной перспективе. В любом случае, это только мои мысли, у меня пока нет большого опыта работы с CUDA.

На весьма спекулятивной ноте у меня есть ощущение, что такие API, как CUDA, не будут существовать долго, и что DirectX и / или OpenCL - единственные решения, у которых есть будущее (если они действительно не испортили свои реализации, в чем я сомневаюсь) ).

1 голос
/ 26 ноября 2008

И DirectX 11 Compute Shaders, и OpenCL в основном основаны на CUDA, поэтому определенно стоит начать работать с CUDA сейчас. По сути, все они используют одну и ту же модель памяти и имеют сходный синтаксис, который ближе к CUDA, чем к Brook + (который вы использовали бы с Stream SDK).

Однако, если вы хотите DX11, не нужно ждать, просто возьмите November 2008 SDK от Microsoft, который поставляется с предварительным просмотром DX11, который вы уже можете использовать для написания (по крайней мере) простых вычислить приложения шейдера.

1 голос
/ 26 ноября 2008

Если вам нужен опыт обучения, дерзайте!

Другой альтернативой является потоковый SDK AMD / ATI, который вы можете скачать здесь: http://ati.amd.com/technology/streamcomputing/sdkdwnld.html

nVidia Cuda и ATI CAL примерно одинаковы по своим характеристикам. Cuda работает только на GPU nVidia, а CAL работает только на GPI ATI.

Со временем появятся хорошие кроссплатформенные инструменты разработки, но сейчас это огромная пустота. Вычислительные шейдеры DirectX 11 и OpenCL будут бороться за то, чтобы стать инструментом выбора, но ни один из них пока недоступен.

Если вы хотите создать какое-то «настоящее» приложение, а не просто одноразовое обучение, и вы хотите, чтобы оно работало кроссплатформенно, есть несколько альтернатив: например, Brook. Кроме того, люди уже несколько лет работают с gpgpu как с DirectX, так и с OpenGL (не с OpenCL), не дожидаясь явных функций GPGPU. Перейти на gpgpu.org для указателей

...