NVIDIA против AMD: производительность GPGPU

Я хотел бы услышать мнение людей, имеющих опыт программирования для обоих. Лично у меня только опыт работы с 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? Что происходит с целочисленными задачами?


person Eugene Smith    schedule 09.01.2011    source источник
comment
Интересный вопрос, но я не уверен, что это действительно связано с программированием?   -  person Paul R    schedule 09.01.2011
comment
По сути, речь идет о двух языках программирования и практических аспектах их реализации. Так что я бы сказал да.   -  person Eugene Smith    schedule 09.01.2011
comment
Интересно, насколько актуальными стали ответы на этот вопрос в свете C ++ AMP.   -  person Dmitri Nesteruk    schedule 12.03.2012
comment
В какой-то момент я изучал, почему майнинг биткойнов настолько медленный на оборудовании NVIDIA по сравнению с AMD. Результирующий поток, AMD Radeon в 3 раза быстрее при майнинге биткойнов (производительность хеширования SHA-256), содержит информацию, которая может вас заинтересовать. ваш вопрос. forum.nvidia.com/   -  person Roger Dahl    schedule 23.03.2012
comment
Мне кажется, что этот вопрос приведет либо к сбору мнений, в зависимости от того, с какими прикладными областями респонденты знакомы, какое оборудование и программное обеспечение они используют и т. Д .; или исчерпывающий ответ будет слишком широким, чтобы соответствовать формату SO. Голосование закрыто.   -  person njuffa    schedule 02.09.2016
comment
@njuffa: Я только что проголосовал за то, чтобы закрыть это. У вас должна быть возможность проголосовать, чтобы закрыть его снова   -  person talonmies    schedule 30.01.2017


Ответы (10)


Образно говоря, у ati хороший движок по сравнению с nvidia. Но у nvidia есть машина получше: D

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

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


EDIT 12 января 2013 г.

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

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

Короче говоря, OpenCL закрыл пробел за последние два года. На поле появились новые игроки. Но CUDA все еще немного опережает остальных.

person Pavan Yalamanchili    schedule 09.01.2011
comment
Xeon Phi имеет только ограниченную возможность выполнения кода x86. Нет MMX / SSE / SSE *. - person osgx; 13.01.2013
comment
@osgx Спасибо. Я должен был упомянуть об этом. - person Pavan Yalamanchili; 13.01.2013
comment
@osgx Но он хорошо работает в DP FP - person Csaba Toth; 25.10.2013
comment
Xeon Phi имеет регистры и инструкции шириной 512 бит, что в 4 раза больше того, что поддерживает SSE. - person zr.; 21.11.2013

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

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

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

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

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

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

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

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

person Jonathan Dursi    schedule 09.01.2011
comment
Я изучаю OpenCL с помощью ATI Stream, ценю замечание о векторизации :) Хотя я понимаю, что преимущества NVIDIA довольно велики, я просто поддерживаю AMD / ATI и саму компанию, и у меня есть время потратить на создание библиотек: Я думаю, производительность OpenCL повысится. определенно увеличится в ближайшие годы, и я бы хотел, чтобы мой код был готов к этому. - person Garet Claborn; 28.01.2011
comment
Было бы интересно узнать, что вы думаете о AMD GCN и OpenCL 1.2 сейчас (2013 г.), что SIM-карты ушли в прошлое. Есть чистая разница? - person danno; 13.09.2013
comment
@Jonathan прошло уже 3 года с тех пор, как вы написали этот замечательный пост. Мне было интересно, с вашей точки зрения, платформа, сообщество и экосистема AMD сократили разрыв. - person protoboolean; 22.01.2014
comment
Не столько для видеокарт или карт GPGPU, сколько для самих процессоров, я всегда был поклонником Intel, а не AMD, однако недавно AMD собирается выпустить новый процессор ZEN, в котором их тесты на отметку прожигания показывают, что при настройках по умолчанию он сопоставим с топовыми процессорами Intel i7. Их новая технология должна улучшаться по мере того, как она работает, поскольку распознает шаблоны инструкций. Поэтому я думаю, что большая часть их времени и усилий была потрачена на этот новый процессор, а не на технологию графического процессора. Но я уверен, что после выпуска процессоров Zen у Intel будет что-то получше. - person Francis Cugler; 21.12.2016

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

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

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

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

person Roger Dahl    schedule 23.03.2012
comment
С GCN (Graphics Core Next) AMD перешла от SIMD и VLIW к архитектуре, более похожей на NVIDIA (SIMT и более гибкое планирование инструкций). - person Aleksandr Dubinsky; 07.10.2013
comment
@AleksandrDubinsky: И с аппаратным обеспечением Compute Capability 3.0 NVIDIA приблизилась к AMD, удалив динамическое планирование. Я думаю, что их архитектуры сходятся где-то посередине. - person Roger Dahl; 07.10.2013
comment
Я слышал это раньше, но не нашел конкретной информации. Где я могу найти более подробную информацию об этом? - person Yakov Galka; 28.03.2015

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

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

