@ilyaruski
Студент, C++, Python разработчик.

Из-за чего программа C++ на amd работает быстрее чем на intel?

У меня есть программа, которая реализует блочный метод гаусса с выбором главного элемента по столбцу. Проблема заключается в том что, есть две версии этой программы. Цель написания второй версии была ускорение работы программы. Я провел тестирование на своем пк получил прирост скорости порядка 0.6 от времени работы старой программы. После чего протестировал на других конфигурациях и там моя программа замедлилась.
В моем пк стоит AMD Ryzen 5 5600. Замедление происходит на процессорах intel, а также в качестве эксперимента проводил замеры на архитектуре ARM: m1, m2 pro(на них аналогичное замедление на 20%). Получается так что прирост скорости происходит только на AMD процессоре, что я не могу себе объяснить. Важная оговорка в коде программы не используется специфики процессоров amd. Ускорение работы программы заключалось исключительно в оптимизации матричного умножения( изменил итерацию так, что бы максимально двигаться по кешу), а также в уменьшенении кол-ва шагов метода. С чем может быть связанно это?
P.S. Программа однопоточная
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 2
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Из-за того, что процессоры от разных производителей обладают разной производительностью, внезапно, из-за отличий в архитектуре, командах, транзисторах, частотах, кэшах и во всём остальном. Сюрприз! А еще есть такие факторы как: кэши, оперативная память, дисковая подсистема, запущенные приложения, сервисы, разные ОС, разные чипсеты, разные биосы, да даже вентилятор на процессоре может влиять на производительность, из-за которого турбобуст какой-нибудь включится или выключится, и еще целый вагон других факторов.
Ответ написан
@Zerg89
Есть два варианта, то что вы не использовали в коде не значит что компилятор не использовал оптимизацию под платформу по которую был собран код, для чистоты эксперимента пробуйте пересобрать проект с процом под которым будете тестировать
Второй вариант до банального простой, частота процессора в однопотоке при турбо-бусте процы амд в большинстве случев имеют большую частоту на ядро
Ps и ещё одно вспомнить о p и e ядрах в интелле да и арм(м1,м2) тоже вроде гибриды с разными ядрами в проце
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы