Технологии программирования Intel


Intel Parallel Studio, Intel Integrated Performance Primitives, Cluster OpenMP, Компиляторы, VTune, Integrated Performance Primitives,
Math Kernel Library, Intel Thread Checker, Intel Cluster Tools, Intel MPI Benchmarks, Intel MPI Library, Расширения SSE.
Intel Trace Analyzer and Collector


Для поддержки разработки ПО на основе программных инструментов Intel, многие из которых доступны как под ОС семейства Linux, так и под ОС MS Windows, можно создать хорошую инфраструктуру. К числу подобных инструментов относятся:


  • компиляторы,
  • анализаторы производительности,
  • специализированные библиотеки,
  • инструменты для многопоточного программирования,
  • инструменты программирования для кластеров.




Intel Trace Analyzer and Collector - cредство для поиска ошибок и анализа эффективности MPI приложений на основе построения и последующего анализа, визуализации трассы событий (MPI вызовов, пересылок сообщений). ITAC состоит из двух основных частей. Trace Collector и Trace Analyzer а также ряда вспомогательных утилит..




Intel Parallel Studio - комплекс Intel Parallel Studio для многопоточного программирования работает в ОС Windows вместе с Microsoft Visual Studio и помогает разработчикам на всём жизненном цикле приложения: от планирования будущего параллелизма до получения эффективного параллельного приложения.




Intel Integrated Performance Primitives - это набор кросс-платформенных библиотек, содержащих большое количество высокопроизводительных функций, которые могут быть использованы для аудио-, видео-кодеков (например, H.263, MPEG-4), сжатия изображений (JPEG и JPEG2000), обработки изображений (двумерных массивов), обработки сигналов (одномерных
массивов или векторов), сжатия естественной речи, систем компьтерного зрения, криптографических приложений, а также вспомогательные математические функции.




Cluster OpenMP для компиляторов Intel под Linux - простое средство, требующее незначительного изменения кода для расширения параллелелизма OpenMP на кластерные системы под ОС Linux, базирующиеся на 64-разрядной архитектуре Intel.




Компиляторы Intel (языки C/C++, Fortran77/Fortran90) поддерживают и различные уровни оптимизации для 32-х и 64-х разрядных приложений в одном пакете, и технологию параллельного программирования OpenMP, что позволяет создавать эффективные программы для современных многоядерных процессоров. С компиляторами поставляется символьный отладчик Intel Debugger, который может работать в режимах совместимости с gdb или dbx и интегрируется с такими графическими оболочками для отладки, как ddd, Eclipse, Allinea. Отладчиком поддерживаются как многонитевые приложения OpenMP, так и написанные с
использованием интерфейса native threads. Порожденные нити автоматически попадают под контроль отладчика, причем большинство его команд можно применять либо к одной, либо ко всем нитям одновременно.

Текущая версия: 11.0.

Сайт: http://www.intel.com/cd/software/products/asmo-na/eng/compilers/




Анализатор Intel VTune позволяет находить и устранять узкие места, препятствующие повышению производительности программы, за счет сбора, анализа и отображения данных вплоть до отдельных функций, модулей и команд. Замеряя производительность различных участков кода и помогая интерпретировать результаты замеров, VTune позволяет быстро найти участки для оптимизации. Поддерживаются многонитевые приложения для различных операционных систем и разных сред разработки.

Текущая версия: 9.0.

Сайт: http://www.intel.com/cd/software/products/asmo-na/eng/vtune/239144.htm




Библиотека Intel Integrated Performance Primitives предоставляет набор
оптимизированных подпрограмм, которые могут быть использованы для обработки
аудио- и видеоданных, распознавания речи, кодирования JPEG и видео, сжатия
данных, специальной обработки матриц, в решении задач криптографии, векторной
алгебры и обработки сигналов.

Текущая версия: 5.2.

Сайт: http://www.intel.com/cd/software/products/asmo-na/eng/perflib/302910.htm




Библиотека Intel Math Kernel Library широко используется для решения вычислительно сложных задач, где от платформ Intel требуется максимальная производительность. К функциональным возможностям этой библиотеки можно отнести модули линейной алгебры (BLAS, Sparse BLAS, LAPACK и пакет Sparse Solvers), функции быстрых преобразований Фурье (FFT), векторные математические функции (VML), генераторы случайных чисел.

Текущая версия: 9.1.

Сайт: http://www.intel.com/cd/software/products/asmo-na/eng/perflib/mkl/




Анализатор Intel Thread Checker позволяет упростить разработку и сопровождение многопоточных приложений. В паре с Intel Thread Profiler он призван решить большинство проблем, связанных с многопоточностью. Выявляет недетерминировано работающие участки кода, являющиеся причиной трудно находимых "плавающих" ошибок. Определяет ситуации неопределённости порядка записи данных, потерянные нити, блокировки, потерю сигналов, неверно отмененные блокировки. Поддерживает стандарты OpenMP, POSIX и Windows API.
Вообще говоря, Intel Thread Checker не зависит от компилятора, способен работать с любым исполняемым файлом, но в сочетании с компилятором Intel проводит более глубокий анализ.

Текущая версия: 3.1.

Сайт: http://www.intel.com/cd/software/products/asmo-na/eng/threading/219785.htm




