LINUX.ORG.RU
ФорумTalks

CPU vs GPU догоняет потихоньку

 ,


0

2

Просто результаты сравнительного теста Ryzen 9 3900X и Radeon RX580

AIDA64 GPGPU Benchmark (скромно потупясь, да-да, под оффтопиком запускал, но это непринципиально)

Radeon RX580Ryzen 9 3900X
Memory Read13063 MB/s41410 MB/s
Memory Write12827 MB/s39449 MB/s
Memory Copy186053 MB/s43695 MB/s
Single-Precision FLOPS6264 GFLOPS1579 GFLOPS
Double-Precision FLOPS391.5 GFLOPS789.1 GFLOPS
24-bit integer IOPS6260 GIOPS393.4 GIOPS
32-bit integer IOPS1253 GIOPS393.7 GIOPS
64-bit integer IOPS313.2 GIOPS98.59 GIOPS
AES-25633429 MB/s109151 MB/s
SHA-1 Hash73763 MB/s37069 MB/s
Single-Precision Julia947.4 FPS583.6 FPS
Doble-Precision Mandel74.36 FPS308.1 FPS

Как сказано, на CPU использовался не OpenCL, а специально оптимизированные программы для вычислений, да и карточка уже далеко не топовая, но тем не менее. Видно, что в некоторых случаях CPU даже быстрее, а почти во многих не принципиально отстает.

Особенно интересно, что в таком очень важном для вычислений вопросе как скорость вычислений с плавающей запятой с двойной точностью (64 бита) процессор уже в два раза быстрее обычной карточки.

Топовые процессоры типа TR 3990x наверное и вообще быстрее будут. История развивается по спирали? С CPU начали массивно-параллельные задачи переносить на GPU, но по мере нарастания гонки ядер обычных CPU преимущества вычислений на видеокарте слабеют.

★★★★★

В задачах, где игровой GPU хорош, CPU его ещё не догнали и никогда не догонят за счёт более узкой специализации первого. Начнём с того, что карта стоит 15 т.р. а процессор 42.5 т.р. и это цены по первой ссылке, которую я нашёл - реально б/у варианты карт после майнинга можно найти сильно дешевле.

Memory Read, Memory Write - судя по значениям это скорость PCI-express на твоей машине. Видимо карта одна, воткнута куда надо - в первый 16-лэйновый слот. Пиковая теоретическая скорость должна быть около 16 ГБ/c. У CPU времена read, write и copy плюс-минус одинаковые из-за того что оперативка подключена к CPU. На GPU видим что read/write - через PCI, а copy сильно быстрее - это уже работает контроллер памяти на GPU, он значительно быстрее по пропускной способности чем CPU-шный (в 4.25 раз уже давно не супер-карта обгоняет жирненький проц).

Single-Precision FLOPS в 4 раза больше чем на 24-ядерном процессоре. А вот с double видно что у процессора скорость только в два раза ниже, а у GPU - ровно в 16. Это нормально для игровых карт, так и заявлено в характеристиках. Есть профессиональные решения, в которых double на GPU только в два раза медленнее чем float. Но в играх такие вычисления не нужны, на игровых чипах их вырезают.

AES-256 - на CPU есть AES-NI, т.е. сравнивается по сути аппаратная реализация на CPU с софтварной на GPU. В Ryzen есть инструкции также и для ускорения семейства хешей SHA1, SHA256 - не знаю, используются ли они в тесте, может и да.

Итого, плюсы GPU - быстрая шина памяти внутри GPU, много ядер которые позволяют поддержать огромную производительность float, для double нужны профессиональные карты для вычислений.

CPU - много специальных команд для частых задач, обычная память но с хорошим кэшированием, double всего в два раза меньше по производительности чем float.

Особенно интересно, что в таком очень важном для вычислений вопросе как скорость вычислений с плавающей запятой с двойной точностью (64 бита) процессор уже в два раза быстрее обычной карточки.

Я вижу обратную тенденцию - когда-то игровые GPU просто не умели работать с double, а сейчас работают с 1/8 - 1/16 от производительности float.

Из любопытного - на GPU 24-битная целая арифметика работает с огромной скоростью, такой же как float - за счёт переиспользования вещественных ALU. А на CPU, который в основном и работает с целыми числами - 24-битные по скорости как 32-битные. А есть ли там вообще 24-битные инструкции, на CPU? Я таких не знаю. Если их нет - то очень логично что скорость как на 32-битных. Также эта скорость равна половинке от скорости даблов. Видимо из-за отсутствия инструкций типа multiply-add (mad), которые есть на GPU в том числе для 24-битных чисел.

