MATLAB并行加速方法

这篇具有很好参考价值的文章主要介绍了MATLAB并行加速方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用MATLAB运行计算任务时,有时会遇到程序中有很多重复计算部分,多次循环中,每一次的计算之间无相互依赖(即后一次的计算不需要使用到前一次的计算结果),可能仅改变了输入参数,这时候如果串行计算效率十分低下,因此我们希望能够使用多线程进行加速。本文给大家介绍一种简易MATLAB加速方法。

1.Parallel Computing Toolbox简介

Parallel Computing Toolbox是一个matlab自2011版开始提供的工具箱,用于提供交互式的并行计算功能。

Parallel Computing Toolbox可以在多处理器计算环境中使用 MATLAB 和 Simulink 解决计算、数据密集型问题。使用工具箱可以解决通过装配多个处理器包含几个单独工作单位或单个大型计算的问题。

利用并行计算工具箱(Parallel Computing Toolbox),可在多核和多处理器计算机上使用 MATLAB 和 Simulink 来解决计算问题和数据密集型问题。并行处理结构包括并行 for 循环和代码块、分布式数组、并行数值算法,以及消息传递函数等,并以较高的级别在 MATLAB 中执行任务及数据并行算法,而无需为特定的硬件和网络架构编写程序。这样,将串行 MATLAB 应用程序转换为 并行 MATLAB 应用程序,便几乎不需要修改代码,且不需要使用低级语言编写程序。

MATLAB并行加速方法

2.使用方法

此方法只需要简单修改程序即可完成并行计算。通过脚本测试,可以有效提升运算速度。

首先我们需要安装Parallel Computing Toolbox工具箱。

2.1 并行参数设置

可以通过在matlab中输入以下指令查看电脑可以最大支持几个线程

N = maxNumCompThreads

MATLAB并行加速方法

 2.2 测试脚本

然后通过以下两段简单测试代码,即可明白如何使用。

第一段是正常的for循环运行,随机产生两个1000*1000的随机矩阵,然后进行对应元素相乘。

tic
for i=1:10000
    a1=rand(1000,1000);
    a2=rand(1000,1000);
    a3=a1.*a2;
end
toc

第二段代码则是采用本方法进行并行加速,首先声明poolSize=8表示进程池中将开8个进程对计算任务进行并行加速,然后通过parpool('local',poolSize);创建进程池,然后将需要加速的for循环代码段改成parfor,最后程序执行完,不要忘记delete(gcp('nocreate'))关闭进程池,否则下次运行程序会出现问题。

clc
clear
poolSize = 8
 
p=parpool('local',poolSize);
tic
parfor i=1:10000
    a1=rand(1000,1000);
    a2=rand(1000,1000);
    a3=a1.*a2;
end
toc
delete(p);

MATLAB并行加速方法

 2.3 结果分析

打开任务管理器我们可以看到8个cpu同时在执行计算任务。从最后的计算结果我们可看到,两段代码同样for循环10000次,通过本方法加速后的程序只需要40s即可执行完毕,而普通的程序则需要156s,速度提升了近4倍。

MATLAB并行加速方法

注意:最新几个版本的Matlab已经将并行处理的工具包 parallel pool自动打开,我们只需要要将程序中的for改为parfor即可实现并行化处理。


 

3.并行计算工具箱使用注意事项

1.计算任务之间和循环之间需要独立

并行处理的计算操作需要是相互独立的,例如不能并行计算结果有先后依赖的。

2.不能嵌套parfor循环(可以一个用for,一个用parfor,或者通过矩阵运算减少for的嵌套次数)

3.不能含有break或者return等语句;

4.不能引入load global eval等特殊语句文章来源地址https://www.toymoban.com/news/detail-436650.html

