Мы уже писали о Советчике по векторизации и примеры его применения на простых образцах .
Сегодня мы поделимся информацией о том, как инженеры Intel совместно с исследователями из лаборатории STFC Дарсбери в Великобритании оптимизировали пакет DL_MESO.
ДЛ_МЕСО — научный пакет для моделирования конденсированного состояния на мезоскопическом уровне (да простят меня химики и физики, если я не совсем правильно перевел).
Пакет разработан в лаборатории Дарсбери и широко используется как в исследовательском сообществе, так и в промышленности (компании Unilever, Syngenta, Infineum).
С помощью этого программного обеспечения находятся оптимальные формулы шампуней, удобрений и присадок к топливу.
Этот процесс называется «Computer Aided Formulation» (CAF) — я перевел это как «САПР в области разработки химических формул».
Моделирование CAF — это очень трудоемкая операция, поэтому разработчики сразу же заинтересовались проектом, который был бы максимально производительным.
А DL_MESO был выбран в качестве одного из совместных проектов «Центра параллельных вычислений Intel» (IPCC) между Intel и Hartree. Разработчики DL_MESO хотели воспользоваться возможностями аппаратного векторного параллелизма, поскольку будущие технологии, такие как AVX-512, потенциально могут сделать код до 8 раз быстрее для чисел двойной точности (по сравнению с невекторизованным кодом).
В этом посте мы расскажем вам, как ученые из Дарсбери использовали Vectorization Advisor для анализа кода решеточного уравнения Больцмана в DL_MESO, какие конкретные проблемы они обнаружили и как исправили свой код, чтобы разогнать его в 2,5 раза.
Профильный опрос Что такое советник по векторизации, читайте в первая статья .
Здесь мы перейдем прямо к профилю обзора компонента «Решетка Больцмана».
Около половины общего времени выполнения приходится на десять «горячих» циклов, среди которых нет явных лидеров; каждый тратит не более 12% от общего времени программы.
Эта картина близка к «плоскому профилю», что обычно вредно для программиста.
Ведь чтобы добиться заметного ускорения, придется оптимизировать каждый из циклов отдельно.
Но, к счастью для разработчиков из Дарсбери, Vectorization Advisor может быстро охарактеризовать такие циклы:
- Векторизуемый , Но не векторизован циклы, требующие минимальных изменений кода (обычно с использованием OpenMP4.x) для включения генерации кода SIMD. В эту категорию попадают первые 4 цикла (по процессорному времени).
- Векторизованный циклы, производительность которых можно улучшить простыми манипуляциями.
- Векторизованный циклы, производительность которых ограничена структурой расположения данных.
Оптимизация таких циклов требует более серьёзной переделки кода.
Как мы увидим позже, после устранения проблем с первыми двумя категориями это два наиболее нагруженных цикла.
- Векторизованные циклы, которые уже хорошо работают.
- Все остальные случаи (включая невекторизуемые циклы).
Вкладки «Рекомендации» и «Сведения о диагностике компилятора» позволяют узнать о конкретных проблемах и способах их решения.
В нашем случае третий хотспот («горячий» цикл, да простят меня стражи чистоты языка) в fGetSpeedSite не удалось векторизовать, поскольку компилятор не смог оценить, сколько итераций у него будет. Подробности диагностики компилятора описывают суть проблемы с примером и предложениями по ее решению — добавьте директиву «#pragma Loop count».
Следуя советам, этот цикл был быстро векторизован и переведен из категории 2 в категорию 4.
Даже когда код можно векторизовать, это не обязательно сразу приводит к повышению производительности (категории 2 и 3).
Поэтому важно проверить уже векторизованные циклы на предмет их эффективности.
Простая оптимизация: заполнение вычислительного ядра «равновесного распределения»
Теги: #перевод #Intel Advisor XE #векторизацияb SIMD #кейс #Высокая производительность #разработка веб-сайтов #программированиеint fGetEquilibriumF(double *feq, double *v, double rho)
-
Коллекция Gif: Работа В Офисе
19 Oct, 24 -
Просто Флешка
19 Oct, 24 -
Новая (Новая) Медианомика
19 Oct, 24 -
Как Добавить Библиотеку В Проект?
19 Oct, 24 -
Следующее Поколение Браузеров
19 Oct, 24