NVIDIA против AMD:Производительность графического процессора

StackOverflow https://stackoverflow.com/questions/4638324

Вопрос

Я хотел бы услышать мнение людей, имеющих опыт программирования для обоих.Лично у меня есть опыт работы только с NVIDIA.

NVIDIA CUDA кажется намного более популярной, чем конкуренты.(Просто подсчитав теги вопросов на этом форуме, «cuda» превосходит «opencl» 3:1, а «nvidia» превосходит «ati» 15:1, а тега «ati-stream» вообще нет).

С другой стороны, согласно Википедии, карты ATI/AMD должны иметь гораздо больший потенциал, особенно в расчете на доллар.Самая быстрая карта NVIDIA на рынке на сегодняшний день, GeForce 580 (500 долларов США), имеет производительность 1,6 терафлопс одинарной точности.AMD Radeon 6970 можно купить за 370 долларов, а ее производительность составляет 2,7 терафлопс.Модель 580 имеет 512 исполнительных блоков на частоте 772 МГц.6970 имеет 1536 исполнительных блоков на частоте 880 МГц.

Насколько реалистично это бумажное преимущество AMD над NVIDIA и будет ли оно реализовано в большинстве задач GPGPU?Что происходит с целочисленными задачами?

Это было полезно?

Решение

Метафорически говоря ATI имеет хороший двигатель по сравнению с NVIDIA. Но у Nvidia есть лучший автомобиль: D

Это в основном, потому что NVIDIA инвестировала хорошую сумму своих ресурсов (в деньгах и людях) для разработки важных библиотек, необходимых для научных вычислений (BLAS, FFT), а затем хорошая работа снова в продвижении. Это может быть причина, по которой CUDA доминирует в тегах здесь по сравнению с ATI (или Opencl)

Что касается преимущества в задачах GPGPU в целом, оно закончится в зависимости от других вопросов (в зависимости от приложения), таких как, пропускная способность передачи памяти, хороший компилятор и, вероятно, даже водитель. NVIDIA, имеющих более зрелый компилятор, более стабильный драйвер на Linux (Linux, потому что его использование широко распространено в научных вычислениях), наклонить баланс в пользу CUDA (по крайней мере, на данный момент).


РЕДАКТИРОВАТЬ 12 января 2013 г.

Прошло два года с тех пор, как я сделал этот пост, и все равно иногда привлечет взгляды. Поэтому я решил уточнить несколько вещей

  • AMD ускорил свою игру. Теперь у них есть как BLAS, так и библиотеки FFT. Многочисленные сторонние библиотеки также обрезаются вокруг Opencl.
  • Intel представила Xeon Phi в дикую поддержку как OpenMP и OpenCL. Он также имеет возможность использовать существующий код X86. Как отмечено в комментариях, ограничена X86 без SSE на данный момент
  • NVIDIA и CUDA все еще имеют преимущество в диапазоне библиотек доступных. Однако они не могут быть сосредоточены на OpenCl столько, сколько и раньше.

В коротким opencl закрыл пробел за последние два года. Есть новые игроки в поле. Но Куда еще немного опережает пачку.

Другие советы

У меня нет сильных чувств по поводу CUDA или CUDA.OpenCL;предположительно, OpenCL — это долгосрочное будущее, просто потому, что он является открытым стандартом.

Но современные карты NVIDIA и ATI для GPGPU (не графической производительности, а GPGPU), по поводу которых у меня есть твердое мнение.И чтобы подвести итоги, я отмечу, что на текущий список 500 крупнейших кластеров, NVIDIA доводит системы AMD 4 до 1, а на gpgpu.org, результаты поиска (статьи, ссылки на интернет-ресурсы и т. д.) для NVIDIA превосходят результаты для AMD в соотношении 6:1.

Огромная часть этой разницы заключается в объеме доступной онлайн-информации.Обратите внимание на NVIDIA Зона CUDA по сравнению с AMD Центр разработчиков GPGPU.Количество вещей, которые могут предложить начинающие разработчики, даже близко не поддается сравнению.На сайте NVIDIA вы найдете массу статей и кода от людей, вероятно, работающих над такими проблемами, как ваша.Вы найдете массу онлайн-классов от NVIDIA и других источников, а также очень полезные документы, такие как руководство по передовой практике для разработчиков и т. д.Доступность бесплатных инструментов разработки — профилировщика, cuda-gdb и т. д. — в значительной степени меняет путь NVIDIA.

