一、 遵守Performance Acceleration的规则
二、 遵守三条规则
一、 遵守Performance Acceleration的规则
关于什么是“Performance Acceleration”请参阅matlab的帮助文件。我只简要的将
其规则总结如下7条:1、只有使用以下数据类型,matlab才会对其加速:logical,char,int8,uint8,int16,uint16,int32,uint32,double
而语句中如果使用了非以上的数据类型则不会加速,如:numeric,cell,structure,single,
function handle,java classes,user classes,int64,uint64
2、matlab不会对超过三维的数组进行加速。3、当使用for循环时,只有遵守以下规则才会被加速:a、for循环的范围只用标量值
来表示;
b、for循环内部的每一条语句都要满足上面的两条规则,即只使用支持加速的数
据类型,只使用
三维以下的数组;c、循环内只调用了内建函数(build-in function)。4、当使用if、elseif、while和switch时,其条件测试语句中只使用了标量值时,将
加速运行。
5、不要在一行中写入多条操作,这样会减慢运行速度。即不要有这样的语句:
x = a.name; for k=1:10000, sin(A(k)), end;
6、当某条操作改变了原来变量的数据类型或形状(大小,维数)时将会减慢运行速
度。
7、应该这样使用复常量x = 7 + 2i,而不应该这样使用:x = 7 + 2*i,后者会降低
运行速度。
二、 遵守三条规则
1、尽量避免使用循环,MATLAB的文档中写到“MATLAB is a matrix language, which means it is designed
for vector and matrix operations. You can often speed up your M-file c
ode by using
vectorizing algorithms that take advantage of this design. Vectorizati
on means converting
for and while loops to equivalent vector or matrix operations.”。改进
这样的状况有两种方法:
a、尽量用向量化的运算来代替循环操作。如将下面的程序:
i=0;
for t = 0:.01:10
i = i+1;
y(i) = sin(t);
end
替换为:
t = 0:.01:10;
y = sin(t);
速度将会大大加快。最常用的使用vectorizing技术的函数有:All、diff、ipermute、permute、reshape、squeeze、any、find、logical、prod、shiftdim、sub2ind、cumsum、ind2sub、ndgrid、repmat、sort、sum 等。
请注意matlan文档中还有这样一句补充:“Before taking the time to
vectorize your code, read the section on Performance Acceleration.
You may be able to
speed up your program by just as much using the MATLAB JIT Accelera
tor instead of
vectorizing.”。何去何从,自己把握。
b、在必须使用多重循环时下,如果两个循环执行的次数不同,则在循环的外环执
行循环次数少的,
内环执行循环次数多的。这样可以显著提高速度。
2、a、预分配矩阵空间,即事先确定变量的大小,维数。这一类的函数有zeros、ones、cell、struct、repmat等。
b、当要预分配一个非double型变量时使用repmat函数以加速,如将以下代码:
A = int8(zeros(100));
换成:
A = repmat(int8(0), 100, 100);
c、当需要扩充一个变量的大小、维数时使用repmat函数。
3、a、优先使用matlab内建函数,将耗时的循环编写进MEX-File中以获得加速。b、使用Functions而不是Scripts 。
分享到:
相关推荐
Jacet Engine 是专门用于 MATLAB 的于 GPU 加速的计算引擎。其使标准的 MATLAB 代码能够在 GPU 上运行,将 Matlab 的友好用户界面和 GPU 的技术速度和可视化能力直接连接起。Jacket并非另外一种 GPU 的 API(应用...
matlab运算采用GPU加速的资料,通过matlab和cuda的交互,提升matlab运行的计算速度
matlab开发-在Matlab中创建编译和运行CudaAcceleratedProgram的辅导。关于在Matlab中创建、编译和运行CUDA加速程序的教程
MATLAB平台下的CUDA加速库。运用该库可避免在MEX函数中来回拷贝GPU数据,提高MATLAB运行速率。附件给出一个简单的矩阵乘法的示例程序,该程序在GTX TITAN下运行效率比intel i7 3930k提高了10倍。
(3)GPUmat使用GPU多核架构加速Matlab函数; (4)已有的Matlab代码可经少量修改而获得移植和执行; (5)通过Matlab脚本语言访问GPU资源,结合了Matlab快速原型开发和GPU快速执行的能力; (6)GPUmat可以用作...
MATLAB 程序优化加速,详细介绍如何优化和加快MATLAB 程序运行的速度;
CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:P1_1.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据...
matlab加速迭代法代码机管局 AA( Anderson Acceleration ) 本文中所述的Anderson Acceleration算法的C(带有python接口)实现 可用的MATLAB代码(以及本文中介绍的实验): Python 要安装软件包,请使用: cd ...
似乎对于该程序,转换为python导致加速大约两倍,并且 使用cython 将SMOP运行时库编译runtime.py为C 实现了额外的两倍加速。这个伪基准测量标量性能,而我的解释是标量计算对八度组不太感兴趣。 使用方法: $ cd ...
基于步进电机加速曲线生成加速曲线的png格式图片的Matlab仿真源码.zip 已获导师指导并通过的97分的高分课程设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于步进电机加速...
matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。 Matlab(Matrix Laboratory)是一种专为数值计算和科学与工程应用而设计的高级编程语言和环境。在...
1.版本:matlab2014/2019a,内含运行结果,不会运行可私信 2.领域:智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,更多内容可点击博主头像 3.内容:标题...
matlab代码提供加速遗传算法投影寻踪模型基于实数编码的加速遗传算法求解投影寻 踪模型Matlab代码 有案例和操作步骤,手把手教你怎么操作 参考文献, 讲解非常详细,参数设置说得很清楚 用于综合评价指标体系的测算...
谱方法国外经典教程,在Matlab中实现,加速计算运行
Matlab 加速 技巧,一本非常实用的书,帮助你合理运用Matlab的函数库,加速代码运行
CSDN海神之光上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:main_kf.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据...
包括有关如何使用 Visual Studio 创建与 Matlab 兼容的 Cuda 代码、如何使用各种方法编译、调试和运行它等的指南。
1.版本:matlab2014/2019a/2021a,内含运行结果,不会运行可私信 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子...
matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。 Matlab(Matrix Laboratory)是一种专为数值计算和科学与工程应用而设计的高级编程语言和环境。在...
这里提供的代码是马尔可夫链蒙特卡罗算法,它并行运行多个链以进行有效的后验探索。名为 DREAM_(ZS) 的算法基于原始的 DREAM 采样方案,但使用来自过去状态存档的采样来生成每个单独链中的候选点。Vrugt 等人提出了 ...