转:MATLAB加速

  1. 向量化。养成看到for就浑身不舒服的本能反应。
  2. 矩阵如果太大了会爆内存则千万别向量化,老老实实用循环吧。有些3-4纬的矩阵,用循环处理起来甚至快一些。
  3. 循环竖着走比横着走快。
  4. 不少内置函数都有大量的error check。直接用profiler找出真正干活的。
  5. 不少内置函数在网上都有人提供了更快的版本的,当然功能弱一些,正好符合提速的需求。
  6. 视情况,有时可以把变量强行变成single,速度暴增。
  7. 利用copy on write的特点,丢进函数的变量能不对其修改就不要修改。
  8. matlab就是个高级计算器,不要拿干来处理文件,往数据库里塞数据这种活。eval, object之类的东西能别碰就别碰,尽量保持着every is an array of double的模式。
  9. 不要把代码全塞到一行。不但难看有时候还慢一些。

链接:https://www.zhihu.com/question/31028195/answer/121589291

  1. 循环向量化
  2. 利用函数的矩阵输入功能批量处理
  3. 必须用for且费时的地方改成单层parfor,要是循环次数比cpu核数还少反而会拖慢程序
  4. 非常大的矩阵的运算可以用gpuArray(这个在matlab 深度学习工具箱中深有体会)
  5. 能用矩阵不要用cell,速度慢且占内存巨多
  6. 对调用频繁且费时的地方尝试生成c ,写成mex
  7. 按编译器提示先初始化矩阵大小(但我大部分时候还是懒得预先算矩阵大小…)
  8. Matlab 是可以多开的,如果parfor不能改或者懒得改可以“人肉parfor”,也就是把一个for拆成几段然后多开几个matlab 一起执行,最后再合并结果,比较暴力哈哈
  9. 费时的程序最后加个email发送程序,跑完直接把结果发邮箱里

链接:https://www.zhihu.com/question/31028195/answer/575537232

  1. 预先定义好变量的维度
    类似于数组的变量都是连续存放在内存里,如果每次赋值时都要change size的话,MATLAB只好重新找一块连续的内存放这些数据,增加了数据在内存里不必要的读取存储。

  2. 使用函数句柄

【矢量化大法好】【GPU大法好】

GPU加速
GPU(NVIDIA显卡的GPU加速)的流处理器个数远多于CPU核心数,并行如果放到显卡里对运算的优化是显而易见的。

https://www.zhihu.com/question/31028195

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值