tim239 ()

Ryzen 9 3900X и Radeon RX580

Предлагаю более наглядный тест - RX550 и 3990WX

devl547 ★★★★★ ()
Ответ на: комментарий от WitcherGeralt

плюсую, моя rx590 выдаёт стабильные 30fps в фуллхд на ультрах во всех играх.

eR ★★★★★ ()
Ответ на: комментарий от tim239

В задачах, где игровой GPU хорош, CPU его ещё не догнали и никогда не догонят за счёт более узкой специализации первого.

Ну в общем да. Однако заметно и то, что вначале эпохи GPGPU разрыв был где-то даже 50-100 кратным, сейчас порядке 10-кратного, даже если взять топовую видеокарту.

Начнём с того, что карта стоит 15 т.р. а процессор 42.5 т.р. и это цены по первой ссылке, которую я нашёл - реально б/у варианты карт после майнинга можно найти сильно дешевле.

42.5 т.р - это жлобская цена, реально купить за 30 т.р., правда сейчас наверное за 32, т.к. доллар вырос.

Single-Precision FLOPS в 4 раза больше чем на 24-ядерном процессоре.

На 12-ядерном.

Я вижу обратную тенденцию - когда-то игровые GPU просто не умели работать с double, а сейчас работают с 1/8 - 1/16 от производительности float.

Первая версия куды не поддерживала double вообще. Потом у nvidia-карт разница была примерно 1/4 пока не стали специально кастрировать неспециализированные карты, причем есть подозрение, что софтово в драйверах, аппаратно они могли бы быть быстрее.

Из любопытного - на GPU 24-битная целая арифметика работает с огромной скоростью, такой же как float - за счёт переиспользования вещественных ALU. А на CPU, который в основном и работает с целыми числами - 24-битные по скорости как 32-битные.

Кстати, я только сейчас обратил внимание на еще более любопытный факт: у CPU Ryzen получается, что в данном тесте вещественные операции вообще быстрее целочисленных! Притом очень существенно быстрее в 3-5 раз.

Надо будет как-то на чем-то еще протестить. Если это реально так, то очень интересно.

praseodim ★★★★★ ()
Последнее исправление: praseodim (всего исправлений: 1)

Просто результаты сравнительного теста Ryzen 9 3900X и Radeon RX580

Ты бы его ещё S3 Virge сравнил.
Сравнивать надо с актуальными картами, сейчас это Vega, вот с ней сравнение и давай.

torvn77 ★★★★★ ()
Ответ на: комментарий от torvn77

Что было с тем и сравнивал. И RX580 хотя уже и не топ, но еще вполне годная, чтобы в fullhd на средних и даже местами на высоких играть во все современные игры.

praseodim ★★★★★ ()
Radeon RX580Ryzen 9 3900X
Memory Read13063 MB/s41410 MB/s
Memory Write12827 MB/s39449 MB/s

Невероятно мало. GPU на видеоускорителях значительно лучше подключено к памяти чем CPU.

gag ★★★★★ ()
Ответ на: комментарий от gag

Невероятно мало. GPU на видеоускорителях значительно лучше подключено к памяти чем CPU.

Обмен идет через pci-e. В любом случае, если загуглишь AIDA64 GPGPU Benchmark более высокие результаты только у сразу нескольки, например, сразу 8 карт. А так это типичные скорости. 16 Гб/сек - это теоретический максимум для PCI-E 3.0.

praseodim ★★★★★ ()
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от praseodim

Обмен идет через pci-e.

Это что-то не то меряют тогда. Memory throughput для GPU это не CPU <–PCIe–> GPU <-> GDDR5, а GPU <-> GDDR5. Т.е. нужно было запускать opencl kernel на GPU, который напрямую читает/пишет локальную память. И получить что-то до 256 ГБ/с.

gag ★★★★★ ()
Ответ на: комментарий от gag

Т.е. нужно было запускать opencl kernel на GPU, который напрямую читает/пишет локальную память. И получить что-то до 256 ГБ/с.

Ну у Memory Copy примерно такой порядок и получился. 180 Гб/сек где-то.

praseodim ★★★★★ ()
Ответ на: комментарий от praseodim

А Memory Read, Memory Write тогда можно было бы спокойно переписать как PCIe Memory Read/Write. Ведь если пропускная способность шины посредника меньше, чем измеряемой, то, ясное дело, что мы измеряем тогда только шину-посредника.

gag ★★★★★ ()
Ответ на: комментарий от praseodim

