Презентацию к данной лекции Вы можете скачать здесь.
Intel® Math Kernel Library (Intel® MKL) – вычислительная математическая библиотека, содержащая хорошо оптимизированные многопоточные реализации математических функций. Содержит BLAS, LAPACK, ScaLAPACK, солверы для разреженных систем, быстрое преобразование Фурье, векторизованные математические функции и т.д.
Многоплатформенная библиотека, однако ScaLAPACK не поддерживается в Mac OS* X.
Поддерживаются C и Fortran.
Входит в состав следующих пакетов:
Основные операции с векторами и матрицами:
BLAS – эффективная библиотека, в которой реализованы основные операции: векторно-векторные (1 уровень), матрично-векторные (2 уровень) и матрично-матричные (3 уровень). Библиотека оптимизируется под разные архитектуры и используется в качестве "ядра" других библиотек более высокого уровня).
SparseBLAS – расширение BLAS для работы с разреженными векторами и матрицами.
PBLAS – параллельная реализация BLAS для вычислительных систем с распределенной памятью. Построена на основе MPI.
Модуль линейной алгебры (решение систем линейных алгебраических уравнений, решение спектральных задач). Включает следующие компоненты:
).
).
Модуль линейной алгебры для разреженных матриц:
). Подпрограммы библиотеки реализованы как для систем с общей, так и с распределенной памятью.
Векторные функции:
VML – векторные реализации математических функций.
VSL – параллельные (многопоточные) реализации генераторов псевдослучайных чисел.
Модуль быстрого преобразования Фурье:
Модуль поддержки решения дифференциальных уравнений в частных производных:
Optimization solvers (метод наименьших квадратов):
Структура:
Форматы хранения матриц:


Основные операции с разреженными векторами и матрицами.
Структура:
Разнообразные форматы хранения матриц.

Структура:


SS – Sparse Solvers
Прямые солверы:
Итерационные солверы:
Предобуславливатели:
Векторизованные математические функции.
| Тригонометрические | Гиперболические | Степени и корни | Экспоненциальные, логарифмические | Спецфункции | Арифметические | Округление |
|---|---|---|---|---|---|---|
| Sin | Sinh | Pow2o3 | Exp | Erf | Add | Floor |
| Cos | Cosh | Pow3o2 | Ln | Erfc | Sub | Cell |
| Tan | Tanh | Pow | Log10 | ErfInv | Sqr | Trunc |
| Asin | Asinh | Powx | Exm1p | ErfcInv | Mul | Round |
| Acos | Acosh | Sqrt | Log1p | TGamma | Abs | NearbyInt |
| Atan | Atanh | InvSqrt | LGamma | LinearFrac | Rint |
| Тригонометрические | Гиперболические | Степени и корни | Экспоненциальные, логарифмические | Арифметические |
|---|---|---|---|---|
| Sin | Sinh | Pow | Exp | Add |
| Cos | Cosh | Powx | Ln | Sub |
| Tan | Tanh | Sqrt | Log10 | Div |
| Asin | Asinh | Mul | ||
| Acos | Acosh | Abs | ||
| Atan | Atanh | Conj |
Вещественный и комплексный, с простой и двойной точностью.
Повышенная точность (HA – High Accuracy). Правильное округление выполняется более чем в 99% случаев. Самый медленный режим.
Пониженная точность (LA – Low Accuracy). Неправильными могут быть до двух младших (наименее значимых) разрядов. Производительность, по сравнению с режимом высокой точности выше на 30-50%.
Режим улучшенной производительности (EP – Enhanced Performance). Неправильными могут быть до половины двоичных разрядов. Производительность, по сравнению с режимом низкой точности выше на 30-50%.
Библиотека поддерживает динамическое управление точностью.
Вещественный и комплексный, с простой и двойной точностью.
v(s, d)Exp(n, input_array, output_array)
Функции VML могут вызываться в режиме in-place, когда входной и выходной массивы занимают одно и то же положение в памяти.
Вызовом vmlSetMode(VML_EP)
Векторизованные функции генерации псевдо/квазислучайных чисел, статистика.
| Генераторы случайных чисел (равномерное распределение) | Генераторы псевдослучайных чисел (неравномерное распределение) | Статистика | ||
|---|---|---|---|---|
| Псевдослучайные | Квазислучайные | Непрерывные | Дискретные | |
| Мультипликативный конгруэнтный 59-разрядный | Соболя | Равномерное | Равномерное | Центральные моменты до 4-го порядка включительно |
| Мультипликативный конгруэнтный 31-разрядный | Нидеррайтера | Нормальное | Бернулли | Эксцесс, асимметрия |
| На сдвиговом регистре с обратной связью | Экспоненциальное | Биномиальное | Квантили, порядковые статистики | |
| Mersenne Twister | Коши | Гипергеометрическое | Матрицы ковариации и корреляции | |
| Генератор Wichmann-Hill | Бета | Пуассона | ||
#include "mkl_vsl.h"
status = vslNewStream(stream, VSL_BRNG_MT19937, SEED)
status = vdRngUniform(method, stream, vector_size, r, 0.0, 1.0)
status = vslDeleteStream(stream)
Быстрое преобразование Фурье




