15.09.2020

Новые результаты

Оттестировал новой 64-битной версией программки FPU (x87) на нескольких компьютерах.
Попутно понял, что не совсем правильно построил логику работы теста. Сейчас у меня, если памяти не хватает, то тест на этой размерности пропускается и берется, следующая, большая.
Логика тут простая: при увеличении размерности в 2 раза требуемый объем памяти увеличивается в 4 раза, а производительность падает (теоретически) в 8 раз, то есть при увеличении размерности нужно меньше СЛАУ, что бы провести тест.
Если же использовать только доступную память, то время решения будет слишком маленьким, а погрешность теста ‒ высокая.

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

Параллельно этим размышлениям появилась следующая мысль: видимо, при покупке нового компьютера, если есть цель обеспечить максимальную производительность современного процессора, нужно много памяти. Иначе процессор будет простаивать, ожидая загрузки страниц виртуальной памяти с внешнего ЗУ. Конечно, я тут не имею в виду процессорные обрубки для офисных пиш. машинок.
Минимум сейчас требуется, кмк, 16 ГиБ, рекомендуется 32 ГиБ, ну а если брать топовые процессоры с количеством ядер 8 и больше, то тут нужно все 64 ГиБ.
Для рабочих станции все цифры, мне кажется, надо увеличить минимум вдвое.

А теперь итоги теста.

Как видно, старенький мобильный i3-3227U с 2 ядрами выступает вровень с AMDшным A10-4600M с четырьмя ядрами. Более новый мобильный i5-8300H обгоняет i7-6700HQ какого-то более старого поколения.
А вот свежий бюджетный AMD Ryzen 5 3600 откровенно разочаровывает, так как новый десктопный процессор проигрывает обоим более пожилым мобильным конкурентам от Intel. Всегда почему-то думал, что десктопный процессор должен быть быстрее аналогичного по позиционированию мобильного.

После массы новостей, заполонивших тематические сайты, у меня создалось впечатление, что все же Ryzen должен выступать как минимум вровень с процессорами от Intel. Но нет. По крайней мере по FPU он явно проигрывает.
Правда, есть робкая надежда, что AMDшные процессоры хороши в каких-то иных дисциплинах. Проверю это чуть позже. Ну и понятно, что они точно дешевле Intel, а кроме того, у них есть PCIe 4.0.

Теперь посмотрим на многоядерную производительность в параллельном режиме.


Вот здесь процессор AMD наконец-то продемонстрировал на что он способен. Конечно, он одержал уверенную победу за счет большего количества ядер (6 физических против 4 у мобильных i5 и i7). Надо сказать, что AMD в Ryzen существенно улучшила многозадачность. Более подробно я напишу об этом в отдельном посте.
Интересно посмотреть на аутсайдеров. У i3 2 физических ядра и 4 виртуальных, которые дает Hyper Threading. У A10 вроде как 4 физических ядра и никакого HT. Но сделан A10 по технологии Piledriver, в которой лишь одно FPU на каждые два ядра (кстати, как и у FX-4350). Поэтому эти два процессора, i3 и A10, фактически и выступают на равных в многопоточном тесте, AMD даже оказался чуть-чуть быстрее. А extended (long double), в котором у Intel традиционно преимущество (видимо, память быстрее работе при доступе к невыровненным данным) я в этот раз не тестирую.
 
Ну и наконец диаграмма интегральной производительности.

3 комментария:

  1. Я как-то тоже ожидал что Ryzen победит :( Может AMD забили на x87 и работали только над ускорением SIMD инструкций?

    Вы случайно не пробовали тестировать код без ручной оптимизации на разных процессорах? Delphi, хоть и не очень оптимально, но ведь SSE инструкции использует, интересно на них Ryzen тоже проиграет?

    ОтветитьУдалить
    Ответы
    1. У меня тоже была такая идея, что AMD сосредоточили внимания на других блоках процессора. Но, с другой стороны получается,что Intel почему-то не забросили её?
      Да и насколько я понимаю, там особенно-то нечего оптимизировать, просто копируют с одного тех. процесса на другой... В общем, не понятно...

      >Вы случайно не пробовали тестировать код без ручной оптимизации на разных процессорах?
      Нет, не пробовал. Но я относительно скоро сделаю scalar SSE, там будет видно, хорош ли Ryzen.

      Удалить
    2. > Но, с другой стороны получается,что Intel почему-то не забросили её?
      Может у Intel просто удачнее сразу получилось, а AMD вместо того чтобы улучшать придумал 3DNow, дальше SSE и пошло поехало, про x87 забыли. Но это так пальцем в небо, я понятия не имею что да как на самом деле было.

      > Но я относительно скоро сделаю scalar SSE, там будет видно, хорош ли Ryzen.
      Тогда жду :) Очень интересно, у меня такого парка машин нет.

      По поводу размера памяти, очень сильно от задачи зависит, хотя... памяти много не бывает. Лично мне, для работы, 16 ГБ - это минимум, с меньшим объемом не уверен что смог бы работать, но 32 - намного комфортнее, можно легко держать несколько проектов открытыми, 64 - не было, но думаю не простаивала бы. При этом основной объем памяти не активен, так, чтобы не свопилось. С другой стороны наши Data Scientists иногда и монстры с терабайтом запускают на AWS, и им все мало :)

      Удалить