问题标签 [spmd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - 如何在 spmd 块中索引共分布数组
我正在做一个非常大的计算(大气吸收),其中有很多单独的窄峰,最后都会加起来。对于每个峰,我已经预先计算了峰形函数值高于我选择的阈值的范围,然后我逐行将峰添加到我的光谱中。下面给出了一个最小示例:
在这里,每个峰都有一些参数来定义位置和形状(a
、b
、c
),以及进行计算的范围(rng
)。这很好用,在我的机器上,它以大约 220 秒的时间进行基准测试,以完成一个完整的数据集。但是,我有一台 4 核机器,我最终想在集群上运行它,所以我想并行化它并使其可扩展。
因为每个循环都依赖于上一次迭代的结果,所以我不能使用parfor
,所以我迈出了学习如何使用spmd
块的第一步。我的第一次尝试是这样的:
这几乎可以工作。该程序在最后一行崩溃,因为spectrum
它是 type Composite
,并且2013a
关于如何将Composite
数据转换为矩阵的文档参差不齐(cell2mat
不起作用)。这也不能很好地扩展,因为我拥有的核心越多,矩阵就越大,并且必须将大矩阵复制到每个工作人员,然后忽略大部分数据。问题 1:如何将 Composite 数据类型转换为可用数组?
我尝试的第二件事是使用codistributed
数组。
这告诉我每个工人都有一个大小为 [K 1] 的向量,我相信这是我想要的,但是当我尝试融合上述方法时
我得到Matrix dimensions must agree
错误。因为它在一个并行块中,所以我不能使用我的正常调试拐杖来单步执行循环并查看每个块在每个点的大小以查看发生了什么。问题 2:在块中索引进出共分布数组的正确方法是什么spmd
?
gnu-parallel - 在使用 GNU 并行的 SPMD 中,首先处理最小的文件是最有效的方法吗?
这很简单:
假设我在文件夹中有许多文件data/
要通过一些可执行文件进行处理./proc
。最大化效率的最简单方法是什么?我一直在这样做以获得一些效率:
它根据大小列出数据,然后tac
(reverse of cat
) 翻转该输出的顺序,以便首先处理最小的文件。这是最有效的解决方案吗?如果没有,如何提高效率(首选简单的解决方案)?
我记得像这样的排序会带来更高的效率,因为更大的工作不会阻塞管道,但除了示例之外,我找不到或记住这背后的任何理论,所以任何参考都将不胜感激!
c - MPI 库 - 在数组上保存值时出现问题
我正在尝试将值保存在进程中的数组上,特别是在数字 0 处。因此,如果它们的等级为 0,我创建了一个条件来保存这些值:
事实上,count
在disp
进程 0 是所有值都为 0 的数组。我不明白这种行为。第一次循环有什么问题吗?
编辑:
错误不在此代码的这一部分。此代码按预期工作
matlab - 如何在核心 i7 处理器中使用 MATLAB 的并行计算工具箱显着提高速度?
我正在研究图像处理。我有一台配备 Intel(R) Core(TM) i7 -3770 CPU @3.40 GHz、RAM 4 GB 配置的计算机。我只想使用 PCT 的 SPMD 命令并行化我们的图像处理算法代码。为此,我将图像垂直分成 8 个部分并将其发送到不同的实验室,并通过使用 SPMD 命令,我在不同实验室的不同部分并行执行图像处理算法。
我得到了从顺序代码中得到的正确答案。但这比顺序代码花费更多时间。我已经尝试过从最大的图像到最小的图像,但没有得到显着的结果。
建议我如何使用 SPMD 命令显着提高速度?
matlab - 来自并行计算的复合日期
我第一次使用并行计算(spmd)。
启动池并进行一些并行计算后,我的工作区中只有复合变量,无法打开它们。或者当我通过双击打开它们时,它们是空的。我如何使用这些数据?
这是我的代码:
matlab - matlab parfor 和 spmd 不起作用
脚本如下:
该脚本可以在一台计算机上正确运行,但在另一台计算机上,parfor
似乎无法正常运行,并且有一些警告信息如下,并且parfor
最终在没有并行模式的情况下运行,似乎是for
按顺序运行的。有人可以帮忙给点建议吗?
matlab - 在 Matlab 中使用 spmd 或 parfor
我目前正在尝试使用非常耗时的 MATLAB 2011b 并行运行实验。我想知道是否有人可以帮助我将以下通用(非工作)parfor 代码块“翻译”成可以在 spmd 代码中工作的东西。
matlab - 在客户端上获取调试输出 - spmd
我正在使用 spmd 命令运行由 MATLAB Parallel Computing Toolbox 提供的并行化代码。具体来说,代码是这样的:
现在该函数涉及一个库(libsvm),它为每次迭代提供了一个训练有素的分类器。在训练过程中,有几条调试消息被库打印到标准输出,但不知何故,这些消息没有出现在我的标准终端上——我认为这是因为工作人员实际上在集群上,因此调试消息没有对我可见。
无论如何要重新路由调试消息?(可能不是写入共享磁盘上的文件)
matlab - 在 MATLAB pmode 中调试
是否可以在 MATLAB pmode中使用 dbstep 和 dbquit 等调试命令?
matlab - Matlab Spmd 终止
我正在使用 spmd 在 matlab 中实现模拟退火算法。我将比较不同的实现类型。其中之一是异步并行。12 名工人将运行代码。如果其中一个符合条件(错误<0.01)代码将停止搜索。有什么命令可以做到这一点吗?如果我使用 labBroadcast 或 labsend/labreceive,它将是同步的。