由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 为啥matlab一直用列优先存储来存储array?
相关主题
Matrix calculation in C++求救:2个dense matrix的乘法
gnu c++ 自带的库能解矩阵方程吗?do you use blas/lapack?
150行 F# 做矩阵运算比MKL还快Linux下运行lapack和blas的问题
发现版上没有聊fortran的How to use multi-core to speed Python program
C++ 做线性代数,方便使用的库?请推荐好的c++下的matrix库
有没有觉得scipy很稀烂的?lapack如何求解XA=B
这偏语言分析的文章很好C++里用Blas/Lapack的问题 (转载)
Switch from Matlab to C(C++)?搞矩阵的竟然没有人提BLAS
相关话题的讨论汇总
话题: 存储话题: matlab话题: fortran话题: 优先话题: lapack
进入Programming版参与讨论
1 (共1页)
p*********t
发帖数: 2690
1
matlab先是用fortran写的,所以用了列优先存储。后来用c改写了matlab之后,怎么还
是用的列优先存储?难道列优先存储适合于矩阵运算?
x*******1
发帖数: 28835
2
matlab就是一个壳,什么C阿,fortran阿,就是掉lapack
p*********t
发帖数: 2690
3
为啥matlab一直用列优先存储来存储array? 谁能讲讲这个列优先存储的来龙去脉?

【在 x*******1 的大作中提到】
: matlab就是一个壳,什么C阿,fortran阿,就是掉lapack
l********a
发帖数: 1154
4
好像没啥大区别,因为早期的一些fortran库都是column major的
t****t
发帖数: 6806
5
你应该问, 为啥C用行优先存储? 明明是fortran先来的.

【在 p*********t 的大作中提到】
: 为啥matlab一直用列优先存储来存储array? 谁能讲讲这个列优先存储的来龙去脉?
p**o
发帖数: 3409
6
MATLAB用C++封装了Intel MKL的BLAS/LAPACK。
MKL是Fortran写的,要求调用者遵循Fortran conventions,
比如传地址而不是传值,存储用column-major,等等。

【在 p*********t 的大作中提到】
: matlab先是用fortran写的,所以用了列优先存储。后来用c改写了matlab之后,怎么还
: 是用的列优先存储?难道列优先存储适合于矩阵运算?

N***m
发帖数: 4460
7
欧奏是不明白,按列和按行有啥实际区别吗?

【在 t****t 的大作中提到】
: 你应该问, 为啥C用行优先存储? 明明是fortran先来的.
t****t
发帖数: 6806
8
实际上没区别, 但是不兼容就是了.

【在 N***m 的大作中提到】
: 欧奏是不明白,按列和按行有啥实际区别吗?
N***m
发帖数: 4460
9
矩阵转置一下不行吗?

【在 t****t 的大作中提到】
: 实际上没区别, 但是不兼容就是了.
t****t
发帖数: 6806
10
转置又不是free的.

【在 N***m 的大作中提到】
: 矩阵转置一下不行吗?
相关主题
有没有觉得scipy很稀烂的?求救:2个dense matrix的乘法
这偏语言分析的文章很好do you use blas/lapack?
Switch from Matlab to C(C++)?Linux下运行lapack和blas的问题
进入Programming版参与讨论
N***m
发帖数: 4460
11
这就要怪那帮写程序的人了,没事搞两套系统干什么,吃饱了撑的阿。

【在 t****t 的大作中提到】
: 转置又不是free的.
n******t
发帖数: 4406
12
先骂搞CPU的为啥要搞两套endian先。。。lol

【在 N***m 的大作中提到】
: 这就要怪那帮写程序的人了,没事搞两套系统干什么,吃饱了撑的阿。
O*******d
发帖数: 20343
13
先骂为什么人要长左手右手。

【在 n******t 的大作中提到】
: 先骂搞CPU的为啥要搞两套endian先。。。lol
O*******d
发帖数: 20343
14
任何一件事,如果有两种左右分的做法,一定会有人把两种做法都做了,以显示自己与
众不同。
d*****l
发帖数: 8441
15
拜托,懂一点儿数学吧。
Array在数学上就是列向量。数学上对向量的定义很不幸就是列向量,而把
行向量定义为向量的转置。在此定义之下,矩阵大多情况下是表示为多个列向量的。
说白了,就是数学习惯问题。
要怪就只能怪线性代数和矩阵论中的约定俗成的东西比C语言出现的要早。