Зачем вообще играть в современные игры на среднем? На среднем они выглядят хуже чем игры выглядели 10 лет назад, а на низком натурально первый квейк.

WitcherGeralt ★★ ()
Ответ на: комментарий от WitcherGeralt

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

praseodim ★★★★★ ()
Ответ на: комментарий от kirk_johnson

Да боже, даже хвалимый всеми Ведьмак жрет ресурсы просто как тварь.

Да камон. Ты должен знать о трейдоффе производительности и памяти. Видимокарт на 32 гига, чтобы положить всё что надо и не дрочить и проц, и видимокарту даже сейчас особо нету, а на релизе ведьмака совсем не было.

Stil ★★★★★ ()
Ответ на: комментарий от WitcherGeralt

на ультрах всё блестит, сверкает так, что блевать хочется

next_time ★★★★★ ()
Ответ на: ТВОЮЖМАТЬ от Stil

Есть такая фича в разметке markdown, почитай ее описание.

praseodim ★★★★★ ()
Ответ на: комментарий от deep-purple

да тебе не угодишь ))

надо просто стараться лучшее и успех тебя настигнет ))))

yax123 ★★★★ ()
Ответ на: комментарий от WitcherGeralt

Да, решают. Из-за этого я в них и не играю практически.

peregrine ★★★★★ ()

кто на ком стоял?

вообще-то это процессоры совершенно разного назначения. смысл сравнивать каких-то попугаев?

Iron_Bug ★★★★★ ()
Ответ на: комментарий от Iron_Bug

вообще-то это процессоры совершенно разного назначения. смысл сравнивать каких-то попугаев?

Сравниваются не вообще, а для вычислительных целей.

Совсем совершенно разные, это например, DSP и CPU, а тут GPU используемый для векторно-матричных вычислений. Для этой же цели есть векторные инструкции в обычном CPU.

Собственно, вспомни, как раз лет 15 назад пошла сначала экзотика - использовать видеокарту для вычислений (а не для построения графики), которые делали через манипуляции с шейдерами в OpenGL, а потом сначала Nvidia завела CUDA, потом и другие (AMD/ATI) подтянулись. А может даже формально раньше были, но Nvidia лучше распиариалась и качественне инструменты и SDK тогда выпустила.

praseodim ★★★★★ ()
Ответ на: комментарий от praseodim

так DSP это вообще пустая матрица, что хочешь, то и делай. а GPU - это поделие, которое на DSP когда-то накорябали для всякой графики, а вовсе не для вычислений. оно и рассчитано на графику в основном.

и это всё глухая проприетарщина, а стало быть ненужно. открыты только слабые карты и там полтора шейдера. и сам SDK тоже проприетарщина, что удваивает ненужность. а OpenCL почти никто не поддерживает.

Iron_Bug ★★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 3)
Ответ на: комментарий от Iron_Bug

так DSP это вообще пустая матрица, что хочешь, то и делай.

Ты с FPGA не путаешь? DSP - это процессор для обработки сигналов, например, звука.

а GPU - это поделие, которое на DSP когда-то накорябали для всякой графики, а вовсе не для вычислений. оно и рассчитано на графику в основном.

Но однажды заметили, что хорошо параллелящиеся вычисления можно очень нехило ускорить на GPU. Отсюда в том числе и майнинг на видеокартах и физические расчеты, например, гидродинамики какой-нибудь etc.

а OpenCL почти никто не поддерживает.

Не совсем никто, даже вроде выпустили версию TensorFlow под OpenCL, вернее можно собрать с его поддержкой. Ну то есть, CUDA как бы сейчас стандарт для нейросеток, но все же альернатива тоже доступна.

А тест показывает, что в некоторых случаях, можно не морочиться с портированием на видеокарту, а использовать обычное распараллеливание под обычный CPU.

praseodim ★★★★★ ()
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от praseodim

ну, DSP - это частный случай FPGA-шки. конечно, сам по себе он неинтересен и очень ограничен. вот и GPU тоже очень ограничен. это аггломерат, заточенный под конкретные задачи. и сейчас они очень огорожены и поэтому неприменимы в опенсорце. альтернативы очень слабо поддерживаются.

в CPU сейчас беда с архитектурой. они плодят кучу немощных ядер. вместо того, чтобы сделать несколько очень мощных. куча немощных не решает многих задач, на самом деле. это и есть почти аналог шейдеров. а на мощные ядра никто не замахивается, давно упёрлись в производительность. пока это так, разницы между CPU и GPU не будет. ну, кроме того, что в GPU нужна прогрузка самих задач и данных ещё (и всё это через задницу, то есть, через PCIe), а CPU и так умеет жрать данные с шины, без всяких специальных SDK и компиляторы опенсорцные.

