Почему AMD Ryzen 2700x в 2 раза медленнее, чем 3-летний ноутбук Intel i7-6820HQ с Python? - PullRequest
0 голосов
/ 27 ноября 2018

Я только что закончил установку настольного компьютера на базе AMD Ryzen 2700x и 32 ГБ оперативной памяти (под управлением Ubuntu 18.04).На работе у меня 3-летняя рабочая станция для ноутбуков с Intel i7-6820HQ и 16 ГБ оперативной памяти (под управлением Windows 10).

Я установил Anaconda на обеих платформах и запустил пользовательский код Python, который в значительной степени опирается наосновные операции с матрицей.Код не требует каких-либо специфичных для GPU вычислений (на моем рабочем ноутбуке их нет).Ryzen работает на частоте 3,7 ГГц, ноутбук i7 работает на частоте 3,6 ГГц.Обе системы были полностью обновлены.

К моему удивлению, код запускается на моем рабочем ноутбуке за 5 минут, а на рабочем столе Ryzen - 10 минут!

Предполагается последняя версия Ryzen 2700x.быть намного быстрее, чем высококачественный 3-летний процессор для ноутбуков Intel, тогда почему он будет в 2 раза медленнее?

  • Это связано с тем, что Ubuntu в некоторой степени неоптималенв отличие от Windows 10 для Ryzen?

  • Это из-за того, что Intel более адекватна симуляции Python, чем AMD?

  • Что-нибудь еще?

Спасибо за помощь в понимании происходящего.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Это проблема программного обеспечения: по умолчанию Anaconda поставляется с MKL от Intel в качестве бэкэнда для BLAS, который намеренно ограничивает скорость AMD.Вы также можете установить версию без MKL, в которой вместо этого используется openBLAS, и вы увидите значительное повышение производительности.Вам не нужно переустанавливать его, просто удалите numpy и mkl, а затем установите numpy, созданный с помощью openBLAS.

0 голосов
/ 27 ноября 2018

операции с единичной матрицей

Intel Skylake имеет значительно лучшую пропускную способность FMA (2 на тактовый 256-битный вектор), чем Ryzen (2 на тактовый 128-битный вектор или 1 на тактовую 256-битовый вектор).См. https://agner.org/optimize/ для деталей микроархива x86.И FLOPS за цикл для Sandy-Bridge и haswell SSE2 / AVX / AVX2 для сводки, включающей Ryzen.

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

Или пропускная способность загрузки / хранения L1d SIMD, где Skylake> 2x Ryzen, способный выдерживать почти 2x 256-битную загрузку + 1x 256-битное хранилищев то время как Ryzen может поддерживать 2x 128-битный доступ к кешу, один из которых может быть хранилищем.

Так что для однопоточной или для каждого ядра пропускная способность Intel вполне разумна в два раза больше, чем дляЯдро Ryzen, для пропускной способности matmul / FMA .


Вы многопоточны, чтобы использовать преимущества всех ядер на каждой машине? 2700x - это 8-ядерный процессор , а 6820HQ - это 4-ядерный чип .

Если ваша рабочая нагрузка может использовать преимущества нескольких ядер, то, возможно, этоограничение пропускной способности кэша L3, которое имеет значение, при условии, что они оба настроены правильно и фактически работают на частоте 3,6 / 3,7 ГГц.Или, может быть, что-то создает разницу в 4 раза на ядро.

...