MKL Quickstart

advertisement
Intel Mathematics Kernel Library (MKL)
Quickstart
COLA Lab, Department of Mathematics, Nat’l Taiwan University
2010/05/11
1
Credits
Wei-Ren Chang 張為仁 (slides and codes, 2009/03/10)
 Lien-Chi Lai 賴鍊奇 (slides, 2010/05/11)

2
Intel MKL Quickstart
Credits
A Brief Introduction
3
Intel MKL Quickstart
Intel MKL: Intel Math Kernel Library
 Availability:
Windows, Linux
 Functionality
Dense and Sparse Linear Algebra: BLAS, LAPACK
 Sparse Solvers: Direct and Iterative Solvers
 Fast Fourier Transforms
 Cluster Support: ScaLAPACK, Cluster FFT

 Features and
Benefits
Automatic parallelization
 Standard APIs in C and Fortran

4
Intel MKL Quickstart
Introduction
User Guide

MKL User Guide


Installation
Development Environment Configuration
Performance and Memory Management
Language-specific Usage Options

Default documents directory

/opt/intel/mkl/10.2.1.017/doc/userguide.pdf


5
Intel MKL Quickstart
User Guide
Reference Manual

MKL Reference Manual


The routines and functions description
APIs in C and Fortran
Interfaces and calling syntax

Default documents directory

/opt/intel/mkl/10.2.1.017/doc/mklman.pdf

6
Intel MKL Quickstart
Reference Manual
Some Examples
7
Intel MKL Quickstart
Examples

Brief examples to

Compute Inner product (sequential)
Compute the LU factorization of a matrix
Solve linear system
Solve eigen system
Compute Inner product (parallel)




8
Intel MKL Quickstart
Examples
Directories containing the source codes





mkl_blas_f95 (mkl_blas_c)
mkl_lapack95_f95 (mkl_lapack95_c)
mkl_linearsym_f95 (mkl_linearsym_c)
mkl_eigensym_f95 (mkl_eigensym_c)
mkl_blas_f95_p (mkl_blas_c_p)
9
Intel MKL Quickstart
File names
Inner product (sequential)
do ii = 1,n
vec_a(ii) = 1.25*ii
vec_b(ii) = 0.75*ii
end do
dot_result = ddot(n,vec_a,inca,vec_b,incb)
10
Intel MKL Quickstart
Examples Inner product
Input parameters
dot_result = ddot(n,vec_a,inca,vec_b,incb)





n: The length of two vectors.
inca: Specifies the increment for the elements of vec_a
incb: Specifies the increment for the elements of vec_b
vec_a: The fitsr vector
vec_b: The second vector
11
Intel MKL Quickstart Inner product Input parameters
Output parameters

dot_result: The final result
12
Intel MKL Quickstart Inner product Output parameters
Inner product (parallel)
 Makefile
clips
FC=mpif90
MKL_INCLUDE =/opt/intel/mkl/10.0.3.020/include
MKL_PATH =/opt/intel/mkl/10.0.3.020/lib/em64t
EXE=blas_f95.exe
blas_f:
$(FC) -o $(EXE) blas_f.f90 -I$(MKL_INCLUDE)
-L$(MKL_PATH) -lmkl_intel_lp64
-lmkl_intel_thread -lmkl_core -lguide
-lpthread
13
Intel MKL Quickstart
Examples Inner product (parallel)
LU factorization
 Define the matrix
a(1,1)=
a(1,2)=
a(2,1)=
a(2,2)=
1
3
2
1
 Compute LU
factorization
call dgetrf(m,n,a,lda,ipiv,info)
14
Intel MKL Quickstart
Examples LU factorization
Input parameters
call dgetrf(m,n,a,lda,ipiv,info)




a: The matrix.
m: The number of rows in the matrix a
n: The number of columns in the matrix a
lda: The fitsr dimension of a
15
Intel MKL QuickstartLU factorization Input parameters
Output parameters
call dgetrf(m,n,a,lda,ipiv,info)






a: overwritten by L and U. The unit diagonal elements of L
are skipped
ipiv: An array, dimension at least max(1,min(m,n)). The pivot
indices: row i is interchanged with row ipiv(i)
info:
info=0, the execution is successful
info=-i, the i-th parameter had an illegal value
info= i, uii is 0. The factorization has been completed, but U
is exactly singular
16
Intel MKL QuickstartLU factorization Output parameters
Linear System (Fortran)
 Define the matrix
a(1,1)=
a(1,2)=
a(2,1)=
a(2,2)=
1
3
2
1
 Define the right-hand side
rhs(1)= 1.0
rhs(2)= 1.0
 Solve the linear system
call dgesv(n,nrhs,a,lda,ipiv,ths,ldb,info)
17
Intel MKL Quickstart
Examples Linear System
Input parameters
call dgesv(n,nrhs,a,lda,ipiv,ths,ldb,info)




n: The number of linear equations, that is, the order of the
matrix a
rhs: Right-hand side
lda: The leading dimension of matrix a
nrhs: The number of right-hand sides
18
Intel MKL Quickstart Linear System Input parameters
Output parameters
call dgesv(n,nrhs,a,lda,ipiv,ths,ldb,info)






ipiv: An array, dimension at least max(1,min(m,n)). The pivot
indices: row i was interchanged with row ipiv(i)
rhs: Overwritten by the solution matrix a
info:
info=0, the execution is successful
info=-i, the i-th parameter had an illegal value
info= i, U(i,i) is 0. The factorization has been completed, but
U is exactly singular, so the solution could not be computed
19
Intel MKL Quickstart Linear System Output parameters
Eigensystem (symmetric)
 Define the matrixdsyev
a(1,1)=
a(1,2)=
a(2,1)=
a(2,2)=
1.0
2.0
2.0
3.0
 Call MKL function
call dsyev(jobz,uplo,dim,a,lda,eigval,work,lwork,info)
20
Intel MKL Quickstart
Examples Eigensystem
Input parameters
call dsyev(jobz,uplo,dim,a,lda,eigval,work,lwork,info)







jobz: If jobz='N', then only eigenvalues are computed
jobz: If jobz='V', then eigenvalues are eigenvectors are
computed
uplo: If uplo='U', a stores the upper triangular part of a
uplo: If uplo='L', a stores the lower triangular part of a
lda: The first dimension of a
work: a workspace array, its dimension max(1,lwork)
lwork: The dimension of the array work
21
Intel MKL Quickstart
Eigensystem Input parameters
Output parameters
call dsyev(jobz,uplo,dim,a,lda,eigval,work,lwork,info)

wigval: contains the eigenvalues of the matrix a in ascending
order

info:
info=0, the execution is successful
info=-i, the i-th parameter had an illegal value
info= i, then the algorithm failed to converge; I indicates the
number of elements of an intermediate tridiagonal form
which did not converge to zero



22
Intel MKL Quickstart
Eigensystem Output parameters
References
23
Intel MKL Quickstart
Reference

Intel® Math Kernel Library Reference Manual (mklman.pdf)
Intel® Math Kernel Library for the Linux OS User’s Guide
(userguide.pdf)

http://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/

24
Intel MKL Quickstart
Reference
Download