Matlab 中的并行处理

2024-01-12

我创建了两个函数:生成数据和处理数据。数据处理很耗时,所以我想在并行线程中处理它们。但我对他们有一些问题。首先,这是我的程序:

result = zeros(1, 10);

matlabpool open local 2
spmd
    for a = 1:5
        data = generate_data();
        display(sprintf('Received data on CPU%d: %d', labindex, data));
        result(end + 1) = process_data(data);
    end
    display(sprintf('All done on CPU%d', labindex));
end
matlabpool close

以及它返回的日志:

Starting matlabpool using the 'local' profile ... connected to 2 workers.
Lab 1: 
  Received data on CPU1: 100
Lab 2: 
  Received data on CPU2: 100
Lab 1: 
  Received data on CPU1: 101
  Received data on CPU1: 102
  Received data on CPU1: 103
  Received data on CPU1: 104
  All done on CPU1
Lab 2: 
  Received data on CPU2: 101
  Received data on CPU2: 102
  Received data on CPU2: 103
  Received data on CPU2: 104
  All done on CPU2
Sending a stop signal to all the workers ... stopped.

有问题,我有:

  1. generate_data 返回的值是相同的 两个线程。我应该有所不同。线程应该处理不同的 数据,而不是相同的数据两次。我无法生成完整的数据 立即设置并使用 getLocalPart。

  2. 变量结果不是双精度数的 1x10 矩阵,而是双精度数的 1x2 矩阵 复合材料。我读过有关(共)分布式数组的内容,但没有帮助 我。我应该怎么做才能收到 1x10 双打矩阵?

  3. 当CPU1处理CPU2的数据时,我应该做什么 处理自己的数据?一般来说,我不知道如何做到这一点。

  4. 可以删除“实验室 1:”和“实验室 2:”吗?他们在搞乱 我的日志:)

考虑到上述情况,日志(对于较大的数据集)应该如下所示:

Starting matlabpool using the 'local' profile ... connected to 2 workers.
Received data on CPU1: 100
Received data on CPU2: 101
Received data on CPU1: 102
Received data on CPU1: 103
Received data on CPU1: 104
Received data on CPU1: 105
Received data on CPU2: 106
Received data on CPU1: 107
Received data on CPU1: 108
Received data on CPU2: 109
All done on CPU1
All done on CPU2
Sending a stop signal to all the workers ... stopped.

你为什么不使用更简单的parfor?目前,您正在每个工作人员上运行循环,并且我假设您希望并行运行循环的迭代。

nIter = 10;
result = zeros(1, nIter);

matlabpool open local 2

    parfor a = 1:nIter
        data = generate_data();
        fprintf('%s: processing set %i/%i\n',datestr(now),a,nIter)
        result(a) = process_data(data);
    end
end
matlabpool close
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab 中的并行处理 的相关文章

  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • 从 foreach 循环赋值

    我想并行化一个循环 例如 td lt data frame cbind c rep 1 4 2 rep 1 5 rep 1 10 2 names td lt c val id res lt rep NA NROW td for i in l
  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • 分布式张量流 tf.train.SyncReplicasOptimizer 似乎不同步

    我使用两个工作程序 副本和一个参数服务器 喜欢 ps hosts hosta com 2222 worker hosts hosta com 2223 hostb com 2223 使用tf train SyncReplicasOptimi
  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 并发:C++11 内存模型中的原子性和易失性

    全局变量在 2 个不同内核上的 2 个并发运行的线程之间共享 线程对变量进行写入和读取 对于原子变量 一个线程可以读取过时的值吗 每个核心可能在其缓存中具有共享变量的值 并且当一个线程写入缓存中的其副本时 不同核心上的另一个线程可能会从其自
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • 如何正确从表中删除 NaN 值

    在 Matlab 中阅读 Excel 电子表格后 不幸的是 我的结果表中包含了 NaN 例如这个 Excel 表格 将产生此表 其中出现额外的 NaN 列 我尝试使用以下代码片段删除 NaN measurementCells readtab
  • 命令 A(~A) 在 matlab 中的真正作用是什么

    我一直在寻找找到矩阵非零最小值的最有效方法 并在论坛上找到了这个 设数据为矩阵A A A nan minNonZero min A 这是非常短且高效的 至少在代码行数方面 但我不明白当我们这样做时会发生什么 我找不到任何关于此的文档 因为它
  • 调用许多网络服务的最佳方式?

    我有 30 家子公司 每家都实施了他们的 Web 服务 使用不同的技术 我需要实现一个Web服务来聚合它们 例如 所有子公司的Web服务都有一个名为的Web方法GetUserPoint int nationalCode 我需要实现我的网络服
  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直
  • Perl Parallel::Forkmanager 不允许收集变量值

    也许因为子进程不知道我的散列 请参阅下面的代码 散列 输出没有收集任何内容 除了写入 tmp 文件之外 还有其他方法来收集该值吗 foreach Item AllItems pid pm gt start Item and next Tem
  • Matlab的导入函数的范围是什么?

    我正在尝试将一些用 Matlab 编写的代码转换为独立的 编译的 Matlab 应用程序 然而 在出现一些奇怪的错误之后 我意识到代码大量使用了从路径中添加和删除的操作 以避免多次使用多个具有相同名称 但结果 计算不同 的函数这一事实 环顾
  • Ilnumerics Ilpanel 在 winform 中编译成 dll 并加载到 matlab 时不激活

    我想将 Visual studio 2012 中用 C 编写的 winform 编译为 dll 然后将其加载到 matlab 2013a 中 然后 我想使用 matlab net 接口与 winform 进行交互 侦听其事件并通过一组预定义