到了这里,关于MATLAB并行加速方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB 并行计算 parfor 用法及注意事项

    最近在用MATLAB做工作空间计算,for循环次数较多,运算非常慢,同学说可以使用并行计算,于是尝试,大开眼界。 参考文章:Matlab并行计算(新手)_a99h的博客-CSDN博客 在较新版本的matlab中,不需要使用p=parpool(n)来手动开启线程池,操作变得更简单。 (注:MATLAB 2023a已经不需

    2024年02月10日
    浏览(37)
  • 天去面试的时候,遇到一个问题。我三个任务,ABC,我怎么让A执行完执行B,B执行完执行C 3个并行线程,如何解决。程池的核心运行原理和参数。

    今天去面试的时候,遇到一个问题。我三个任务,ABC,我怎么让A执行完执行B,B执行完执行C 3个并行线程,如何解决。程池的核心运行原理和参数。 1.线程池核心的参数 1.线程核心数- 线程池中始终保持的活动线程数量。 2. 最大线程数 - 线程池能够容纳的最大线程数量。 3.

    2024年02月11日
    浏览(37)
  • 卷积计算加速方法--分块卷积

      当卷积的输入太大导致内存不够用时,考虑将一大块卷积分成多个小块分别进行卷积,相当于将原始输入分成几个小的输入经过同一组卷积核分别卷积,其中每块小的输入都是原始输入的子集,每块之间互不影响,最后将结果合并,实现分块卷积的输出结果与整个输入卷

    2024年02月11日
    浏览(53)
  • 如何在C/C++中测量一个函数或者功能的运行时间(串行和并行,以及三种方法的实际情况对比)

    本文算是一个比较完整的关于在 C/C++ 中测量一个函数或者功能的总结,最后会演示三种方法的对比。 最常用的测量方法是使用 clock() 来记录两个 CPU 时间点 clock_t ,然后做差。这个方法的好处在于非常简单易写,如下(第一行是为说明需要导入哪个库): 需要注意 3 点:

    2024年04月23日
    浏览(37)
  • 【任务分配】基于matlab市场的方法求解多机器人任务分配问题【含Matlab源码 3992期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年03月11日
    浏览(42)
  • 《计算机组成原理》期末考试手写笔记——模块五: 并行主存系统(交叉存储器+顺序存储器“带宽”的计算方法)

    目录 (一)知识点总结   (二)经典考试例题 1.设主存储器容量为256字,字长为32位,模块数m=4,分别用顺序方式和交叉方式进行组织。主存储器的存储周期T=200ns,数据总线宽度为32位,总线传送周期τ=50ns。若按地址顺序连续读取4个字,问顺序存储器和交叉存储器的带宽各

    2024年02月08日
    浏览(49)
  • 【C#】并行编程实战:任务并行性(中)

            本教程对应学习工程:魔术师Dix / HandsOnParallelProgramming · GitCode                  本章继续介绍任务并行性,因篇幅所限,本章为中篇。         .NET Framework 提供了以下两个类来支持任务取消: CancellationTokenSource :此类负责创建取消令牌,并将取消请求传

    2024年02月09日
    浏览(43)
  • 【C#】并行编程实战:任务并行性(上)

             本教程对应学习工程:魔术师Dix / HandsOnParallelProgramming · GitCode                  在 .NET 的初始版本中,我们只能依赖线程(线程可以直接创建或者使用 ThreadPool 类创建)。ThreadPool 类提供了一个托管 抽象层 ,但是开发人员仍然需要依靠 Thread 类来进行更

    2024年02月09日
    浏览(42)
  • 【任务分配】基于市场方法求解多机器人任务分配问题附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信       无

    2024年04月09日
    浏览(43)
  • Pytorch 多卡并行(3)—— 使用 DDP 加速 minGPT 训练

    前文 并行原理简介和 DDP 并行实践 和 使用 torchrun 进行容错处理 在简单的随机数据上演示了使用 DDP 并行加速训练的方法,本文考虑一个更加复杂的 GPT 类模型,说明如何进行 DDP 并行实战 MinGPT 是 GPT 模型的一个流行的开源 PyTorch 复现项目,其实现简洁干净可解释,因而颇具

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包