(Редактор:информация в этом пункте уже не точная.) И некоторая разница еще и аппаратная.Карты AMD имеют лучшие характеристики с точки зрения пиковых флопов, но чтобы получить значительную долю от этого, вам нужно не только разбить задачу на множество полностью независимых потоковых процессоров, но и векторизовать каждый рабочий элемент.Учитывая, что код GPGPU достаточно сложен, этой дополнительной архитектурной сложности достаточно, чтобы сделать или разрушить некоторые проекты.

И результатом всего этого является то, что сообщество пользователей NVIDIA продолжает расти.Из трех или четырех известных мне групп, думающих о создании кластеров графических процессоров, ни одна из них серьезно не рассматривает карты AMD.А это будет означать, что со стороны NVIDIA появится еще больше групп, пишущих статьи, вносящих код и т. д.

Я не рекламный агент NVIDIA;Мне бы хотелось, чтобы это было не так и чтобы существовало две (или больше!) одинаково привлекательных платформ GPGPU.Конкуренция – это хорошо.Возможно, AMD очень скоро активизирует свою деятельность, и предстоящие продукты Fusion выглядят очень привлекательно.Но, давая кому-то совет о том, какие карты купить сегодня и на что потратить время, я не могу с чистой совестью сказать, что обе среды разработки одинаково хороши.

Отредактировано, чтобы добавить:Я думаю, что вышеизложенное несколько эллиптично с точки зрения ответа на исходный вопрос, поэтому позвольте мне сделать его немного более ясным.Производительность, которую вы можете получить от аппаратного обеспечения, в идеальном мире с бесконечным доступным временем зависит только от базового оборудования и возможностей языка программирования;но на самом деле уровень производительности, который вы можете получить за фиксированный промежуток времени, также сильно зависит от инструментов разработки, существующих баз кода сообщества (например, общедоступных библиотек и т. д.).Все эти соображения убедительно указывают на NVIDIA.

(Редактор:информация в этом параграфе больше не является точной.) С точки зрения аппаратного обеспечения, необходимость векторизации в модулях SIMD в картах AMD также делает достижение производительности на бумаге еще сложнее, чем с оборудованием NVIDIA.

Основное различие между архитектурами AMD и NVIDIA заключается в том, что AMD оптимизирована для задач, в которых поведение алгоритма можно определить во время компиляции, а NVIDIA оптимизирована для задач, в которых поведение алгоритма можно определить только во время выполнения.

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

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

Я считаю, что тот факт, что большинство суперкомпьютеров, использующих графические процессоры, работают на NVIDIA, заключается в том, что тип проблемы, над которой интересуются ученые, в целом лучше соответствует архитектуре NVIDIA, чем архитектуре AMD.

Я сделал некоторое итеративное кодирование в OpenCL. И результаты пробега в NVIDIA и ATI в значительной степени одинаковы. Возле одинаковой скорости в том же значении ($) карт.

В обоих случаях скорость составляли ~ 10x-30x, по сравнению с процессором.

Я не тестировал куда, но я сомневаюсь, что это может решить свои случайные проблемы с случайной памятью. В настоящее время Cuda и Opencl более или менее то же самое, и я вижу больше будущего на Opencl, чем на Куда. Основная причина в том, что Intel запускает драйверы с OpenCL для своих процессоров. Это будет огромный прогресс в будущем (работает 16, 32 или 64 потока OpenCL в процессоре, действительно быстрый, и действительно простой в порт GPU).

Потратив некоторое время с OpenCl для открыток GCN после нескольких лет CUDA для Fermi и Kepler, я все еще предпочитаю CUDA в качестве языка программирования и выбрал бы аппаратное обеспечение AMD с CUDA, если у меня был вариант.

Основные различия NVIDIA и AMD (Opencl):

Для AMD:

  • Даже с Maxwell NVIDIA по-прежнему имеет более длинные задержки команд и сложные алгоритмы, скорее всего, будут 10 быстрее на AMD (предполагают одинаковые теоретические Tflops) после легких оптимизаций для обоих. Разрыв был до 60% для KEPLER VS GCN. Труднее оптимизировать сложные ядра для NVIDIA в этом смысле.

  • Дешевые карты.

  • Opencl - это открытый стандарт с другими поставщиками.

Для NVIDIA:

  • Имеет линию оборудования Tesla, которая подходит для надежных высоких серверных нагрузок.

  • Новый Максвелл - это больше энергии эффективным.

  • Компилятор и инструменты более продвинуты. AMD до сих пор не может добраться до реализации maxregcout Параметр, так что вы можете легко контролировать занятость на различных оборудовании, и их компилятор имеет много случайных идей о том, что является оптимальным кодом, который изменяется с каждой версией, поэтому вам может понадобиться пересмотреть старый код каждой полгода, потому что он внезапно стал 40% помедленнее.

