MATLAB code 加速

MATLAB code 加速


实验平台:联想小新air13 2018款,CPU-i5 8265U 4核心

参考视频链接 How to speed up MATLAB code.mp4

利用探查器对脚本语句进行改进

1、查看脚本运行时间

使用tictoc命令:

tic; randGrid_start; toc

时间已过 100.763126 秒。

2、step1 预分配内存

代码分析器如下图右方显示:

🍊 桔色代表可以进行一些改进,🍏绿色表示代码准备就绪。在这里插入图片描述上图显示: AB 矩阵随迭代次数变化,简单的改进为:为 AB 预分配内存,如代码randGrid_step1.m所示。

tic; randGrid_step1; toc

时间已过 1.180223 秒。

3、step2 使用 MATLAB 探查器

  • 进入探查器:主页 > 运行并计时
    在这里插入图片描述
  • a. 输入脚本名称, b. 点击开始探查,c. 进入函数
  1. 查看代码耗时较多语句:
    在这里插入图片描述
    ​ 显示在随机数分配耗时较多。

  2. 改进随机数分配,见代码randGrid_step2.m

    randGrid_step2.m进行探查
    在这里插入图片描述

4、step3 使用逻辑数组改进判断语句:

在这里插入图片描述
使用MATLAB逻辑索引进行向量化操作,见代码randGrid_step3.m
在这里插入图片描述
使用逻辑数组 idx, 满足条件即赋值。
在这里插入图片描述

使用多核心并行运算

1、 查看脚本运行时间

脚本randGridEig_start.m,计算矩阵的最大特征向量

tic; randGridEig_start; toc

时间已过 882.065692 秒。

大部分时间花在计算循环中特征值的部分,没法改进循环的可能性。

2、 利用多个核心进行计算

这种情况下,利用计算机的多个核心,分别计算每个循环迭代任务,然后合并结果。

使用Parallel Computing Toolbox来完成。

在命令行窗口输入:

>> parpool

创建MATLAB worker的并行池。

Starting parallel pool (parpool) using the ‘local’ profile …
connected to 4 workers.

ans =

Pool - 属性:

        Connected: true
       NumWorkers: 4
          Cluster: local
    AttachedFiles: {}
AutoAddClientPath: true
      IdleTimeout: 30 minutes (30 minutes remaining)
      SpmdEnabled: true

本机为4核心处理器。

for循环改为parfor循环:
在这里插入图片描述
查看运行时间:

tic; randGridEig_step1; toc

时间已过 731.125419 秒。

notes:

  • 执行并行任务会带来时间损失,例如通信开销和并行池设置,建议进行一些时间测试,以确保使用并行计算是值得的;
  • 所有的串行代码不一定适宜并行化

其他方法

Accelerating MATLAB Algorithms and Applications

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab code是一种用于编写和运行Matlab程序的编程语言。使用Matlab code,您可以实现各种功能,如运行加速、生成C代码、动态链接库分发、数据限制以及运行内存和算法量检查等。 Matlab Coder是一个强大的工具,通过它可以将Matlab代码转化为C代码,以实现更快的运行速度。您可以使用Matlab Coder来对Matlab代码进行优化和生成可移植的C代码,从而实现在不同平台上的部署和分发。 除了生成C代码外,Matlab Coder还可以生成Matlab动态链接库(MEX文件),以便在其他编程语言中调用Matlab函数。这使得Matlab代码可以与其他编程语言进行交互和集成,实现更复杂的功能和应用。 使用Matlab Coder还可以进行数据限制,即对输入数据进行约束和验证,确保输入数据满足预设的条件。例如,您可以定义输入数据的范围、类型和大小,并进行合法性检查,以避免错误和异常情况的发生。 此外,Matlab Coder还提供了运行内存和算法量检查功能,可以帮助您评估和优化代码的资源使用情况。您可以查看代码的内存消耗情况,并评估代码的计算复杂度和算法效率,以优化代码的性能和资源利用。 总之,Matlab code是一种用于编写和运行Matlab程序的编程语言,而Matlab Coder是一个强大的工具,可以将Matlab代码转化为C代码,实现更快的运行速度,并提供了许多功能和工具,以帮助您优化和生成可移植的代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [matlab coder分析](https://blog.csdn.net/qq_41886488/article/details/88649213)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值