Intel MKL (презентация)

advertisement
®
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
 тригонометрические преобразования
 «библиотека Пуассона»
Download