Matlab 并行

article/2025/9/13 16:16:12

Matlab 并行

  • 1. 检查是否有并行附加功能
  • 2. 创建和删除并行
    • 2.1 创建默认的并行池
    • 2.2 在本地创建
    • 2.3 在集群创建
    • 2.4 删除
  • 3. Parallel pool 包含的一些函数
    • 3.1 parfor
    • 3.2 parfeval

初学,肯定有理解不够的地方。看官方文件更靠谱。

1. 检查是否有并行附加功能

红框是我们需要的
如果没有,可以"主页–>附加功能–>获取附加功能",下载一下就好了。

2. 创建和删除并行

2.1 创建默认的并行池

parpool
% 这样就可以了,或者
parpool(num)
% num 为 workers 的个数 

2.2 在本地创建

% 两种环境
parpool('process') 
parpool('local') 
%Start a parallel pool of process workers. 这两个是一样的,process based 是默认环境。parpool('thread') %Start a parallel pool of thread workers.

怎么选择这两种环境? 官方文件给了下面的的流程图。
在这里插入图片描述
process based:支持完整的并行语言;版本兼容;更稳健
thread based:相比较,内存少,速度快

2.3 在集群创建

c = parcluster % 创造一个默认配置的集群
parpool(c)

2.4 删除

p = parpool('local);
delete(p) %删除

另外,如果有并行池在运行,Matlab 左下角会有
在这里插入图片描述
否则,状态是
在这里插入图片描述

3. Parallel pool 包含的一些函数

3.1 parfor

for 循环用法相似。有很多循环,或者一个循环需要很长时间就可以用 parfor 了。

parfor loopVar = initVal:endValstatements;
end

【Tips:】
a.)因为是分块运算,所以 parfor 中的循环要独立。(不能有类似‘ num=num+1;’ 这种了)
b.)需要所有循环结束才能得到结果。

3.2 parfeval

不用等循环跑完就能得到已经完成的项目的结果

F = parfeval(pool,fcn,numout,X1,...,Xm) % 'pool' is optional

fcn: 是要运行的 function;
numout: function 运行完后输出的结果数量。可以是向量 [ y 1 , y 2 , . . . , y n ] [y_1,y_2,...,y_n ] [y1,y2,...,yn],这属于输出结果数量为1;
X1,…,Xm: 是 function 运行的输入变量;
F: 是一个未来变量,将 function 还没运行结束的对象赋给 F。

a) 在 运行中, 可以通过 F 得到每个并行状态。

p = parpool(2);
for n = 1:5if n == 3f(n) = parfeval(@pause,0,1);elsef(n) = parfeval(@pause,0,Inf);end
end{f.State}
% ans = 1×5 cell
%    {'running'}    {'running'}    {'queued'}    {'queued'}    {'queued'}

设定了 2 个 workers,因此有三个循环在排队等待。

b) 运行结束,获得运行结果。
fetchOutputs 函数得到输出值。

f = parfeval(@magic,1,10);
value = fetchOutputs(f);

如果在 for 循环里,可以提交多个未来请求,得到向量 f 。 并用 fetchNext 提取结果。

f(1:10) = parallel.FevalFuture; % 预先分配空间
for idx = 1:10f(idx) = parfeval(@magic,1,idx);
end
% 提取结果
magicResults = cell(1,10); 
for idx = 1:10[completedIdx,value] = fetchNext(f);magicResults{completedIdx} = value;fprintf('Got result with index: %d.\n', completedIdx);
end

completedIdx 代表原来循环计算的压入 f 的索引号。parfeval 计算输出的结果并不按照顺序,也就是 idx 为 1 的结果并不一定比 idx 为 2 的结果先出来,是根据计算速度输出的。


http://chatgpt.dhexx.cn/article/QqP8iq3m.shtml

相关文章

并行处理及分布式系统期末总结笔记

并行处理及分布式系统期末总结笔记 1、任务并行、数据并行的应用2、冯诺依曼体系结构的瓶颈及改进,Flynn分类法涉及的几种模型及其特点3、Cache的特点,Cache缺失、Cache命中、Cache一致性及解决方法、伪共享、流水线、多发射4、加速比、效率、阿姆达尔定…

并行程序设计导论期末复习

任务并行、数据并行的应用 任务并行 将待解决问题所需要执行的各个任务分配到各个核上执行。 数据并行 将待解决问题所需要处理的数据分配给各个核,每个核在分配到的数据集上执行大致相似的操作。 冯诺依曼体系结构的瓶颈及改进,Flynn分类法涉及的几…

并行程序设计导论 概念总结

Parallel Programing caiyi 2021/6/17 第一章 1.为什么要构建并行系统? 电路晶体管密度过大会使处理器能耗增加,散热的问题使通过继续增快集成电路密度提高处理器性能不再现实,因此集成电路商决定构建多核处理器。 2.为什么要编写并行程序&#xf…

cuda 并行计算

1 简介 2006年,NVIDIA公司发布了CUDA,CUDA是建立在NVIDIA的GPU上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPU的并行计算引擎来更加高效地解决比较复杂的计算难题。CUDA是NVIDIA公司所开发的GPU编程模型,它提供了GP…

数据 并行

first 含义是计算机内包含一组处理单元(PE),每一个处理单元存储一个(或多个)数据元素。当机器执行顺序程序时,可对应于全部或部分的内部处理单元所存的数据同时操作。 将并行处理技术引入信息检索领域 把数…

并行的常见问题和注意事项