Инструменты для программирования кластеров объединены в пакет Intel Cluster Tools. Сюда входит библиотека Intel MPI, оптимизированная параллельная математическая библиотека Intel Cluster MKL и специальный инструмент Intel Trace Analyzer & Collector, предназначенный для создания эффективных масштабируемых параллельных программ.

Текущая версия: 3.0.1.

Сайт: http://www.intel.com/cd/software/products/asmo-na/eng/307696.htm




Хорошим вариантом тестирования производительности системы является использование пакета Intel MPI Benchmarks, ранее известного под названием Pallas MPI Benchmarks. Пакет измеряет базовые характеристики кластерной системы, а также показывает эффективность основных функций MPI, предназначенных для реализации коллективных операций и передачи сообщений между двумя процессами, односторонних операций, функций для выполнения операций ввода/вывода и ряда других.

Текущая версия: 3.0.

Сайт: http://www.intel.com/cd/software/products/asmo-na/eng/307696.htm#mpibenchmarks



Intel MPI Library



Данная реализация MPI основана на mpich2. Её ключевой особенностью является прозрачная поддержка различных коммуникационных сред. Это значит, что в среде с гетерогенной коммуникационной средой можно будет запускать параллельное приложение даже без перекомпиляции. Например, к кластеру на InfiniBand можно подключить ещё несколько узлов через Ethernet или Myrinet и приложения сразу
смогут их использовать.



Это достигается за счёт использования динамического выбора типа коммуникации. Доступные варианты: через общую память, через Ethernet или через любое устройство, поддерживающее RDMA (Remote Direct Memory Access) через библиотеку DAPL. Такая библиотека поставляется с большинством высокоскоростного оборудования, такого как InfiniBand и Myrinet. Несмотря на возможность
динамической поддержки работы приложения с различными коммуникационными сетями, одновременное использование процессоров с различным набором команд не допускается.



Intel MPI Library полностью реализует стандарт MPI-2 и поддерживает работу программ на архитектурах x86, x86_64 и процессорах семейства Itanium. Поддерживаются компиляторы Intel C/C++/F77/F90 версий 8.1 и выше, а также любые компиляторы, совместимые с форматом GNU.



Установка производится запуском скрипта install.sh из каталога, где был распакован архив с дистрибутивом. Для успешной инсталляции необходимо иметь лицензию, которую для удобства установки пакета нужно сохранить в файле. В процессе работы инсталлятор попросит указать каталог для установки (по умолчанию это /opt/intel/mpi/версия), а также путь к файлу с лицензией и набор компонент для установки. Для успешной работы необходимо наличие на узлах и сервере интерпретатора python версии не ниже 2.2.



После установки Intel MPI Library команды компиляции и запуска будут доступны только с указанием полных путей, что, конечно, неудобно. Для комфортной работы на 32-битных процессорах необходимо выполнить скрипт <путь_к_intelmpi>/bin/mpivars.sh, если вы работаете в bash или zsh или <путь_к_intelmpi>/bin/mpivars.csh, если вы работаете в csh или tcsh. На 64-битных процессорах вместо <путь_к_intelmpi>/bin/ пишите <путь_к_intelmpi>/bin64/. Чтобы не выполнять эти действия каждый раз, пропишите их запуск в файлах /etc/profile и/или /etc/csh.cshrc соответственно. Во многих дистрибутивах Linux есть каталог /etc/profile.d, в котором хранится
набор скриптов, выполняющихся bash и tcsh при запуске. Вы можете не "захламлять" /etc/profile и /etc/csh.cshrc, а просто сделать жёсткие ссылки указанных выше скриптов в этот каталог. Символические ссылки, скорее всего, не сработают в силу специфической обработки каталога /etc/profile.d.



Компиляция программ производится обычными скриптами mpicc/mpiCC/mpif77/mpif90. Для запуска программ необходимо предварительно создать файл $HOME/.mpd.conf, с правами на чтение-запись владельцу и запрещением всего остальным (0600). В этом файле необходимо прописать строку 'secretword=', где mpi_secret_word - это произвольный набор символов. Не пишите туда свой пароль!
Убедитесь, что файл доступен на всех узлах кластера. Создайте файл mpd.hosts со списком всех узлов кластера, по одному в каждой строке.



Перед запуском пользовательской программы запустите команду mpdallexit, а затем mpdboot -n , где Nodes_Number - число узлов, перечисленных в mpd.hosts. Для работы с узлами должен быть настроен беспарольный доступ по rsh или ssh. Если используется ssh, то mpdboot надо запускать с ключом -r ssh.



Собственно запуск программ пользователей осуществляется командой mpiexec -n <путь_к_программе>. Если по какой-то причине нужно использовать определённую среду, то можно запретить автоматический выбор, указав mpiexec ключ -genv I_MPI_DEVICE , где параметр device может принимать значения: rdma (использовать библиотеку DAPL), shm (общая память), sock (TCP/IP через Ethernet), ssm (socket+shm) или rdssm (socket+shm+rdma). Если среда была указана явно, то смена среды в динамике становится невозможной.

Текущая версия: 3.0.1.

Сайт: http://www.intel.com/go/mpi




Современные процессоры Intel поддерживают наборы инструкций SSE, позволяющие осуществлять потоковую обработку в режиме SIMD.