[英]How to use OpenMP in my MEX-file without crashing MATLAB?
[英]Can I speed up my MATLAB code using a MEX-file if the bottleneck is a big matrix multiplication?
我有一个项目,要求我在while循环中多次设置两个大矩阵。 使用更大的矩阵,代码可以运行得非常慢。
我只是好奇如果使用mex和.cpp文件可以真正提高程序的速度。 内置的MATLAB矩阵乘法不是很好吗?
如果没有关于您的问题的更具体的信息,任何人都可以说的具体事情很少。 在某些情况下,MEX功能肯定可以提高性能,有些情况下它们不能。 矩阵乘法是Matlab的优势之一,只需将矩阵乘法移动到MEX函数中就不太可能使代码运行得更快。
也就是说,有一些提高性能的一般策略:
首先,我假设这些矩阵彼此相关,随着时间的推移或类似的情况发展。 如果从一个实例到下一个实例的每个矩阵完全不相关,这将无济于事。 然而,如果它们是相关的,那么我发现矩阵的变化可能很小甚至是稀疏的。 给出基本方程C(i)= A(i)* B(i)如果创建delta矩阵Da = A(i + 1) - A(i)Db = B(i + 1) - B(i)那么当然C(i + 1)= C(i)+ Da * B(i)+ A(i)* Db + Da * Db其中C(i)是已知的。 如果Da和Db很小或稀疏,则这3个矩阵乘法可以快得多。 它们甚至可能是正交的,并且最后一个项被删除,或者其结果被忽略为数量级的二阶。 只是一个想法。 Matlab矩阵问题有很多工具,不要放弃Matlab了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.