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