相关疑难解决方法(0)

为什么MATLAB在矩阵乘法中如此之快?

我正在使用CUDA,C++,C#和Java进行一些基准测试,并使用MATLAB进行验证和矩阵生成.但是当我乘以MATLAB时,2048x2048甚至更大的矩阵几乎立即成倍增加.

             1024x1024   2048x2048   4096x4096
             ---------   ---------   ---------
CUDA C (ms)      43.11      391.05     3407.99
C++ (ms)       6137.10    64369.29   551390.93
C# (ms)       10509.00   300684.00  2527250.00
Java (ms)      9149.90    92562.28   838357.94
MATLAB (ms)      75.01      423.10     3133.90
Run Code Online (Sandbox Code Playgroud)

只有CUDA具有竞争力,但我认为至少C++会有点接近并且不会60x慢.

所以我的问题是 - MATLAB如何快速地完成它?

C++代码:

float temp = 0;
timer.start();
for(int j = 0; j < rozmer; j++)
{
    for (int k = 0; k < rozmer; k++)
    {
        temp = 0;
        for (int m = 0; m < rozmer; m++)
        {
            temp …
Run Code Online (Sandbox Code Playgroud)

performance matlab cuda matrix-multiplication

184
推荐指数
7
解决办法
5万
查看次数

如何实现Matlab的mldivide(又名反斜杠运算符"\")

我正在尝试开发一个面向矩阵的小型数学库(我使用Eigen 3进行矩阵数据结构和操作)我想实现一些方便的Matlab函数,比如广泛使用的反斜杠运算符(相当于mldivide)以计算线性系统的解(以矩阵形式表示).

有关如何实现这一目标的详细解释吗?(我已经用经典的SVD分解实现了Moore-Penrose伪反向pinv函数,但我读过的地方A\b并不总是如此pinv(A)*b,至少Matalb并不是那么简单)

谢谢

c++ matlab matrix linear-algebra equation-solving

19
推荐指数
1
解决办法
2万
查看次数

性能:Matlab与C++矩阵向量乘法

前言

前段时间我问了一个关于Matlab与Python 性能的问题(性能:Matlab与Python).我很惊讶Matlab比Python更快,特别是在meshgrid.在讨论这个问题时,我指出我应该使用Python中的包装器来调用我的C++代码,因为我也可以使用C++代码.我在C++,Matlab和Python中使用相同的代码.

在这样做时,我再次惊讶地发现Matlab在矩阵汇编计算中比C++更快.我有一个稍大的代码,我正在研究一段矩阵向量乘法.较大的代码在多个实例处执行这样的乘法.总体而言,C++中的代码比Matlab快得多(因为Matlab中的函数调用具有开销等),但Matlab似乎在矩阵向量乘法(底部的代码片段)中优于C++.

结果

下表显示了组装内核矩阵所需的时间与将矩阵与向量相乘所需的时间的比较.结果汇总为一个矩阵大小NxN,其中N从10,000至40,000变化.哪个不是那么大.但有趣的是,Matlab的表现优于C++ N.Matlab的总​​时间快3.8到5.8倍.此外,它在矩阵组装计算中也更快.

 ___________________________________________
|N=10,000   Assembly    Computation  Total  |
|MATLAB     0.3387      0.031        0.3697 |
|C++        1.15        0.24         1.4    |
|Times faster                        3.8    |
 ___________________________________________ 
|N=20,000   Assembly    Computation  Total  |
|MATLAB     1.089       0.0977       1.187  |
|C++        5.1         1.03         6.13   |
|Times faster                        5.2    |
 ___________________________________________
|N=40,000   Assembly    Computation  Total  |
|MATLAB     4.31        0.348        4.655  |
|C++        23.25       3.91         27.16  |
|Times faster                        5.8 …
Run Code Online (Sandbox Code Playgroud)

c++ performance matlab matrix eigen

7
推荐指数
1
解决办法
1260
查看次数