Iron_Bug ★★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 4)
Ответ на: комментарий от praseodim

лет 15 назад пошла сначала экзотика - использовать видеокарту для вычислений (а не для построения графики)

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

Сейчас уже сложно найти, но 2007, когда интернет ещё не был завален информацией про GPGPU, можно было найти эксперименты по использованию DSP звуковых карт для вычислений. Начало 2000-х, возможно, даже раньше.

i-rinat ★★★★★ ()

А ещё у чипов масса примерно одинаковая и рабочая температура. Че сказать-то хотел.

t184256 ★★★★★ ()
Ответ на: комментарий от tim239

Там всё открыто, в том числе компилятор.

А вот и нет, если верить https://github.com/RadeonOpenCompute/ROCm#closed-source-components

The ROCm platform relies on some closed source components to provide functionalities like HSA image support. These components are only available through the ROCm repositories, and they may be deprecated or become open source components in the future. These components are made available in the following packages:

• hsa-ext-rocr-dev

То есть, вроде как в чем-то дополнительном, но тем не менее

praseodim ★★★★★ ()
Ответ на: комментарий от praseodim

так надо было жирным выделить лидера в каждой категории, я это подразумевал.

ZERG ★★★★★ ()
Ответ на: комментарий от Iron_Bug

ну, DSP - это частный случай FPGA-шки. конечно, сам по себе он неинтересен и очень ограничен. вот и GPU тоже очень ограничен.

Не знаю, как было 50 лет назад, но в последние 15+ лет DSP - это, насколько я знаю, такой себе микроконтроллер, который может всего пару инструкций при определённых условиях выполнять параллельно (в основном для MAC). Чтобы заменить не самый маленький FPGA, нужны десятки DSP. По цене получается, что FPGA немного дешевле и проще для дизайна платы, т.к. всего 1 чип. Но таки сложнее, чтобы спроектировать эффективный цифровой дизайн для него. Скорее всего поэтому эра DSP и в закате.

А вот GPU из-за его массивной параллельности действительно можно было бы сравнить с FPGA, в который намертво зашит один дизайн. Например, эффективно майнить можно было как на GPU, так и на FPGA.

gag ★★★★★ ()
Ответ на: комментарий от tim239

так а много ли карт его поддерживают? имеются в виду, конечно, опенсорцные драйвера. проприетарщина с закрытыми блобами неинтересна.

Iron_Bug ★★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 3)
Ответ на: комментарий от gag

да, чистые DSP-шки сейчас только в ширпотребе типа плееров и всяких примочек встречаются разве что. они неинтересны для разработки чего-то более сложного. но FPGA не дешевле. современные FPGA-шки до нескольких сот евро могут стоить. это недешёвые чипы. и под них нужен свой софт, а под GPU и CPU всё написано давно. но GPU всё равно на шине типа PCIe сидит и из-за этого тормозит всяко больше, чем проц, который напрямую к адресной шине подключен. он годится только для однообразных векторных вычислений, где данные последовательно скармливаются. CPU же может выполнять более разнообразные задачи.

Iron_Bug ★★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от Iron_Bug

Тут можно быть спокойным - ни одну карту на проприетарном блобе ROCm не поддерживает. Поэтому он, например, никак не работает под оффтопиком. Актуальные карты на GCN поддерживаются: Hardware to Play ROCm.

Navi - пока нет, но они в плане вычислений вообще туго поддерживаются под онтопиком, видимо инженеров в AMD на эти цели выделено совсем мало.

tim239 ()
Ответ на: комментарий от praseodim

Кстати, я только сейчас обратил внимание на еще более любопытный факт: у CPU Ryzen получается, что в данном тесте вещественные операции вообще быстрее целочисленных! Притом очень существенно быстрее в 3-5 раз.

Вообще 24-битное целое влезает в мантиссу 32-разрядного числа с плавающей точкой. И производительность у этих двух режимов совпадает (6260 и 6264), так что скорее всего операции с целыми числами оно делает запихивая их во float.

dyb4hzvo ()
Ответ на: комментарий от tim239

надо бы мне этот ROCm посмотреть поближе. с первого взгляда выглядит интересно, но в эксплуатации могут оказаться какие-нибудь сюрпризы.

Iron_Bug ★★★★★ ()
Ответ на: комментарий от praseodim

не, железо - это понятно. к нему должны быть дрова без блобов, как минимум. если под такое дело делать машину - то специально под неё конфигурацию собирать.

Iron_Bug ★★★★★ ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)