Векторизованные функции, предназначенные для фитирования данных.
| Сплайны | Тип сплайна | Граничные условия | Внутренние условия |
|---|---|---|---|
| Линейные | 1-я производная | ||
| Квадратичные | Свободные | 2-я производная | |
| Кубические | Натуральные, эрмитовы, Бесселя, Акимы | 1-я производная на левой/правой границах интервала | Массив узлов |
| Кусочно-постоянные | Непрерывные слева, непрерывные справа | Периодические | |
| Определенные пользователем |

#include <windows.h>
#include <stdio.h>
#include "mkl.h"
#include "gettimeofday.h"
#define N 100000000
double a[N + 1], b[N + 1];
int i;
double gDotProduct = 0;
int main()
{
// initialize vectors
for (i = 0; i < N; i++)
{
a[i] = 1.034; b[i] = 1.057;
}
printf("Computed value of vector sum: ");
gDotProduct = cblas_ddot(N, a, 1, b, 1);
//print dot product
printf("sum = %f\n", gDotProduct);
}
program eigenLAPACK
integer, parameter :: NIN = 5, NOUT = 6
integer :: I, IFAIL, INFO, J, N
character(1) :: UPLO='U'
real, allocatable, dimension(:,:) :: A
real, allocatable, dimension(:) :: D
real, allocatable, dimension(:) :: E, TAU
real, allocatable, dimension(:) :: WORK
real, allocatable, dimension(:,:) :: Z
external f06qfe, sorgtr, ssteqr, ssytrd, x04cae
write(NOUT, *) 'N=?'
read(NIN,*) N
allocate(D(N))
LWORK = 64 * N
allocate(WORK(LWORK))
allocate(E(N-1))
allocate(TAU(N-1))
LDA = N
allocate(A(LDA, N))
LDZ = N
allocate(Z(LDZ, N))
allocate(TAU(N-1))
LDA = N
allocate(A(LDA, N))
LDZ = N
allocate(Z(LDZ, N))
!
! Initialization of upper triangular part of A
!
do i=1, N
do j=i, N
a(i, j)=3.8*i-2.*j
enddo
enddo
!
! Reduce A to tridiagonal form
!
call ssytrd(UPLO, N, A, LDA, D, E, TAU, WORK, LWORK, INFO)
!
! Copy A into Z
!
call f06qfe(UPLO, N, N, A, LDA, Z, LDZ)
!
! Form Q explicitly, storing the result in Z
!
call sorgtr(UPLO, N, Z, LDZ, TAU, WORK, LWORK, INFO)
!
! Calculate all the eigenvalues and eigenvectors of A
!
call ssteqr('V', N, D, E, Z, LDZ, WORK, INFO)
write(NOUT,*)
if(INFO >0) then
write(NOUT,*) 'Failure to converge.'
else
!
! Uncomment to print eigenvalues and eigenvectors
!
!write(NOUT,*) 'Eigenvalues'
!write(NOUT, "(3X,(8F12.4))") (D(I),I=1,N)
!IFAIL = 0
!
!call x04cae('General', ' ', N, N, Z, LDZ, 'Eigenvectors', IFAIL)
end if
deallocate(D)
deallocate(WORK)
deallocate(E)
deallocate(TAU)
deallocate(A)
deallocate(Z)
end
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.