У меня нет сильных чувств к CUDA против OpenCL; предположительно, OpenCL - это долгосрочное будущее, просто благодаря тому, что он является открытым стандартом.
Но современные видеокарты NVIDIA и ATI для GPGPU (не графическая производительность, а GPGPU), о которых я твердо убежден. И чтобы привести к этому, я укажу, что в текущем списке 500 крупнейших кластеров NVIDIA выводит системы AMD 4 на 1, а на gpgpu.org результаты поиска (документы, ссылки на онлайн-ресурсы и т. д.) для NVIDIA превосходит результаты за 6 драм.
Огромной частью этой разницы является количество доступной онлайн-информации. Посмотрите NVIDIA CUDA Zone против AMD GPGPU Developer Central . Количество вещей для начинающих разработчиков даже близко не подходит для сравнения. На сайте NVIDIA вы найдете тонны бумаг и предоставленный код от людей, которые, вероятно, работают над такими проблемами, как ваша. Вы найдете тонны онлайн-классов от NVIDIA и других стран, а также очень полезные документы, такие как руководство по лучшей практике для разработчиков и т. Д. Доступность бесплатных инструментов devel - профилировщик, cuda-gdb и т. Д. - в подавляющем большинстве случаев склоняет NVIDIA.
(Редактор: информация в этом абзаце более не точна.) И некоторые различия также являются аппаратными. Карты AMD обладают лучшими характеристиками с точки зрения пиковых провалов, но чтобы получить значительную часть этого, вам нужно не только разбить проблему на множество полностью независимых потоковых процессоров, но и каждый рабочий элемент должен быть векторизован. Учитывая, что GPGPUing-код достаточно сложен, этой дополнительной архитектурной сложности достаточно, чтобы создавать или разрушать некоторые проекты.
И результатом всего этого является то, что сообщество пользователей NVIDIA продолжает расти. Из трех или четырех групп, которые я знаю, думая о создании кластеров графических процессоров, ни одна из них серьезно не рассматривает карты AMD. И это будет означать, что еще больше групп будут писать статьи, вносить свой вклад и т. Д. На стороне NVIDIA.
Я не шил NVIDIA; Я бы хотел, чтобы все было не так, и чтобы было две (или более!) Одинаково привлекательных платформы GPGPU. Конкуренция это хорошо. Возможно, AMD очень скоро улучшит свою игру, и грядущие продукты Fusion выглядят очень убедительно. Но, давая кому-то совет о том, какие карты купить сегодня и где потратить свое время, вкладывая усилия прямо сейчас, я не могу с чистой совестью сказать, что обе среды разработки одинаково хороши.
Отредактировано для добавления : Я полагаю, что вышеупомянутое является слегка эллиптическим с точки зрения ответа на исходный вопрос, поэтому позвольте мне сделать его немного более явным. Производительность, которую вы можете получить от аппаратного обеспечения, в идеальном мире с неограниченным временем зависит только от базового оборудования и возможностей языка программирования; но в действительности объем производительности, который вы можете получить за фиксированное время, также сильно зависит от инструментов разработки, существующих баз кода сообщества (например, общедоступных библиотек и т. д.). Все эти соображения сильно указывают на NVIDIA.
(Редактор: информация в этом параграфе более не точна.) С точки зрения аппаратного обеспечения требование векторизации в SIMD-блоках на картах AMD также затрудняет достижение производительности бумаги по сравнению с аппаратным обеспечением NVIDIA.