【发布时间】:2017-12-07 09:32:50
【问题描述】:
我已经阅读了很多关于 Julia 及其性能的文章。但是在哪里,我可以找到有关为什么 julia 团队决定使用列专业进行矩阵运算的线索。是不是因为他们对矩阵的操作方式适合列专业或其他东西。
提前谢谢。
【问题讨论】:
-
大多数计算都可以用所有变量转置来重写。这会将行变成列。选择的顺序使一侧的向量乘以比另一侧更快,一旦做出选择,您应该将选择传播到算法中的所有其余计算。具体来说,乘以
w*A比A*v慢。于是就有了答案:人们更喜欢A*v -
线性代数更方便一点,它继承自Matlab,这是寻找用户友好linalg灵感最明显的地方。另外,你必须选择some维度,选择first维度而不是second不是更自然吗?为什么不是第三个,或者最后一个。让第二维度最快一直让我觉得特别奇怪和武断。
-
可能是因为大多数数字库最初是用 Fortran 编写的,它使用列优先存储,然后模仿数学中的向量按惯例列的事实。同样适用于 Matlab,它最初是一种与一些 Fortran 线性代数包对话的便捷方式。
-
不,不是列专业比行专业快或慢。您可以选择是否需要快速列操作或快速行操作。一个本身并不比另一个快。
-
我知道这是严重的吹毛求疵,但不,C 在设计上不是“行专业”,这只是一个人如何创建多维数组的结果记忆。例如,对于 3 维数组,最里面的维度将是内存中连续的一维,而不是第二维。而在设计时考虑到数组/矢量化编程的科学编程语言往往会明确决定如何在内存中表示此类数组。大多数科学编程语言都选择如上所述的“向量”表示。 Python 是一个例外,主要是作为历史意外
标签: performance matrix julia