Санкт-Петербургский государственный университет
Опубликован: 11.10.2012 | Доступ: свободный | Студентов: 955 / 173 | Длительность: 05:14:00
Лекция 1:

Обзор средств разработки высокопроизводительных приложений

Лекция 1: 123 || Лекция 2 >

Message Passing Interface (MPI)

Message Passing Interface (MPI)

Интерфейс Передачи Сообщений, спецификация разработанная в 1993—1994 годах группой MPI Forum, в состав которой входили представители академических и промышленных кругов. Она стала первым стандартом систем передачи сообщений.

MPI. Пример

#include <mpi.h>
#include <stdio.h>
int main (int argc, char *argv[]) 
{
   int ProcNum, ProcRank, tmp;
   MPI_Status status;
   MPI_Init (&argc, &argv);
   MPI_Comm_size (MPI_COMM_WORLD, &ProcNum);
   MPI_Comm_rank (MPI_COMM_WORLD, &ProcRank);
   if(ProcRank == 0){
  printf("Hello world from process %i \n", ProcRank);
  for(int i = 1; i < ProcNum; i++){
       MPI_Recv(&tmp,1,MPI_INT,MPI_ANY_SOURCE,0,MPI_COMM_WORLD, &status);
  printf("Hello world from process %i \n", tmp);
  }
   }
   else
   {
  MPI_Send(&ProcRank,1,MPI_INT,0,0,MPI_COMM_WORLD);
   }
   MPI_Finalize();
   return 0;

Реализации MPI

MPI CHameleon (MPICH)

Свободно распространяемая реализация MPI. Пакет доступен в исходных кодах, поэтому допускает гибкую настройку. Поддерживается работа в различных версиях ОС UNIX, Mac OS и в последних версиях Microsoft Windows.

MPICH соответствует спецификации MPI-2. Поддерживаются различные коммуникационные среды (в т.ч. 10 Gigabit Ethernet, InfiniBand, Myrinet, Quadrics). Пока не поддерживаются системы, гетерогенные по форматам хранения данных. Имеется версия с поддержкой пакета Globus.

LAM (Local Area Multicomputer) MPI

"Opensource" реализация MPI, соответствующая спецификации MPI-1 и, в значительной мере, спецификации MPI-2. LAM поддерживает гетерогенные конфигурации, поддерживает пакет Globus и удовлетворяет IMPI (Interoperable MPI). Поддерживаются различные коммуникационные системы (в т.ч. Myrinet).

IMPI – попытка создания стандарта, обеспечивающего интероперабельность различных реализаций MPI (http://impi.nist.gov/). В настоящее время IMPI поддерживается такими реализациями, как:

  • LAM/MPI
  • MPI/Pro
  • Hewlett-Packard MPI (от версии 1.7)
  • GridMPI

LAM может работать на метакластерных системах.

Intel ® MPI

Входит в состав Intel® Cluster Toolkit. Коммерческая реализация MPI, оптимизированная для архитектуры Intel. Построена на основе MPICH.

Сайт в Интернете:

http://www.intel.com

Microsoft MPI

Входит в состав Compute Cluster Pack SDK.

Ориентирована на работу в среде ОС Microsoft Windows и доступна, в том числе, по лицензии MSDN Academic Alliance. Входит в состав Microsoft HPC Server 2008. Основана на MPICH2, включает дополнительные средства управления заданиями.

Поддерживается спецификация MPI-2.

OpenMPI

"Opensource" реализация MPI-2, разрабатываемая консорциумом представителей академических, научных и индустриальных кругов.

  • Полное соответствие спецификации MPI-2.
  • Поддержка различных ОС.
  • Поддержка различных коммуникационных сред.

Инструменты Intel

Библиотека Intel ® Math Kernel Library (MKL)

Состав библиотеки:

  • BLAS (3 уровня + расширение – уровень 1 для разреженных векторов)
  • LAPACK – вычислительная алгебра, в том числе решение спектральных задач
  • DFT (дискретное преобразование Фурье) – в том числе многомерное. Многопоточная реализация
  • Vector Mathematical Library – математические функции
  • Vector Statistical Library – набор векторизованных генераторов случайных чисел
  • Солверы, предобуславливатели, средства поддержки численного решения дифференциальных уравнений и др.

Оптимизирована для архитектуры Intel ®

Intel ® Integrated Performance Primitives (IPP)

Библиотека готовых компонентов для разработки мультимедийных приложений для вычислительных платформ Intel.

Включает модули для обработки сигналов и выполнения векторных и матричных операций, функции сжатия и распаковки речи и статических/динамических изображений, средства шифрования и обработки аудиоданных и текстовых строк и другое.

Intel IPP обеспечивает прозрачное использование расширенных возможностей процессоров Intel, таких, как технология MMX, наборы команд Streaming SIMD Extensions. Библиотека Intel IPP оптимизирована для работы с процессорами компании Intel.

Библиотека Intel IPP поддерживает 32- и 64-битные операционные системы Windows и Linux, включая встраиваемые версии, такие как Windows Mobile.

Intel ® Threading Building Blocks (TBB)

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

Многоплатформенность: Linux, Microsoft Windows, Mac OS.

Если код написан на языке C++, лучше Intel® TBB. Intel® TBB хорошо подходит, если код в значительной степени объектно-ориентирован и в нем широко используются шаблоны C++ и определяемые пользователем типы.

Если код написан на C или Fortran, лучше выбрать OpenMP, поскольку этот API лучше соответствует стилю структурного программирования.

При использовании C++, если в программе преобладают операции обработки массивов, OpenMP может оказаться удобнее с точки зрения сложности программирования.

Компиляторы

Использование возможностей автоматической оптимизации компилятора может дать значительный выигрыш в производительности. Компиляторы Intel предоставляют большие возможности автоматической оптимизации приложений.

Intel® VtuneTM Amplifier XE

Intel ® VtuneTM Amplifier XE – программный инструмент, позволяющий выявить и локализовать проблемы производительности ПО.

Возможности:

  • сбор различных показателей производительности;
  • отображение данных в различных режимах (system-wide, исходный код и процессорные инструкции);
  • выявление потенциальных проблем производительности и создание рекомендаций по их разрешению.

Intel® Cluster Studio XE

  • Intel® Composer XE – компиляторы C/C++ и Fortran.
  • Intel® Trace Analyzer and Collector – анализ параллельных приложений.
  • Intel® MPI Library – реализация MPI.
  • Intel® MPI Benchmarks – тесты производительности MPI.
  • Intel® VTuneTM Amplifier XE – анализатор производительности.
  • Intel® Inspector XE – инструмент поиска ошибок работы с памятью, реализации многопоточности для приложений C/C++, Fortran, C#.NET.

Intel® Parallel Studio

Advisor

Выявление "кандидатов" на распараллеливание

Composer

  • Intel® C++ Compiler, Intel® Threading Building
  • Blocks, Intel® Integrated Performance Primitives,
  • and Intel® Parallel Debugger Extension.

Inspector

Выявление ошибок использования памяти (утечки памяти, переполнение буфера, указатели) и многопоточности (блокировки, гонки за данными и т.д.) на основе анализа выполнения программы.

Amplifier

Анализ производительности, профилирование и оптимизация параллельных приложений

Другие инструменты

Intel® CilkTM Plus

Средство разработки приложений для вычислительных систем с общей памятью.

OpenCL

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

и другие

Лекция 1: 123 || Лекция 2 >