问题标签 [matrix-multiplication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6079 浏览

python - numpy:计算大矩阵的 xT*x

numpy中,计算 的最有效方法是什么x.T * xx大型 (200,000 x 1000) 密集float32矩阵.T在哪里,转置算子在哪里?

为免生疑问,结果为 1000 x 1000。

编辑:在我原来的问题中,我说这np.dot(x.T, x)需要几个小时。事实证明,我NaNs偷偷溜进了矩阵,出于某种原因,这完全扼杀了性能np.dot(任何关于为什么的见解?)现在已经解决了,但最初的问题仍然存在。

0 投票
5 回答
76275 浏览

cuda - CUDA 确定每个块的线程数、每个网格的块数

我是 CUDA 范式的新手。我的问题是确定每个块的线程数和每个网格的块数。有一点艺术和试验的作用吗?我发现很多例子都为这些东西选择了看似任意的数字。

我正在考虑一个问题,我可以将任意大小的矩阵传递给乘法方法。因此,C 的每个元素(如 C = A * B)将由单个线程计算。在这种情况下,您将如何确定线程/块、块/网格?

0 投票
3 回答
12290 浏览

algorithm - MATLAB 中超大矩阵的高效乘法

我没有足够的内存来简单地创建一个对角 D-by-D 矩阵,因为 D 很大。我不断收到“内存不足”错误。

我没有在第一次乘法中执行 M x D x D 操作,而是执行 M x D 操作,但我的代码仍然需要很长时间才能运行。

任何人都可以找到一种更有效的方法来执行乘法A'*B*A吗?这是我到目前为止所尝试的:

替代文字

0 投票
8 回答
18490 浏览

algorithm - 最好的矩阵乘法算法是什么?

最好的矩阵乘法算法是什么?对我来说“最好的”是什么意思?这意味着最快且为当今的机器做好准备。

如果可以的话,请给出伪代码的链接。

0 投票
1 回答
1283 浏览

c++ - 使用 Octave 库的 C++ 中的稀疏矩阵乘法,如 (maxmin)

我正在实现一个 maxmin 函数,它的工作原理类似于矩阵乘法,但它不是对乘积求和,而是在两个数字之间逐点获得最大值。天真的实现的一个例子是

我将它编码为 Octave oct 文件,所以我必须使用 oct.h 数据结构。问题是我想实现一个稀疏版本,但通常你需要在行或列中引用下一个非零元素,如本例(参见 4.3 算法): http://www.eecs.harvard .edu/~ellard/Q-97/HTML/root/node20.html

那里做 row_p->next 给出了行的下一个非零元素(列相同)。有没有办法对 octave SparseMatrix 类做同样的事情?或者是否有另一种实现稀疏矩阵乘法的方法可以用于我的 maxmin 函数?

0 投票
1 回答
918 浏览

sparse-matrix - OpenFOAM、PETSc或其他稀疏矩阵乘法源码

有人能告诉我,我在哪里可以找到 OpenFOAM、PETSc 或类似工具实现的矩阵乘法的源代码?它不能是微不足道的算法。我找到了 OpenFOAM 和 PETSc 的主页,但在文档中我找不到乘法方法和源代码。

0 投票
2 回答
5375 浏览

iphone - 平滑滚动/惯性滚动/动量滚动

我在 Android 中有一个 OpenGL ES 视图,它由一个用于翻译的矩阵控制。我试图找出一种方法来获得在谷歌地图应用程序或 iPhone 中看到的动量滚动提示。谢谢。

0 投票
4 回答
7735 浏览

c# - C# 中更快的矩阵乘法

我有一个涉及矩阵的小型 c# 项目。我正在处理大量数据,方法是将其拆分为 n 长度的块,将卡盘视为向量,并乘以 Vandermonde** 矩阵。问题是,根据条件,卡盘的大小和相应的 Vandermonde** 矩阵可能会有所不同。我有一个易于阅读的通用解决方案,但太慢了:

这可以在我的 i5 U470 @ 1.33GHz 上每秒处理大约 1/4 兆字节。我可以通过手动内联矩阵乘法来加快速度:

这可以处理大约 1 兆每秒。

(请注意,“mod”是对 GF(2^8) 模我最喜欢的不可约多项式进行运算。)

我知道这可以变得更快:毕竟,Vandermonde** 矩阵大多为零。我应该能够创建一个例程,或者找到一个例程,它可以获取我的矩阵并返回一个优化的方法,该方法将有效地将向量乘以给定的矩阵,但速度更快。然后,当我给这个例程一个 5x5 Vandermonde 矩阵(单位矩阵)时,根本不需要执行任何算术运算,只是复制了原始数据。

** 请注意:我使用的术语“范德蒙德”实际上是指一个身份矩阵,其中附加了范德蒙德矩阵中的一些行(见评论)。这个矩阵非常棒,因为所有的零,而且如果你删除足够多的行(你选择的)使它成为正方形,它就是一个可逆矩阵。而且,当然,我想使用相同的例程将这些倒置矩阵中的任何一个转换为优化的指令系列。

我怎样才能使这个矩阵乘法更快?

谢谢!

(编辑以纠正我对范德蒙德矩阵的错误)

0 投票
1 回答
1055 浏览

algorithm - 矩阵-矩阵乘法/矩阵-向量乘法有哪些不同类型的算法

矩阵-矩阵乘法和矩阵-向量乘法有哪些不同类型的算法。

Cannon 算法就是这样一种用于矩阵-矩阵乘法的算法。有没有其他算法..

你觉得哪个算法更好???

0 投票
2 回答
12460 浏览

performance - OpenMP 通过三重 for 循环并行化矩阵乘法(性能问题)

我正在使用 OpenMP 编写一个矩阵乘法程序,为了缓存方便,实现乘法 A x B(转置)行 X 行而不是经典的 A x B 行 x 列,以提高缓存效率。这样做我遇到了一个有趣的事实,对我来说是不合逻辑的:如果在这段代码中我并行化外部循环,则程序比我将 OpenMP 指令放在最内部的循环中要慢,在我的计算机中,时间是 10.9 秒对 8.1 秒。