Я не тестировал CUDA, но сомневаюсь, что он может волшебным образом решить мои проблемы с произвольной выборкой из памяти. В настоящее время CUDA и OpenCL более или менее одинаковы, и я вижу больше в OpenCL, чем в CUDA. Основная причина в том, что Intel запускает драйверы с OpenCL для своих процессоров. Это будет огромный прогресс в будущем (выполнение 16, 32 или 64 потоков OpenCL в ЦП ДЕЙСТВИТЕЛЬНО быстро и действительно легко переносится на графический процессор).

person DarkZeros    schedule 26.05.2011

Потратив некоторое время на 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, подходящую для надежной работы при высоких нагрузках на сервер.

  • Новый Maxwell намного более энергоэффективен.

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

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

person Vladimir Tankovich    schedule 25.10.2014
comment
Спасибо за свежий ответ. Можете ли вы уточнить, в каких единицах, вероятно, будет на 10 быстрее? Процентов? - person Aleksandr Dubinsky; 20.01.2015
comment
Личное мнение: в свое время карты ATI были в некотором смысле лучше, чем Nvidia, но не имели поддержки обновления драйверов, и со временем AMD полностью выкупила ATI, тогда как Nvidia остается той же компанией. Кроме того, Nvidia по-прежнему имеет лучшую поддержку обновлений драйверов. Это больше относится к пользовательской стороне карт для производительности с приложениями. Не поймите меня неправильно, обе технологии по-своему хороши, и у обеих есть дешевые карты низкого уровня, а также более дорогие карты высокого класса. Со временем я перешел с ATI на Nvidia. Что касается разработки, у Nvidia гораздо лучший набор функций и программируемый API или библиотека. - person Francis Cugler; 21.12.2016

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

У Nvidia также есть программа поддержки академических исследований, можно подать заявку на поддержку, я только что получил карту TESLA 2075, чему я очень рад. Я не знаю, поддерживает ли ATI или Intel исследования таким образом.

Что я слышал об OpenCL, так это то, что он пытается быть всем сразу, это правда, что ваш код OpenCL будет более переносимым, но он также, вероятно, не будет использовать все возможности любой из платформ. Я бы предпочел узнать немного больше и написать программы, которые лучше используют ресурсы. С TESLA K10, который только что вышел в этом году, Nvidia находится в диапазоне 4,5 терафлопс, поэтому неясно, отстает ли Nvidia ... однако Intel MIC могут оказаться настоящим конкурентом, особенно если им удастся переместить блок GPGPU в материнская плата. Но пока я выбрал Nvidia.

person Andras    schedule 04.09.2012
comment
Взгляните на ответ @ AndrewCooke, чтобы узнать мнение о (отсутствии) поддержки NVidia. - person Aleksandr Dubinsky; 20.01.2015

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

person virtuallinux    schedule 09.01.2011

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

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

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

person Salman Ul Haq    schedule 10.01.2011

Cuda, безусловно, популярнее OpenCL на сегодняшний день, поскольку он был выпущен на 3 или 4 года раньше OpenCL. С тех пор, как был выпущен OpenCL, Nvidia не внесла особого вклада в язык, поскольку они в значительной степени концентрируются на CUDA. Они даже не выпустили версию openCL 1.2 ни для одного драйвера.

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

person shunya    schedule 07.04.2013

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

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

  • если вам нужна лучшая производительность за деньги, вы будете нацелены на карты геймеров, а не на «профессиональные» карты, и гибкость ориентации на разные платформы отдает предпочтение opencl.

  • в частности, если вы только начинаете, cuda будет более отточенной и иметь больше инструментов и библиотек.

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

person andrew cooke    schedule 27.02.2012
comment
Аналогичный опыт с поддержкой nvidia: сбой в libcuda.so (только с OpenCL, CUDA работает) и никакого ответа от них вообще. - person eudoxos; 09.03.2012
comment
С нашим дилером у нас нет проблем с заменой мертвого tesla, обычно мы получаем новое оборудование до того, как отправим неисправное, так что я предполагаю, что это проблема не NVidia, а проблема вашего дилера. - person Gaetano Mendola; 02.05.2012
comment
Я думал, что Tesla супер-надежная. Какой маркетинговый фад. - person Aleksandr Dubinsky; 07.10.2013
comment
OpenCL не является переносимым с точки зрения производительности, поэтому невозможно переключаться на поставку каждый раз, когда одна компания выпускает новый флагман (без поддержки двух оптимизированных веток кода). Кроме того, поддержка OpenCL NVIDIA отстает на несколько версий и, как я подозреваю, в плохом состоянии. - person Aleksandr Dubinsky; 20.01.2015