
MKL函数库
MKL函数使用说明
chder_白南
无话可说
展开
-
fortran使用MKL函数库求解普通稀疏矩阵与向量的乘积
使用MKL函数库中的mkl_dcsrgemv可以实现普通稀疏矩阵与向量的乘积program main implicit none integer :: n, n1, ja(9), ia(7) real*8 :: a(9), x(6), y(6) character(len=1) :: transa = 'n' !|--------------------------MATRIX--------------.原创 2020-07-18 19:13:13 · 2314 阅读 · 0 评论 -
fortran使用MKL中的GELS求解线性方程组的最小二乘问题
program test_GELS use lapack95 implicit none integer :: i integer, parameter :: m = 4, n = 3 real*8 :: a(4,3), b(4) !|---------------------------------------------------------| .原创 2020-06-04 10:03:07 · 1467 阅读 · 0 评论 -
使用MKL中的有关函数计算共轭梯度法
program ConjugateGradientMethods use blas95 implicit none integer :: i integer, parameter :: n = 5 real(kind=8),allocatable :: A(:,:) real(kind=8),allocatable :: b(:,:) real(kind=8) :: alpha = 0.d0, .原创 2020-05-28 09:23:15 · 697 阅读 · 0 评论 -
Fortran计算大型对称稀疏矩阵的二范数
在fortran中,有时候需要对一个大型的稀疏矩阵求取2范数。由于大型稀疏矩阵一般使用CSR存储格式,MKL函数库中的gesvd的参数是稠密矩阵<matlab可以直接计算稀疏矩阵的2范数>所以本文根据相关知识,给出求解CSR存储的对称方阵2范数的代码。由矩阵分析可以知道:特征值分解和奇异值分解的区别所有的矩阵都可以进行奇异值分解,而只有方阵才可以进行特征值分解。当所给的矩...原创 2020-03-19 22:56:33 · 1693 阅读 · 5 评论 -
Fortran计算矩阵2范数
Intel fortran编译器自带的MKL函数库中,只有计算矩阵1范数和无穷范数的程序,所以本文给出fortran使用MKL函数库计算矩阵2范数的示例。而矩阵的2范数的值近似于max(svd(A))运行环境:win10+vs2019+ivf2020代码如下:program norm2 use lapack95 implicit none ...原创 2020-03-19 22:10:33 · 4275 阅读 · 0 评论 -
fortran基于svd分解求解广义逆矩阵
fortran的MKl函数库中好像没有求解广义逆矩阵的sub本篇文章给出基于svd分解求广义逆矩阵的示例代码program pinv use lapack95 implicit none integer :: i, m, n real, allocatable :: A(:,:), U(:,:), S(:,:...原创 2019-08-14 10:11:50 · 2563 阅读 · 2 评论 -
fortran使用MKL函数库中的gesvd求矩阵的SVD分解
下面的代码是使用MKl函数库中的gesvd进行矩阵的svd分解运行环境: win10 + vs2013 + ivf2013代码如下:program svd use lapack95 implicit none integer :: i, m, n real, allocatable :: A(:,:), U...原创 2019-08-14 10:04:23 · 3033 阅读 · 5 评论 -
伪逆矩阵求解算法
对一个m*n的矩阵1. 当 m > n 时A = rand(m,n)[U,D,V] = svd(A)D = D(1:n,1:n)D = D\eye(n)U = U(:,1:n)pinv1 = V*D*U'2. 当 m < n 时A = rand(m,n)[U,D,V] = svd(A)D = D(1:m,1:m)D = D\eye(m)V = V(:,1...原创 2019-08-14 08:55:40 · 4377 阅读 · 0 评论 -
fortran使用MKL函数库计算矩阵指数函数
计算矩阵指数,matlab直接可以用expm,但是fortran笔者了解到MKL好像还没有子程序直接可以使用闲暇之余,给出一个求矩阵指数的fortran代码仅供参考代码如下,如有必要,读者为了以后的方便也可将下面代码直接封装program test_expm use lapack95 implicit none integer, parame...原创 2019-08-07 00:24:35 · 2968 阅读 · 0 评论 -
fortran使用MKL函数库中的geev计算一般矩阵的特征值与特征向量
这篇博文简要记录一下使用MKL函数库计算一般矩阵的特征值与特征向量对形如对称矩阵或是埃尔米特等特殊矩阵有其对应的子程序,在这里先不涉及。有需求的可以自行查阅MKL官方文档下面给出本次示例代码:代码使用f95接口。f77借口参数太多,笔者太懒<不过懒惰是创新的原动力^_^>program testGeev use lapack95 implicit...原创 2019-08-06 23:47:09 · 8395 阅读 · 27 评论 -
fortran使用MKL函数库中的swap交换两个向量的值
下面代码使用MKL函数库中的swap交换两个向量的值program MKL_dotc use blas95 implicit none integer, parameter :: n = 5 real(kind=8) :: x(n), y(n) call random_seed() ...原创 2019-07-20 19:32:00 · 592 阅读 · 0 评论 -
fortran使用MKL函数库中的scal计算一个标量和向量的乘积
下面的代码使用MKL函数库中的scal计算一个标量和向量的乘积program MKL_dotc use blas95 implicit none integer, parameter :: n = 10 real(kind=8) :: x(n), a = 2.d0 call random_seed...原创 2019-07-20 19:28:38 · 399 阅读 · 0 评论 -
fortran使用MKL函数库计算向量2范数
下面的代码使用MKL函数库计算一个向量的欧几里得范数program MKL_nrm2 use blas95 implicit none integer, parameter :: n = 10 real(kind=8) :: x(n), res call random_seed() ...原创 2019-07-20 19:22:29 · 1644 阅读 · 0 评论 -
fortran使用MKL函数库计算一个复数向量的共轭与另一个复数向量的内积
下面的代码使用MKL函数库计算了共轭向量与另一个向量的点积program MKL_dotc use blas95 implicit none integer, parameter :: n = 10 real(kind=8) :: x1(n), x2(n), y1(n), y2(n) complex(kind=8)...原创 2019-07-20 19:17:50 · 1977 阅读 · 0 评论 -
fortran使用MKL函数库计算两个实数向量的内积
这篇博文简要介绍使用MKL函数库计算两个向量的内积代码如下:program MKL_dot use blas95 implicit none integer, parameter :: n = 10 real*8 :: x(n), y(n), res call rando...原创 2019-07-11 20:06:00 · 1504 阅读 · 0 评论 -
fortran使用MKL函数库计算方阵的逆矩阵
本篇博文简要介绍使用MKL函数库计算方阵的逆矩阵代码如下:program MKL_getrfANDgetri use lapack95 implicit none integer, parameter :: n = 3 integer :: i, j, ipiv(n) real(kind=8) :: a(n,n)...原创 2019-07-11 14:26:51 · 9356 阅读 · 11 评论 -
fortran使用MKL函数库求解多右端项线性方程组
本篇博文简要介绍使用MKL函数库计算多个右端项的线性代数方程组代码如下:program MKL_gesv use lapack95 implicit none integer :: i integer, parameter :: n = 3, m = 4 real*8 :: a(n,n), aa(n,n), b(...原创 2019-07-11 14:06:47 · 3289 阅读 · 0 评论 -
fortran使用MKL函数库计算向量与标量的乘积,然后与另一个向量之和
代码如下:program MKL_axpy use blas95 implicit none integer, parameter :: n = 10 real*8 :: x(n), y(n) real*8 :: a = 2.d0 c...原创 2019-07-11 11:18:13 · 666 阅读 · 0 评论 -
fortran使用MKL函数库计算向量元素之和
这篇博客简要介绍使用MKL中的blas计算向量的元素之和代码如下:program MKL_asum use blas95 implicit none integer, parameter :: n = 10 real*8 :: x(n) = 0, res call random_seed()...原创 2019-07-10 19:33:10 · 1052 阅读 · 0 评论 -
fortran调用MKL函数库中的gemm的fortran95接口计算矩阵相乘
关于MKL函数库的使用参见下面视频http://v.fcode.cn/video-use_library.html下面给出示例代码program TestMKLgemm use blas95 implicit none integer, parameter :: m = 2, k = 2, n = 2 real*8 :: A...原创 2019-07-02 13:32:34 · 2367 阅读 · 0 评论 -
fortran使用MKL中的DGEMM实现大矩阵相乘
program TestMKLDgemm use ifport, only : fdate implicit none real*8 :: alpha, beta integer :: i, j integer, parameter :: m = 5000, k = 5000, n = 5000 r...原创 2019-07-01 17:08:48 · 3221 阅读 · 0 评论 -
fortran使用pardiso求解器求解稀疏非对称线性方程组
program nonsymmetric implicit none integer, parameter :: n = 4 !// depend on your equation integer :: i, j, mm, tmp, nn, fileid, first, num real(kind=8) ...原创 2019-09-10 11:50:11 · 4916 阅读 · 17 评论 -
fortran恢复CSR格式的数组
program RestoreCSRdata implicit none integer, parameter :: n = 5 integer :: i, j, k, mm, tmp, fileid, first, num real(kind=8) :: matrix(n,n), x(n...原创 2019-09-09 20:49:30 · 475 阅读 · 1 评论 -
fortran使用mkl函数库中的mkl_dcsrsymv计算矩阵与向量的乘积
用fortran语言编写数值程序时,如果要计算一个大型稀疏矩阵与一个向量的乘积,可以使用下面高效的方法1. 首先使用CSR格式大型稀疏矩阵进行存储2. 调用mkl函数库中的mkl_dcsrsymv计算这样做的目的不仅可以节约内存,而且计算速度也比较快示例代码如下:program mkl_symv implicit none integer, parameter ...原创 2019-08-31 12:06:06 · 1808 阅读 · 1 评论 -
fortran使用MKL函数库计算大型稀疏矩阵的特征值与特征向量
program scsrev implicit none integer, parameter :: n = 3 !// depend on your equation integer :: i, j, mm, tmp, fileid, first, num real(kind=8) :...原创 2019-09-06 18:42:18 · 3917 阅读 · 3 评论