随机推荐

  • 添加后如何在 Android 中实现下拉导航操作栏?

    通过遵循本指南 http wptrafficanalyzer in blog adding drop down navigation to action bar in android http wptrafficanalyzer in bl
  • 将 java String[] 设置为 postgres 准备好的语句时出错

    我正在尝试将字符串数组插入 Postgres 中 我从 Postgres 收到无效类型错误 public static void main String args throws SQLException String skus 0514 0
  • 从 ipython 导入

    如果我将 IDLE 与 python 2 7 一起使用 import cv import cv2 它有效 但如果我使用 ipython 笔记本 它给了我错误 ImportError Traceback 最近调用 最后 在 gt 1份导入简历
  • numPy 中的意外特征向量

    我见过this https stackoverflow com questions 13739186 compute eigenvector using a dominant eigenvalue问题 这与我尝试使用 numPy 计算 Py
  • 将新节点添加到链表的新方法

    void addNewNode struct node head int n struct node temp struct node malloc sizeof struct node temp gt data n temp gt lin
  • 单例bean和原型bean有什么区别?

    我是春天的新手 我读到了这篇文章 基本上 bean 具有定义其在应用程序中存在的范围 Singleton 意味着每个 Spring IOC 容器对单个对象实例的单个 bean 定义 原型 意味着任意数量的对象实例的单个 bean 定义 那么
  • Postman 上的授权类型 Bearer Token

    我正在尝试使用 Postman 测试一些端点 所有端点都需要一个可以通过登录获取的令牌 所以我这样做了 请求 1 登录成功后 我可以从响应中访问令牌 然后将该令牌存储在全局变量中 let token pm response json loc
  • 旧版应用程序上的 Windows GUI 自动化

    我正在尝试自动化一个名为的旧 Windows 应用程序FacTel5 http www movistar es empresas ayuda factel abierto empresas 我已经能够自动化登录部分 但下一个表单是一个类似项
  • 消息框错误:外部导入不安全

    import Graphics Win32 import System Win32 DLL import Control Exception bracket import Foreign import System Exit main IO
  • 修复 Docker 中的 World-writable MySql 错误

    我正在使用 docker compose 对于 db 我定义了这样的容器 db build builds mysql 5 7 environment MYSQL ROOT PASSWORD pass MYSQL DATABASE MYSQL
  • 带有 numpy 掩码数组的 Python 散点图

    我一直试图掩盖散点图的数据 所有数据似乎都在绘制 我正在使用 numpy 数组 如下面的代码片段所示 我想也许我无法屏蔽 c 数组 我似乎找不到任何执行此操作的文档 我将尝试使用 s 数组 任何帮助是极大的赞赏 yy NP ma array
  • 如何配置 Spark / Glue 以避免在 Glue 作业成功执行后创建空 $_folder_$

    我有一个简单的glue etl 作业 它是由Glue 工作流程触发的 它从爬虫表中删除重复数据并将结果写回到 S3 存储桶中 工作顺利完成 然而 spark 的空文件夹会生成 folder 保留在 s3 中 它在层次结构中看起来不太好 并会
  • 检查字符串是否是标点符号

    假设我有一个包含一些字母和标点符号的字符串数组 String letter a b c a 在字母 3 中 我们有 如何检查字符串是否是标点符号 我们知道有很多可能的标点符号 等 到目前为止我的进展 for int a 0 a lt let
  • 当退出 C 应用程序时,分配的内存是否会自动释放?

    假设我有以下 C 代码 int main int p malloc 10 sizeof p p 42 return 0 Exiting without freeing the allocated memory 当我编译并执行该C程序时 即在
  • 如何更改Spyder中Python的路径?

    我正在使用Debian 我安装了Python 3 2 3 Python 3的路径是 usr bin python3 如何在 Spyder 中更改它 Press CTRL SHIFT ALT P打开首选项窗口 在此窗口中 选择Console左
  • Android SIP 堆栈 - 使用什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要在 Android 上创建使用 SIP 堆栈 它将与 asterix 一起使用 并使用户能够更改
  • 为什么 makefile 有时会将“true ”作为构建脚本的一部分?

    例如 Some stuff all some dependencies CC o foo o foo c true foo o some other operation true foo o 行有什么作用 通常这是 Makefile 生成器
  • MinGW GCC 4.9.1 和浮点确定性

    我编写了一个小程序来计算 3 坐标向量的欧几里得范数 这里是 include
  • Hadoop 在一个文件中搜索另一个文件中的单词

    我想构建一个 hadoop 应用程序 它可以从一个文件读取单词并在另一个文件中搜索 如果该单词存在 它必须写入一个输出文件 如果该单词不存在 它必须写入另一个输出文件 我在hadoop中尝试了一些例子 我有两个问题 两个文件每个大约 200
  • Matlab 中的并行处理

    我创建了两个函数 生成数据和处理数据 数据处理很耗时 所以我想在并行线程中处理它们 但我对他们有一些问题 首先 这是我的程序 result zeros 1 10 matlabpool open local 2 spmd for a 1 5