- PVSM.RU - https://www.pvsm.ru -
На первой недели сентября этого года вышла в свет новая версия продукта Intel Parallel Studio XE 2017. Давайте разбираться, что интересного появилось в ней.
Как обычно, пакет студии доступен в трёх вариантах: Composer, Professional и Cluster Edition.
В первый вариант входят компиляторы (С/С++ и Fortran) и различные библиотеки. Ещё с прошлой версии XE 2016 таковых имелось целых 4 штуки:
В Professional Edition добавляются средства динамического анализа приложений, такие как профилировщик Intel VTune Amplifier, средство для прототипирования параллелизма и работы с векторизацией кода Intel Advisor, а так же поиска ошибок с памятью и потоками Intel Inspector. В флагманской версии Intel Parallel Studio XE Cluster Edition в наших руках весь набор инструментов, который поможет создать и оптимизировать наше приложение уже на кластере, с помощью Intel MPI и средств для работы с ним.
Кроме всего этого имеется библиотека IMSL от сторонних разработчиков Rogue Wave, часто используемая при вычислениях. Она доступна как в пакете с компилятором Fortran, так и как отдельное дополнение. Следующая табличка показывает распределение средств разработки по пакетам:
Важное дополнение во всех версиях студии (и не только) – появился пакет Intel Distribution for Python*, который позволяет использовать Python (2.7 и 3.5), «оптимизированный» заботливыми инженерами компании Intel, на Windows, Linux и OS X. В самом языке ничего нового не появилось, просто пакеты NumPy, SciPy, pandas, scikit-learn, Jupyter, matplotlib, и mpi4py теперь оптимизированы под «железо» с использованием библиотек Intel MKL, TBB, DAAL и MPI, за счёт чего приложение выполняется более эффективно и быстро. Кстати, выкачать этот пакет можно абсолютно безвозмездно с сайта Intel. Там же можно увидеть, чем же так хорош «затюненый» Python:
Очевидно, что производительность Intel Python приближает его по скорости работы к С/Intel MKL, при этом значительно опережая конкурентов. Кстати, хорошо известный профилировщик VTune Amplifier теперь так же поддерживает Python.
Из глобально новых продуктов в пакете Intel Parallel Studio XE это, пожалуй, самое главное.
Теперь о том, что появилось в каждом из составляющих пакета.
По ним я обязательно напишу отдельный, более подробный блог. А здесь, «коротенько» перечислю то, что там появилось:
И это лишь верхушка айсберга. На самом деле изменений огромное количество. В целом, компилятор, как и ожидалось, стал генерировать ещё более производительный код, поддерживая все последние новшества в «железе». А сравнения компилятора Intel на бенчмарках с конкурентами лишний раз доказывает это.
Как видно, на тестах SPECfp и SPECint преимущество версии 17.0 компилятора достаточно внушительное.
Раз уж на рынок вышел процессор второго поколения Intel Xeon Phi (кодовое имя Knights Landing (KNL)), то конечно же в профилировщике появилась поддержка различных типов анализа для него, чтобы ваши приложения просто «полетели» после оптимизации. Здесь и анализ пропускной способности памяти, чтобы понять, какие данные нужно положить в быструю MCDRAM, и микроархитектурный анализ, и анализ масштабируемости MPI и OpenMP, и ещё много всего вкусного.
Кстати, у VTune имеется анализ HPC Performance Characterization, являющийся своего рода точкой входа для оценки производительности вычислительно-интенсивных приложений, и позволяющий посмотреть в деталях (в отличии от Application Performance Snapshot, про который речь пойдёт позднее) на три важных аспекта утилизации «железа» — СPU, память и FPU:
Как я уже говорил, теперь VTune умеет профилировать приложения на Python, выполняя анализ хотспотов через программное сэмплирование (Basic Hotspots analysis). Ещё одно нововведение – возможность профилировать приложения на языке Go, собирая аппаратные события PMU.
Новый тип анализа появился в версии 2017 – анализ дискового ввода-вывода (Disk Input and Output analysis). С его помощью можно отслеживать использование дисковой подсистемы, шин CPU и PCIe:
Кроме того, анализ помогает находить операции ввода-вывода с высокой латентностью, а так же дисбаланс между ними и реальными вычислениями.
Размер максимальной пропускной способности DRAM теперь определяется автоматически при анализе доступа к памяти (Memory Access analysis), позволяя тем самым понимать насколько хорошо она используется. В этом типе анализа так же добавлена поддержка кастомных аллокаторов памяти, что позволяет правильно определять объекты в памяти. Есть возможность соотнести промахи по кэшу к конкретной структуре данных, а не просто коду, приводящему к нему. Кстати, теперь не требуется установка специальных драйверов на Линуксе для выполнения этого анализа.
Дополнения появились и при профилировании OpenCL и GPU. VTune покажет общую сводку по проблемам с подробным описанием:
Кроме этого можно посмотреть исходный код или ASM для ядер OpenCL, а так же отлавливать случаи использование общей виртуальной памяти (Shared Virtual Memory).
Пользоваться профилировщиком удалённо и через командную строку стало ещё проще.
Новая группа Arbitrary Targets позволяет сгенерировать командную строку для анализа производительности на системе, недоступной с текущего хоста. Это может быть весьма полезным для микроархитектурного анализа, так как дает доступ к аппаратным событиям, доступным на платформе, которую мы выбрали:
В пакете с Parallel Studio появляются специальные «легковесные» инструменты, позволяющие получать общее представление о нашем приложении. Они получили вывеску Performance Snapshots, и имеют на данный момент три варианта:
Что они из себя представляют? Рассмотрим, для примера, инструмент Application Performance Snapshot:
Запустив его, на выходе мы имеем выосокоуровневую сводку по тому, где наше приложение может потеницально выиграть. С другой стороны, можем назвать это слабыми местами, которые нужно поправить. Мы получаем время выполнения приложения, производительность в флопсах, а так же ответ на 3 вопроса: как эффективно использовались вычислительные ядра CPU (CPU Utilization), как много мы тратили на работу с памятью (Memory Bound), и как использовался FPU (FPU Utilization). В итоге нам представляется общая картина о приложении. Если CPU Utilization показывает слишком маленькие значения, значит имеются проблемы с «параллельностью» приложения и эффективностью использования ядер. Например, дисбаланс нагрузки, слишком большие накладные расходы при планировке, проблемы синхронизации или же просто большое количество регионов, выполняемых последовательно. Следующая метрика скажет нам, упирается ли приложение в ограничения по памяти. Если цифры велики, значит возможны проблемы с использованием кэшей, ложным разделением данных (false sharing [2]) или мы упираемся в пропускную способность.
Ну а характеристика FPU Utilization может показать, что имеются проблемы с векторизацией (её отсутствием или неэффективностью), при условии наличия вычислений с числами с плавающей точкой.
Начиная с прошлой версии 2016, Advisor получил огромный функционал для работы с векторизацией, который был расширен и улучшен в новой версии.
Конечно появилась поддержка нового поколения Xeon Phi, как и в других средствах, и AVX-512. Например, Advisor может показать использование нового набора инструкций AVX-512 ERI, специфичного для KNL. Но даже если у нас нет пока новой железки, мы сможем получить определенные данные для AVX-512. Для этого необходимо дать указание компилятору генерировать две ветки кода (AVX и AVX-512) для циклов с помощью опций –axMIC-AVX512 –xAVX, а Advisor в своих результатах покажет информацию даже для той ветки, которая реально не выполнялась:
Кроме этого, появилась возможность измерения FLOPS'ов для всех процессоров, за исключением Xeon Phi предыдущего поколения, основанная на использовании инструментации и сэмплирования. Был также улучшен анализ доступа к памяти (Memory Access Analysis), который теперь даст нам ещё больше полезной информации (сравнение с размером кэша, выявление ненужных gather/scatter). В плане удобства использования также ряд улучшений. «Умный режим» (Smart Mode) позволит показать только те циклы, которые нам наиболее интересны, нажатием одной кнопки:
А выбрать сразу несколько типов анализа и запустить их за один раз стало возможным с помощью пакетного режима Batch Mode.
В сухом остатке с новой версией 2017 мы имеем большой набор новых фич, которые обязательно будут полезны при оптимизации приложений для разработчиков во всех областях. Попробовать в течение 30 дней новую версию можно, как всегда, абсолютно безвозмездно на этой страничке [3], как говорит один мой коллега: «С регистрацией, но без SMS».
Автор: Intel
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/196373
Ссылки в тексте:
[1] этой: https://software.intel.com/en-us/articles/c14-features-supported-by-intel-c-compiler
[2] false sharing: https://habrahabr.ru/company/intel/blog/143446/
[3] страничке: https://software.intel.com/en-us/intel-parallel-studio-xe/try-buy
[4] Источник: https://habrahabr.ru/post/311160/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.