На данный момент, если GPGPU является вашей целью, CUDA является единственным выбором, поскольку Opencl с AMD не готов к ферму серверов, и значительно сложнее писать эффективный код для AMD из-за того, что компилятор всегда кажется «в бета-версии» Отказ

Я новичок в GPGPU, но у меня есть опыт работы в научных вычислениях (PhD по физике). Я собираю исследовательскую группу, и я хочу пойти на использование GPGPU для моих расчетов. Я должен был выбрать между доступными платформами. Я решил на NVIDIA, по нескольким причинам: в то время как ATI может быть быстрее на бумаге, NVidia имеет более зрелую платформу и дополнительную документацию, поэтому можно будет приблизиться к пиковому характеристику на этой платформе.

NVIDIA также имеет академическую программу поддержки исследований, можно подать заявку на поддержку, я только что получил карту Tesla 2075, которую я очень рад. Я не знаю, если ati или Intel поддерживает исследование таким образом.

То, что я слышал о OpenCL, состоит в том, что он пытается быть одним одновременно, верно, что ваш код OpenCL будет более портативным, но также может не использовать полные возможности любой платформы. Я предпочел бы узнать немного больше и писать программы, которые используют ресурсы лучше. С Tesla K10, который только что вышел в этом году, NVIDIA находится в диапазоне 4.5 Teraflops, поэтому неясно, что NVIDIA стоит позади ... Однако Intel MIC может оказаться настоящим конкурентом, особенно если им удастся переместить единицу GPGPU материнская плата. Но на данный момент я выбрал NVIDIA.

Мой опыт оценки функции с плавающей точкой OpenCL имеет тенденцию к вакатам NVIDIA. Я работал с парой плавучей точкой тестов на картах NVIDIA, начиная от 8600 м GT к GTX 460. NVIDIA Cards последовательно достигают около половины теоретического пика одного преобразования на этих этапах.
Карты ATI я работал с редко добиться лучше, чем одна треть пика одного точности. Обратите внимание, что мой опыт с ATI перекошен; Я смог работать только с одной карточкой 5000 серии. Мой опыт в основном с картами серии HD 4000, которые никогда не были поддержаны. Поддержка карт серии HD 5000 намного лучше.

Я хотел бы добавить в дискуссию. Для нас в бизнесе программного обеспечения мы можем поставить под угрозу сырую одноточную производительность к производительности, но даже в том, что я не должен идти на компромисс, так как, как уже указал, вы не можете достичь столько выступления на оборудовании ATI, используя OpenCL, как вы можете достичь Если вы пишете в CUDA на оборудовании NVIDIA.

И да, с объявлением PGI компилятора X86 для CUDA, не будет никаких веских причин проводить больше времени и ресурсов, написание в OpenCL :)

PS: Мой аргумент может быть предвзятым с тех пор, как мы делаем практически все наши работы GPGPU на CUDA. У нас есть библиотека обработки изображений / компьютерного зрения CUVI (CUDA для видения и визуализации), которые ускоряют некоторые основные функциональные возможности IP / CV на CUDA.

Куда, безусловно, популярна, чем OpenCl на сегодня, так как он был освобожден 3 или 4 года до OpenCL. Поскольку был выпущен Opencl, NVIDIA не внесла много для языка, так как они много сосредоточены на CUDA. Они даже не выпустили версию OpenCL 1.2 для любого водителя.

Что касается гетерогенных вычислений, а также ручных устройств, как озабоченные OpenCL, наверняка найдет больше популярности в ближайшем будущем. На данный момент самый большой вклад в OpenCL - AMD, он виден на их сайте.

по моему опыту:

  • Если вам нужна лучшая абсолютная производительность, то вам нужно увидеть, кто находится на новейшем аппаратной итерации и использовать их стек (включая последние / бета-релизы).

  • Если вы хотите наилучшую производительность за деньги, вы будете стремиться к картам Gamer, а не «Профессиональные» карты, и гибкость нацеливания различных платформ поддерживает OpenCL.

  • Если вы начинаете, в частности, CUDA имеет тенденцию быть более полированным и имеет больше инструментов и библиотек.

Наконец, мой личный взять, после ужасающей «поддержки» от NVIDIA (мы получили мертвый Tesla, и это не было изменено в течение нескольких месяцев, а клиент ждал): гибкость для прыжкового судна с OpenCL стоит риска немного более низкой производительности Когда NVIDIA впереди в цикле выпуска.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top