Leading dimension
Leading dimension
http://icl.cs.utk.edu/lapack-forum/viewtopic.php?p=661&sid=67c66465dedfcbb6e0612cca7647698f
Suppose that you have a matrix A of size 100x100 which is stored in an array 100x100. In this case LDA is the same as N. Now suppose that you want to work only on the submatrix A(91:100 , 1:100); in this case the number of rows is 10 but LDA=100. Assuming the
fortran column-major ordering (which is the case in LAPACK), the LDA is used to define the distance in memory between elements of two consecutive columns which have the same row index. If you call B = A(91:100 , 1:100) then B(1,1) and B(1,2) are 100 memory
locations far from each other.
其实之所以设LDA(leading dimension)这个参数主要是考虑到fortran是“列优先”存储数组的原因。这里要解本征值的矩阵是NxN大小的,但是存储这个矩阵的数组A却并不一定非得是NxN大小,可以是M1xM2大小,其中 M1≥N,M2≥N,NxN矩阵要存放在M1xM2数组的左上角,即A(1:N,1:N)部分。这样,当把数组A传给zheev时,zheev通过N来知道要解的矩阵是多大的,通过LDA来知道同一行中相邻两列的元素在内存中相距多远,可见,LDA=M2,其实就是数组A的一列的元素个数,也就是“实际存储时的第一维”的大小。正是由于fortran列优先存储数组,才使得概念上的第一维(行)与实际存储时的第一维(列)不一样。
注1:如果参数A的位置就用数组片段来调用的话则令当别论。例如同样A的大小为M1xM2,那么若调用zheev时,A参数位置处的实参是A(1:N,1:N)的话,则LDA位置处的实参应该是N,而不是M2!
注2:zheev的输出本征矢时,A的每一列代表一个本征矢。
Leading dimension的更多相关文章
- theano学习
import numpy import theano.tensor as T from theano import function x = T.dscalar('x') y = T.dscalar( ...
- (原)使用mkl计算特征值和特征向量
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5585271.html 参考文档:mkl官方文档 lapack_int LAPACKE_sgeev(in ...
- (原)使用mkl中函数LAPACKE_sgesv计算矩阵的逆矩阵
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5578027.html 参考文档:mkl的说明文档 lapack_int LAPACKE_sgesv(i ...
- 有关CUBLAS中的矩阵乘法函数
关于cuBLAS库中矩阵乘法相关的函数及其输入输出进行详细讨论. ▶ 涨姿势: ● cuBLAS中能用于运算矩阵乘法的函数有4个,分别是 cublasSgemm(单精度实数).cublasDgemm( ...
- theano使用
一 theano内置数据类型 只有thenao.shared()类型才有get_value()成员函数(返回numpy.ndarray)? 1. 惯常处理 x = T.matrix('x') # t ...
- CUDA ---- CUDA库简介
CUDA Libraries简介 上图是CUDA 库的位置,本文简要介绍cuSPARSE.cuBLAS.cuFFT和cuRAND,之后会介绍OpenACC. cuSPARSE线性代数库,主要针对稀疏矩 ...
- 卷积神经网络LeNet Convolutional Neural Networks (LeNet)
Note This section assumes the reader has already read through Classifying MNIST digits using Logisti ...
- CUBLAS基础实验
一.概述 最近在试图进行cuda并行编程,目标是编写一段矩阵计算代码,将计算结果存储进入GPU的缓冲区当中,并在达到某些要求后强制刷新缓冲区,取得计算结果. 但是考虑时间紧任务重的状况和实际的性能要求 ...
- professional cuda c programming--CUDA库简单介绍
CUDA Libraries简单介绍 上图是CUDA 库的位置.本文简要介绍cuSPARSE.cuBLAS.cuFFT和cuRAND.之后会介绍OpenACC. cuSPARSE线性代数库,主要针 ...
随机推荐
- Atcoder Beginner Contest 155D(二分,尺取法,细节模拟)
二分,尺取法,细节模拟,尤其是要注意a[i]被计算到和a[i]成对的a[j]里时 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> ...
- Books Exchange (hard version)
The only difference between easy and hard versions is constraints. There are nn kids, each of them i ...
- Flask 教程 第十七章:Linux上的部署
本文翻译自The Flask Mega-Tutorial Part XVII: Deployment on Linux 这是Flask Mega-Tutorial系列的第十七部分,我将把Microbl ...
- bugku come_game
首先打开游戏发现就是一个单纯的游戏但是当你闯过一关去的时候会发现会多一个文件 看一下玩游戏前 与玩游戏之后有什么变化 然后发现一个文件叫temp 然后用hxd进行分析一下然后尝试着将01改成02然后就 ...
- AcWing 841. 字符串哈希
//快速判断两次字符串是不是相等 #include<bits/stdc++.h> using namespace std ; typedef unsigned long long ULL; ...
- Debian 系统修改网卡ens33名称为 eth0
1. 编辑文件 /etc/default/grub 修改下面的值 初始值 GRUB_CMDLINE_LINUX="" 修改后 GRUB_CMDLINE_LINUX="ne ...
- php 基础 二维数组以某个重复值累加
$arr = array( array('id' => 123, 'name' => '张三', 'amount'=>'1'), array('id' => 123, 'nam ...
- 使用Python处理非对称加密-测试大佬常用的处理方式
一.思考❓❔ 1.什么是非对称加密? 公钥加密系统,广泛用于数据加密传输 更详细的解释可参考维基百科( https://en.wikipedia.org/wiki/RSA_(cryptosystem) ...
- Django框架之ORM的相关操作之一对一关系(四)
ORM中一对一在当一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁,那么就把不常用的字段单独拿出来做成一张表,然后通过一对一进行关联起来.举个例子:在我们登录某个账户的时候,一般会显示 ...
- ZooKeeper下载安装配置-单机版配置
1,下载地址:http://apache.fayea.com/zookeeper/ 2,检查环境变量(需要确保配置了环境变量): java -version 3,安装配置: (1)解压 tar -zx ...