MATLAB 并行计算效率很低,咋办?
因为这里矩阵乘法本身就是多线程的,目前版本 MATLAB 大部分的内建数值计算函数也都是多线程的。具体来说,MATLAB 的矩阵乘法在 intel CPU 上调用了 mkl 的多线程版本作为 BLAS想更快的话可以考虑下 GPU 运算
■网友
并行不一定更快,甚至会更慢,因为会有通讯成本。提速的方案有: 1 改进程序算法,尽量降低时间复杂度2 用profiler计时,找到那个性能瓶颈3 瓶颈用mex或Java改写或网上找到替代品。
■网友
本人是做FDTD优化的,对matlab的并行运算折磨了很久。 具体到你的问题:1. 只有两个3000*3000的矩阵,通信cost不是问题,非常小。2.matlab的矩阵乘法和所有点运算都是多线程优化的,所以你的spmd的耗时正好是4倍。3.对于一个3000*3000的矩阵运算,GPU运算比CPU快的不是一点半点的。以我的经验,矩阵运算尺寸100*100~1000*1000是CPU与GPU的运算能力的相交点(我的笔记本的cpu i7 6770,GPU NV960M)。尺寸100一下果断CPU+parfor,尺寸500以上,尝试GPU。4.对于你所需要的运算(随机,矩阵乘法)已经是最基本的运算,不要指望能找到能优化的mex。5.对于更普遍的问题,在运算中,我们经常需要其他的“常量”,如果这些常量比较大的话,是会严重影响parfor和GPU运算的。其中,parfor的comm cost 远高于GPU。总结起来:大尺寸用GPU,小尺寸的复杂运算用parfor,基础运算啥也不用最快。
■网友
【MATLAB 并行计算效率很低,咋办?】 大规模矩阵运算?
ArrayFire +GPU+c++效率应该没的说吧.
推荐阅读
- 有啥方法,网站,项目可以自己练习计算广告学
- 大部分黑客或安全研究员读的是啥「大学专业 」
- 在哈尔滨工业大学计算机系就读是啥样的体验
- 计算机技术与科学专业怎样利用高中毕业的暑假
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 「巧克力中富含黄烷醇,能够增强脑部活动能力;因此人均巧克力消费量越高的国家,按人口平均计算的诺贝尔奖得主人数就越多。」这种说法科学么
- 有点计算机基础的人想尽快找份编程的工作。哪种编程的工作最好找还需要学些啥
- 硕士研究生选通信还是计算机视觉
- 华威大学计算机本科咋样
- 中兴努比亚 Z5 的边框到底有多窄