【在 p*********t 的大作中提到】
: matlab先是用fortran写的,所以用了列优先存储。后来用c改写了matlab之后,怎么还
: 是用的列优先存储?难道列优先存储适合于矩阵运算?

t****t
发帖数: 6806
16
事实上, matlab的核心运算库从来也没有改过, 不存在所谓"用C改写matlab"这种说法.

【在 d*****l 的大作中提到】
: 拜托,懂一点儿数学吧。
: Array在数学上就是列向量。数学上对向量的定义很不幸就是列向量,而把
: 行向量定义为向量的转置。在此定义之下,矩阵大多情况下是表示为多个列向量的。
: 说白了,就是数学习惯问题。
: 要怪就只能怪线性代数和矩阵论中的约定俗成的东西比C语言出现的要早。

p**o
发帖数: 3409
17

"array在数学上就是列向量" ——没有这种说法,因为数学里没有array的概念,
array是程序员的概念,只有一维、二维、三维…的说法,没有row/column的区分。
带row/column性质的数学概念是向量(vector)。
在线性代数里,只是在习惯上把不带转置符号的vector符号看作column vector而已,
而由于英语行书写的原则,定义一个column vector也是按row vector的转置来定义的:
x = [x_1, x_2, ..., x_m]'
不带转置的vector符号默认为column vector,主要是为了矩阵算子左乘表达的简洁,
如ABx=b,改成row vector和右乘也可,只是约定俗成的习惯而已。

【在 d*****l 的大作中提到】
: 拜托,懂一点儿数学吧。
: Array在数学上就是列向量。数学上对向量的定义很不幸就是列向量,而把
: 行向量定义为向量的转置。在此定义之下,矩阵大多情况下是表示为多个列向量的。
: 说白了,就是数学习惯问题。
: 要怪就只能怪线性代数和矩阵论中的约定俗成的东西比C语言出现的要早。

p**o
发帖数: 3409
18
matlab核心在80年代初的确自己用c重写过(那些库后来叫JACKPAC);
后来他们公司发现这样吃力不讨好,2000年重写了接口,封装了netlib的LAPACK。
参见:
http://www.mathworks.com/company/newsletters/news_notes/clevesc
目前的matlab支持若干个LAPACK实现,默认用的是Intel MKL的LAPACK。
在matlab的安装目录的bin目录下,可以找到cublas/mkl/acml的dll/so文件。

法.

【在 t****t 的大作中提到】
: 事实上, matlab的核心运算库从来也没有改过, 不存在所谓"用C改写matlab"这种说法.
t****t
发帖数: 6806
19
哦, 好吧, 我看的时候用的是atlas, 那个显然不是C写的...

【在 p**o 的大作中提到】
: matlab核心在80年代初的确自己用c重写过(那些库后来叫JACKPAC);
: 后来他们公司发现这样吃力不讨好,2000年重写了接口,封装了netlib的LAPACK。
: 参见:
: http://www.mathworks.com/company/newsletters/news_notes/clevesc
: 目前的matlab支持若干个LAPACK实现,默认用的是Intel MKL的LAPACK。
: 在matlab的安装目录的bin目录下,可以找到cublas/mkl/acml的dll/so文件。
:
: 法.

1 (共1页)
进入Programming版参与讨论
相关主题
搞矩阵的竟然没有人提BLASC++ 做线性代数,方便使用的库?
nv的显卡能战胜intel的CPU么有没有觉得scipy很稀烂的?
openblas怎么比base blas还慢呢?这偏语言分析的文章很好
问个选语言的问题Switch from Matlab to C(C++)?
Matrix calculation in C++求救:2个dense matrix的乘法
gnu c++ 自带的库能解矩阵方程吗?do you use blas/lapack?
150行 F# 做矩阵运算比MKL还快Linux下运行lapack和blas的问题
发现版上没有聊fortran的How to use multi-core to speed Python program
相关话题的讨论汇总
话题: 存储话题: matlab话题: fortran话题: 优先话题: lapack