关于Oracle中的并行,可以说是一把双刃剑,用得好,可以充分利用系统资源,提升数据库的处理能力,用得不好,可能会适得其反。 并行的基本使用方法,对于大部分SQL开发者和DBA来说,并行的一…

并发和串行、并行的概念

先抛开语言不管,只聊概念,说起并发,就很容易想到它和串行、并行的区别。 串行:一次只能取得一个任务并执行这个任务,这个任务执行完后面的任务才能继续; 并发:指的是在同一个时间段内&#xf…

牛腩新闻发布--过程或函数 'news_selectByCaId' 需要参数 '@caid',但未提供该参数(二)

发现问题 之前有一篇博客是因为存储过程中没有添加相应的函数,导致出现了“过程或函数 ‘news_selectByCaId’ 需要参数 ‘caid’,但未提供该参数”,这次继续出现了这样一个问题,但是出现的错误就不再过程函数中了,而…

牛腩新闻发布--过程或函数 'news_selectByCaId' 需要参数 '@caid',但未提供该参数(三)

发现问题 这篇博客是建立在“牛腩新闻发布–过程或函数 ‘news_selectByCaId’ 需要参数 ‘caid’,但未提供该参数(二)”,因为在那篇博客中说出了我当时遇到的“过程或函数 ‘news_selectByCaId’ 需要参数 ‘caid’,…

【牛腩】-'T_news_selectByCaId' 需要参数 '@caid',但未提供该参数。”

问题截图 解决方案: 改动存储过程 BEGINselect n.id,n.title,n.createTime,c.[name],n.caId from T_news ninner join T_category c on n.caIdc.id and n.caIdcaidorder by n.createTime desc END检查传参是或否正确如果以上都没有错误,那就看一下是否…

【重要补充】关于第三方潜在SDK导致的5.1.2Data use sharing

接上一篇《关于IDFA、CAID和「5. 1.2 - Data use & sharing」》后,我们发现,苹果在14.5出来前,对于IDFA替代方案之数据收集的审核打击力度越来越大。 因5.1.2条款被拒,目前可以确认的原因有以下两大: 一、如果你…

spring笔记⑬——spring事务

事务的四个特征 CAID是事务的四个特征,所有事务都必须满足以下特性。 原子性(Atomicity):一个事务要么全部执行,要么不执行一致性(Consistency):事务的运行并不改变数据库中数据的一致性隔离性&#xff0…

SQL查询语句(内联,as,in,通配符)

最近在学习牛腩新闻发布系统,正如牛老师所说,作为一个优秀的.NET开发人员,对SQL语句不熟怎么能行呢,接下来就总结下牛老师写的存储过程中SQL语句,挺经典,举一反三 首先先展示出来适用于系统的三张表 新闻类…

【微信小程序 | 实战开发】配置微信小程序APPID并快速接入

写在前面: 你是否想要掌握人工智能的最新技术和应用?你是否想要成为未来社会的创新者和领导者?你是否想要和全球的优秀导师和同学一起学习和交流?如果你的答案是肯定的,那么欢迎来到床长人工智能教程网站,这里是你实现梦想的起点! 个人名片: 🐼作者简介:一名大一在校…

获取苹果收集设备ID的方法

目录 问题 解决 问题 如果我们想要通过工具获取苹果手机 iPhone 或者 iPad 的设备 ID,也就是 UDID。这个时候,很多人可能会问 UDID 是什么,UDID 是 iOS 设备的一个唯一识别码,每台 iOS 设备都有一个独一无二的编码,…

浅谈大数据广告下个人隐私保护,开发者视角的广告原理

本文已收录于 Github CodeClass 和 Gitee CodeClass 致力于打造高质量编程学习课堂,内含百篇原创技术文章,千本计算机开源电子书,谷歌、阿里大神开源 LeetCode 题解,各类编程学习资源,欢迎 star ,一起学习&…

简单理解MySQL的存储引擎

1、什么是存储引擎? 在说明存储引擎之前,首先你需要简单了解MqSQL的整体架构。 从上图可知,存储引擎位于整体架构的最底层。 存储引擎真正负责了MySQL中数据的存储和提取。 可以这样理解: 其实我们平时写的各种SQL语句相当于指…

iOS隐私新规如何破局?盗版SKAdnetwork可行吗?

背景:   在2020年的开发者大会上,苹果宣布iOS14设备将会在App首次打开时主动弹窗请求是否选择允许广告追踪,即被获取设备的IDFA。这也就意味着新系统需要用户手动选择允许,而旧系统是手动选择关闭,这一关键改变无异…

牛腩新闻发布--过程或函数 'news_selectByCaId' 需要参数 '@caid',但未提供该参数(一)

发现问题 今天敲击牛腩,在敲击Web页面的List.aspx之后,点击Ctrl+F5运行,发现运行不了,首先是数据库中调取数据有问题,因为这个数据是用存储过程调取的,所以需要修改存储过程,这时候只需要改成如下代码就行: 将这个更改完之后就可以在数据库中调取到应需要的数据了,但是…

【牛腩】DELETE 语句与 REFERENCE 约束“FK_news_category“冲突。该冲突发生于数据库“newssystem“,表“dbo.news“, column ‘caId‘

【前言】 牛腩中删除类别的时候会提示受到主外键的约束,导致无法删除这个类别。 【问题描述】 DELETE 语句与 REFERENCE 约束"FK_news_category"冲突。该冲突发生于数据库"newssystem",表"dbo.news", column ‘caId’。…