Матрицы для процессоров производятся в России
Обновлено: 21.11.2024
Мне интересно, насколько вычисления на GPU помогут мне ускорить моделирование.
Важнейшей частью моего кода является умножение матриц. В основном код выглядит как следующий код Python с матрицами порядка 1000 и длинными циклами for.
Примечание. Мои матрицы плотные, в основном случайные, а циклы for компилируются с помощью cython.
Моя наивная догадка состоит в том, что у меня есть два фактора:
- Больше параллельных потоков (в настоящее время поток порядка 1, потоки графического процессора порядка 100?) --> Ускорение порядка 100? [Источник сильно устарел, с 2011 года]
- Пониженная частота процессора (в настоящее время 3 ГГц, графические процессоры обычно 2 ГГц) --> игнорировать
Я полагаю, что эта точка зрения слишком наивна, так что же я упускаю?
Я предлагаю начать с PyCUDA, если это позволяет ваш графический процессор. Отличная библиотека, которую я использовал в прошлом с numpy.
3 ответа 3
Производительность умножения матриц
Если вы используете numpy , вы, вероятно, используете одну из библиотек BLAS в качестве вычислительной базы, такую как ATLAS, OpenBLAS, MKL и т. д. Если вы используете самую быструю MKL, вы можете найти недавний тест производительности здесь, между новейший графический процессор Nvidia K40m и 12-ядерный процессор Intel Xeon E5-2697 v2 с тактовой частотой 2,70 ГГц
где K40m в 6 раз быстрее, чем 12-поточный E5-2697. Учитывая, что MKL хорошо масштабируется на многоядерных процессорах. K40m примерно в 72 раза быстрее, чем однопоточный E5-2697. Также обратите внимание, что 1000-dim — это почти нижняя граница для полного использования как GPU, так и CPU. Меньший размер матрицы обычно приводит к большему снижению производительности графического процессора.
Если вы используете более медленный сервер BLAS для numpy , скажем, ATLAS с лицензией GNU. Затем вы можете найти сравнение между MKL и ATLAS здесь
где MKL в 2–4 раза быстрее, чем ATLAS.
Для графических процессоров Nvidia единственным широко используемым бэкэндом является CUDA cuBLAS, поэтому производительность не изменится так сильно, как ATLAS по сравнению с MKL.
Передача данных
Как говорит @janbrohl, передача данных между оперативной памятью хоста и памятью графического процессора является важным фактором, влияющим на общую производительность. Вот эталон скорости передачи данных.
Учитывая размер матрицы, вы можете рассчитать абсолютное время для вычислений и передачи данных соответственно. Это может помочь вам лучше оценить эффективность.
Чтобы максимизировать производительность на графическом процессоре, вам, вероятно, потребуется перепроектировать программу, чтобы свести к минимуму передачу данных, перенеся все вычислительные операции на графический процессор, а не только на умножение матриц.
Эльбрус-8С МЦСТ не получил одобрения крупнейшего банка России.
СберИнфра, технологическое подразделение Сбера, крупнейшего российского банка, оценило российские процессоры МЦСТ Эльбрус-8С в различных рабочих нагрузках, но результаты оказались крайне неутешительными, и процессоры не прошли тест. В качестве основных причин сбоя тестировщики назвали «Недостаточно памяти, медленная память, мало ядер, низкая частота. Функциональные требования вообще не были выполнены». Однако надежда есть, считают инженеры СберИнфры.
Доморощенное оборудование…
В рамках продолжающегося конфликта с западным миром после аннексии Крыма в 2014 году и продолжающейся войны против Украины Россия публично заявила о своем намерении заменить аппаратное и программное обеспечение, разработанное в США и Европе, собственными технологиями. С аппаратной стороны это означало переход с x86-платформ AMD Epyc и Intel Xeon Scalable на собственные ЦП, такие как процессоры МЦСТ «Эльбрус», основанные на проприетарной VLIW-подобной архитектуре, а также SoC на базе Arm от Baikal Electronics.< /p>
На данный момент некоторые российские государственные учреждения и компании, контролируемые государством, внедрили системы на базе «Байкал» и «Эльбрус». Но когда дело доходит до критически важных серверов, никто не использует доморощенные машины. Это происходит в значительной степени из-за того, что большинство машин российского производства имеют меньшее количество ядер (по сравнению с основными серверами), недостаточный объем медленной и устаревшей памяти, низкие тактовые частоты и плохую оптимизацию программного обеспечения «из коробки».
«Сервер Эльбрус-8С очень слаб по сравнению с Intel Xeon Cascade Lake», — сказал Антон Жбанков, представитель СберИнфры, на конференции Elbrus Partner Day (через ServerNews.ru) в начале этого месяца. "Недостаточно памяти [256 МБ], медленная память, мало ядер, низкая частота. Функциональные требования не выполнены вообще."
- Эльбрус-8С: 8C/8T, 1,30 ГГц, 16 МБ L3, расчетная мощность 70 Вт, четырехканальная память DDR3-1600, 28 нм, 250 FP64 GFLOPS
- Intel Xeon Gold 6230: Cascade Lake-SP, 20C/40T, 2,10–3,90 ГГц, 27,5 МБ L3, 125 Вт TDP, 14 нм
- Эльбрус-8CB: новая микроархитектура, 8C/8T, 1,50 ГГц, 16 МБ L3, TDP 90 Вт, четырехканальная память DDR4-2400, 28 нм, 576 FP64 GFLOPS
По сути, оценка СберИнфры стала первым углубленным тестированием платформы «Эльбрус-8С» в банковском приложении. Оценщики сравнили двух- и четырехпроцессорные машины Эльбрус-8С (от 16 до 32 ядер на коробку) с двухпроцессорным сервером на базе процессора Intel Xeon Gold 6230, который компания использует в настоящее время. СберИнфра не смогла протестировать более мощный Эльбрус-8СВ, так как он до сих пор недоступен, несмотря на то, что официально представлен.
…Не может конкурировать со стандартными деталями
Являясь одним из крупнейших банков в Европе, который предлагает гораздо больше услуг, чем просто банковские услуги, Сбер предъявляет определенные требования к оборудованию и имеет собственную методологию тестирования для оценки машин, которые он рассматривает для развертывания. Эта методология включает следующее:
- Функциональное тестирование (44 параметра, чтобы убедиться, что платформа может запускать то, что нужно Сберу, и может управляться так, как это нужно Сберу);
- Синтетическое тестирование (с использованием PGbench из пакета PostreSQL, а также SPEC CPU 2017);
- Тестирование приложений (с использованием приложений Java).
Каждый сервер начинается с его шасси и некоторых общих функций, таких как удаленное управление, которые Sber оценивает в рамках своей процедуры функционального тестирования. Судя по всему, машина МЦСТ «Эльбрус-8С» не прошла 84% функционального тестирования Сбера, так как ее нельзя было легко снять со стойки, отсутствовали надлежащие светодиодные индикаторы и поставлялась без удаленного управления, что в значительной степени делало ее непригодной для использования в коммерческих центрах обработки данных. . Однако надежда есть.
«Одним из удивительных моментов в сервере «Эльбрус-8С» было то, что это реальный продукт, — сказал Жбанков. «Это был настоящий сервер, который нам дали. […] Это реальный продукт со своими недостатками, множеством недостатков, но мы можем с ними работать».
Сводка оценки Эльбрус-8С
4-процессорный Эльбрус-8C против 2-процессорного Intel Xeon Gold 6230 | |
ЦП SPEC 2017 | 2,62 (базовый) ~ в 3,15 (пик) раза медленнее |
PGbench/PostreSQL | 1,7 (профиль только для чтения) ~ в 3,3 (профиль чтения и записи) раз ниже |
Java | Время отклика в 23–26 раз выше |
В то же время в тестах PGbench/PostreSQL машина Xeon Gold 6230 оказалась в 1,7 (профиль только чтение) ~ 3,3 (профиль чтение-запись) раза лучше (по количеству транзакций на 100 000 долларов США), чем сервер Эльбрус-8С в зависимости от рабочая нагрузка, которая значительна, но не намного ниже.
С Java-приложениями или эмулируемыми рабочими нагрузками Java ситуация стала намного хуже для платформы Эльбрус-8С, которая показала в 23–26 раз большее время отклика и не соответствовала ни одному из требований Сбера к качеству обслуживания. По словам компаний, хорошая новость заключается в том, что благодаря оптимизации производительности время запуска и время отклика приложений Java улучшилось. Машина «Эльбрус-8С» по-прежнему была не совсем конкурентоспособна по сравнению с сервером Xeon, но ее производительность можно улучшить с помощью программных настроек.
Потребуются годы, чтобы наверстать упущенное
Но хотя инженеры СберИнфры ожидали, что машина «Эльбрус-8С» будет работать намного хуже и на порядки медленнее, чем машина Intel Xeon Gold 6230 2019 года, даже двух-трехкратная разница в производительности достаточно значительна, чтобы коммерческие компании не стали развертывать платформу, так как это не имеет финансового смысла.
"На данный момент Сбербанк говорит, что нет, мы не можем развернуть машины Эльбрус в нашей экосистеме, но мы приятно удивлены, что это вообще работает", — сказал Жбанков.
Пока есть проблемы даже с самим дизайном системы МЦСТ, поэтому производительность процессора — это то, что ни Сбер, ни любой другой гиперскейлер даже нормально не оценят. Говоря о производительности процессора, компания представила Эльбрус-8СВ несколько лет назад, и ожидается, что он появится в ближайшее время. Этот чип обещает значительно более высокую производительность за счет новой микроархитектуры и улучшенной поддержки памяти. Кроме того, у МЦСТ есть довольно амбициозная дорожная карта серверов, которая включает в себя 12-ядерный процессор «Эльбрус», 16-ядерный процессор, снятый с производства в прошлом году, и даже 32-ядерную систему на кристалле для систем класса PetaFLOPS.
В будущем процессоры МЦСТ «Эльбрус» станут значительно быстрее, чем сегодня. Тем не менее, проблема в том, что у компании уходит огромное количество времени на разработку новых процессоров и вывод их на рынок (например, Эльбрус-8СВ был анонсирован в 2018 году). Поэтому к моменту появления амбициозных 32-ядерных «Эльбрусов» чипы AMD и Intel будут на порядки быстрее и эффективнее по показателю производительности на ватт, чем сегодня. В связи с этим возникает вопрос, догонят ли различные отечественные китайские или российские процессоры процессоры ведущих разработчиков.
Ответ кажется многогранным. Такие компании, как MCST, могут разрабатывать ЦП, которые достаточно хороши для офисных рабочих нагрузок. Такие системы вполне могут быть развернуты правительствами, которые могут доплачивать за поддержку отечественных разработчиков ЦП и не использовать иностранные технологии.Самодельные ЦП также можно использовать для создания суперкомпьютеров, если такие вещи, как масштабируемость и энергоэффективность, не вызывают беспокойства. Однако не похоже, что такие отечественные процессоры в ближайшее время не догонят разработки AMD, Intel и новых разработчиков серверных SoC на базе Arm.
Программное обеспечение Сбера, крупнейшего банка в мире, оценило два серийных чипа МЦСТ «Эльбрус-8С» при различных рабочих нагрузках, но результаты оказались крайне неутешительными. Процессоры провалили тест. В качестве ключевой причины сбоя тестировщики назвали «функциональные требования не всегда обновлялись». Но надежда есть, считают инженеры СберТех.
Доморощенное оборудование
Россия публично заявила о своем намерении заменить программное обеспечение в США и Европе своими отечественными технологиями в рамках продолжающегося конфликта с западным миром после окончания аннексии Крыма в 2014 году и продолжающейся войны против Украины. Что касается аппаратного обеспечения, то это означало переход с платформ X86 на платформы Xeon Scalable со встроенными ЦП, а также процессоры МЦСТ «Эльбрус» на базе проприетарной VLIW-подобной архитектуры и SoC на базе Arm от Baikal Electronics.
На данный момент некоторые государственные компании в правительстве России внедрили системы на базе Байкала и Эльбруса. Но когда дело доходит до критически важных серверов, никто не использует доморощенные машины. В значительной степени это происходит из-за того, что большинство машин российского производства имеют меньшие ядра (по сравнению с основными серверами), слабый объем памяти, неэффективные тактовые частоты и плохую оптимизацию программного обеспечения.
«Эльбрус-8С очень тонкий по сравнению с Intel Xeon Cascade Lake», — сказал Антон Жбанков, представитель СберТех, ранее в этом месяце. «Потери памяти, большие ядра, низкая частота, недостаточно памяти. «Уведомление обо всех.
- Эльбрус 8C: 8,1–28 ГГц 8C, 13,30 ГГц, 16 МБ L3, 70 Вт TDP, четырехканальная память DDR3-1600, 28 нм, 250 FP64 GFLOPS, 200 МГц, 120 МБ RDR2 x 60 ГГц 5×30 ГГц, 168 М.
- Intel’sXeon Gold 6230: Cascade Lake-SP, 20C/40T, 2,10 ГГц, 27,50 МБ L3, 125 Вт TDP, 14 нм.
- Эльбрус 8CB: новая микроархитектура, 8C/8T, 1,50 ГГц, 16 МБ L3, 90 Вт TDP, четырехканальная память DDR4-2400, 28 нм, 576 FP64 GFLOPS, 170 ГГц, 576 ГБ LPS, 170 МГц, 256 кГц , 168 ГБ L3, 45 ч.
Что касается платформы Эльбрус-8С, то оценка была первой из веток. Оценщики сравнили двухпроцессорные машины Эльбрус-8С (16–32 ядра на коробку) с двухпроцессорным сервером, который компания в настоящее время использует на базе процессора Intel Xeon Gold 6230. Несмотря на то, что Эльбрус-8СВ был официально представлен, Сбертех не смог протестировать его столь мощный, как ЭБУ, он пока недоступен для тестирования.
Вы не можете идти против его/ее спецификаций.
Как один из крупнейших банков Европы, который предлагает больше услуг, чем просто банковские услуги, Сбер предъявляет определенные требования к оборудованию и использует собственную методологию тестирования для оценки масштабов машин, в которых его можно сравнивать. За этим методом следует следующее:
- Функциональное тестирование (44 параметра, чтобы определить, может ли платформа работать так, как хочет Сбер, и управлять ею, как только Сберу это нужно);
- Синтетическое тестирование (с использованием PGbench из PostreSQL и SPEC CPU 2017);
- Тестирование приложений (с использованием Java)
Каждый сервер начинается с его шасси и некоторых общих функций, таких как удаленное управление, которые Сбер оценил в своей процедуре функционального тестирования. Судя по всему, машина МЦСТ «Эльбрус-8С» не прошла 84% функционального тестирования Сбера из-за того, что ее нельзя было легко снять со стойки, отсутствовали надлежащие светодиодные индикаторы и развертывание без удаленного управления. Однако коммерческие центры обработки данных не могли его использовать. Ответ немного непродуктивен.
Сервер «Эльбрус-8С» — это реальная вещь, — сказал Жбанков. «Наш сервер был настоящим местом. Это настоящий продукт со своими преимуществами и массой недостатков, но с ними можно работать».
Краткий обзор исследования Эльбрус-8С.
4-процессорный Эльбрус-8C против 2-процессорного процессора Intel Xeon Gold 6230SPEC 20162.62 (базовый) В 3,15 (пиковое время) раз медленнееPGbench/PostreSQL1.7 (профиль только чтение) в 3,3 раза (профиль чтение-запись) нижеJava23 В 26 раз выше время отклика .
В тестах PGbench/PostReSQL машина Xeon Gold 6230 оказалась в 1,7 (профиль только для чтения) и в 3,3 (профиль только для чтения) раз лучше (по количеству транзакций на 100 000 долларов США), чем сервер Эльбрус 8C В зависимости от нагрузки , что значительно, но не значительно ниже.
С Java-приложениями или эмулируемыми рабочими нагрузками Java ситуация развивалась крайне устрашающе для платформы Эльбрус-8С, которая показывала в 23–26 раз большее время отклика и не соответствовала стандартам качества обслуживания Сбера. По словам компаний, хорошая новость заключается в том, что с внедрением Java-приложений она стала более эффективной.Машина «Эльбрус-8С» по-прежнему была не совсем конкурентоспособна с сервером Xeon, но ее производительность можно улучшить программными настройками.
В течение многих лет пришло время наверстать упущенное.
Но хотя инженеры СберТех ожидают, что машина Эльбрус-8С будет работать намного хуже и быстрее, чем машина Intel Xeon Gold 6230 2019 года, даже двух-трехкратная разница в производительности достаточно значительна, чтобы позволить коммерческим компаниям ошибаться. при работе с платформой, потому что нет смысла развертывать решение.
«Но теперь Сбербанк говорит, что нет, мы не можем развернуть машины Эльбрус в нашей экосистеме, но мы удивлены, что это работает, по словам Жбанкова.
На данный момент, даже при самой конструкции системы МЦСТ, это то, с чем Сбер или любой другой гиперскейлер даже обычно не столкнулся бы. Компания представила EOS-8CB несколько лет назад. Ожидается, что он скоро появится. Используя новую микроархитектуру и улучшенную память, этот чип обеспечит гораздо более высокую производительность. В версию МЦСТ включен процессор Эльбрус 11, процессор AMD16, который был заменен в прошлом году, и даже 32-ядерные системы на кристалле для систем класса PetaFLOPS.
Когда-нибудь процессоры МЦСТ «Эльбрус» станут быстрее, чем сегодня. Проблема в том, что компании требуется время на разработку новых процессоров и вывод их на рынок (см. EELBS-AP в 2018 году, анонс EBV). С тех пор, как появились амбициозные 32-ядерные «Эльбрусы», AMD и Intel выпустили более мощные чипы, чем сегодня. Вопрос в том, догонят ли китайские или российские процессоры разработчиков.
Ответ показался мне разнообразным. Такие компании, как MCST, разрабатывают программное обеспечение, которое достаточно хорошо работает для работы в офисе. Эти системы вполне могут быть развернуты правительствами, которые могут доплачивать, чтобы помочь отечественным разработчикам ЦП, но использовать иностранные технологии вместо отечественных. Самодельные ЦП можно использовать для суперкомпьютеров, но уменьшить количество энергии, необходимой для сборки, невозможно. Однако не похоже, что в ближайшее время такие отечественные процессоры догонят AMD, Intel и разработчиков SoC для новых SQL-серверов.
В последние месяцы я работал с компьютерным умножением матриц и провел несколько тестов с использованием openMP и eigen3.
Тесты проводились на следующих машинах:
Процессор Intel Core i7-3610QM с тактовой частотой 2,30 ГГц / 6 ГБ ddr3
Шестиядерный процессор AMD Opteron(tm) 2435 2,60 ГГц (2 процессора) / 16 ГБ
Для openMP использовался следующий алгоритм умножения матрицы на матрицу:
Результаты были следующими:
_________________________Компьютер 1__________Компьютер 2
*Время указано в секундах.
*Размеры матрицы были 2700 x 2500 и 2500 x 2700.
*Инструкции SSE2 были активированы для тестов eigen3.
*OpenMP использует ядра по умолчанию, это все ядра, обнаруженные Windows, включая виртуальные.
Как видите, версия OpenMP работает быстрее на первом компьютере (i7), чем версия eigen3. Однако для компьютера 2 (2x Opteron) производительность полной версии eigen3 превосходит версию OpenMP плюс все тесты, проведенные на компьютере 1.
Есть идеи, почему я получаю такие результаты и почему eigen3 не так быстр на компьютере 1, как на компьютере 2?
Можете ли вы сделать так, чтобы все реализации использовали SSE2? Opteron имеет больше и более быстрые ядра для накачки необработанных тактовых частот памяти, что делает этот тест явно неравномерным. Я бы рекомендовал хотя бы уравнять набор инструкций (путем компиляции) и количество используемых ядер. (набор задач).
@Steve-o Я попробую включить SSE в последовательном режиме и OpenMP и сообщу вам об этом. Количество используемых ядер — это значение по умолчанию для openMP, это все виртуальные процессоры, которые Windows обнаруживает на каждой машине (8 на компьютере_1 и 12 на компьютере_2). Когда вы имеете в виду «прокачку необработанных часов памяти», вы имеете в виду передачу данных ram-cpu?
Вы должны иметь в виду следующее: 1. Eigen3 имеет встроенное распараллеливание матрично-матричных продуктов с использованием OpenMP (если вы компилируете его с -fopenmp) 2. Eigen должен быть скомпилирован с включенной оптимизацией компилятора (-O2 или -O3) и утверждения отключены (-DNDEBUG).
1 Ответ 1
Спасибо за ваши ответы.
Огромная разница между последовательной и параллельной версиями связана с использованием разных алгоритмов. Последовательная версия использует обычный наивный O(N^3) без каких-либо оптимизаций, в то время как параллельные версии являются оптимизированными версиями с использованием блоков. Используя тот же алгоритм, время последовательной версии составляет около 10 (компьютер 1) и 50 (для компьютера 2) — извините, нужно было указать эти значения в первом сообщении.
Разница между производительностью Eigen3 и производительностью OpenMP на первом и втором компьютерах, по-видимому, связана с количеством запущенных потоков и количеством доступных физических процессоров.Мы обнаружили, что производительность Eigen3 ухудшается, если количество запущенных потоков превышает доступное количество физических процессоров, но это не относится к OpenMP
В тестах количество запущенных потоков для обоих случаев было равно общему количеству процессоров (виртуальных + физических).
На компьютере 1 производительность Eigen3 хуже, потому что общее количество процессоров (виртуальные + физические - – из-за гиперпоточности) больше, чем количество физических процессоров.
На компьютере 2 производительность Eigen3 выше, поскольку общее количество процессоров совпадает с количеством физических процессоров. Если мы используем удвоенное количество физических процессоров для количества потоков, производительность Eigen3 также снижается, а openMP фактически немного улучшается.
Читайте также: