® Intel MKL Math Kernel Library Толушкин Семён СПбГУ Зимняя школа по высокопроизводительным вычислениям ННГУ 2010г Идеальная программа? Идеальная программа: Скорость Надежность Удобство Все грани высокопроизводительных вычислений Оборудование Модель Алгоритм Оптимизация кода программистом Параллельное программирование Использование оптимизированных библиотек Оптимизация при компиляции Оптимизация приложения на основе анализа его выполнения Преимущества Быстрота Надежность Стандартизованность Экономия времени Поддержка Intel® Performance Libraries Math Kernel Library Integrated Performance Primitives Состав Intel® MKL BLAS & PBLAS & Sparse BLAS LAPACK & ScaLAPACK Sparse Solvers FFT & Cluster FFT VML (Vector Mathematical Library) VSL (Vector Statistical Library) Partial Differential Equations Solvers Intel® MKL Оптимизирована под платформы IA-32, IA-64, Intel®64. Intel® MKL Basic Linear Algebra Subprograms (BLAS): векторные операции матрично-векторные операции матрично-матричные операции Sparse BLAS: основные операции над разреженными векторами и матрицами PBLAS: распределенные вычисления (MPI) Intel® MKL Basic Linear Algebra Subprograms (BLAS): Операции над вещественными и комплексными числами с одинарной и двойной точностью. Для хранения симметричных, треугольных, эрмитовых или ленточных матриц используется более компактное размещение в памяти. Написан на Fortran 77, для вызова из C используется интерфейс CBLAS. Intel® MKL Практика: производительность BLAS MKL Пример 1. matrix_simple Перемножение матриц тройным циклом. Intel® MKL Практика: производительность BLAS MKL Пример 2. matrix_mkl_ddot Перемножение матриц с использованием операции BLAS 1 уровня ddot (умножение строка-вектор). Необходимо подключить библиотеки MKL. Intel® MKL Практика: подключение MKL к Microsoft Visual Studio 1. Tools → Options → Projects & Solutions → → VC++ Directories 2. Добавить в Include Files <mkl directory>\include 3. Добавить в Library Files <mkl directory>\ia32\lib 4. Добавить в Executable Files <mkl directory>\ia32\bin Intel® MKL Практика: подключение MKL к Microsoft Visual Studio Project → Properties → Configuration Properties → Linker → Input → Additional Dependencies Добавить библиотеки: mkl_intel_c.lib mkl_core.lib mkl_intel_thread.lib libiomp5md.lib Intel® MKL Практика: подключение MKL к Microsoft Visual Studio * MKL предоставляет помощник для линковки приложений. http://software.intel.com/enus/articles/intel-mkl-link-line-advisor. Intel® MKL Практика: производительность BLAS MKL Пример 3. matrix_mkl_dgemm Перемножение матриц с использованием операции BLAS 3 уровня dgemm. Сравнить время выполнения с двумя предыдущими примерами и (при желании) поудивляться. Intel® MKL Linear Algebra PACKage (LAPACK): Решение систем линейных уравнений. Оценка числа обусловленности. Уточнение решений систем линейных уравнений и вычисление ошибок. Разложение матриц. Метод наименьших квадратов. Поиск собственных чисел. ScaLAPACK: распределенные вычисления (MPI) Intel® MKL Практика: использование LAPACK Пример 4. example_lapack Заполнение матрицы случайными числами и получение ее собственных чисел с использованием функции gesvd: General Singular Value Decomposition Intel® MKL Параллелизм в MKL: Реализован с помощью OpenMP. Многопоточными являются многие функции LAPACK BLAS FFT VML Безопасная многопоточность. Intel® MKL Практика: использование многопоточности Пример 4*. example_lapack 1. Открыть командную строку 2. Перейти в директорию <example_lapack>\debug 3. Установить количество потоков SET_OMP_NUM_THREADS=1, 2 4. Сравнить время выполнения Intel® MKL Sparse Solvers PARDISO (PARallel DIrect Sparse Solver Interface) Написан на Fortran. DSS (Direct Sparse Solver) Альтернативный интерфейс к PARDISO. ISS (Iterative Sparse Solvers) Использует интерфейс обратного взаимодействия. Intel® MKL Практика: использование PARDISO Пример 5. example_pardiso Решение системы линейных алгебраических уравнений с помощью решателя PARDISO (матрица разреженная). Intel® MKL Vector Mathematical Library (VML) Высокооптимизированные операции над векторами – возведение в степень, тригонометрические, гиперболические, экспоненциальные функции и т.п. Vector Statistical Library (VSL) генерация векторов псевдослучайных и квазислучайных чисел с различными типами распределений выполнение математических операций конволюции и корреляции Все генераторы используют систему унифицированных генераторов, называемую Basic Random Number Generators (BRNGs). Intel® MKL Практика: использование VSL Пример 6. example_vsl Расчет числа Pi методом Монте-Карло с использованием обычного генератора случайных чисел и с использованием векторного генератора случайных чисел библиотеки MKL. Intel® MKL FFT & Cluster FFT Быстрое преобразование Фурье с использованием многопоточности на системах с общей памятью и функции для распределенных вычислений. Basic Linear Algebra Communication Subprograms (BLACS) Набор процедур, поддерживающих интерфейс передачи сообщений. Выполняются на большом ряде платформ с распределенной памятью. Используется вместе с PBLAS, ScaLAPACK, Cluster FFT. Partial Differential Equations Solvers тригонометрические преобразования «библиотека Пуассона»