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