问题标签 [mpi]

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.

0 投票
2 回答
834 浏览

matrix - MPI矩阵多重编译错误:未声明

我编写了一个 mpi 矩阵乘法程序,它使用scanf("%d", &size), 指定矩阵大小,然后我定义int matrix[size*size]了 ,但是当我编译它时,它报告矩阵未声明。请告诉我为什么,或者我的问题是什么!

根据 Ed 的建议,我将矩阵定义更改为if(myid == 0)block,但得到了同样的错误!现在我发布我的代码,请帮助我找出我出错的地方!谢谢你!

0 投票
2 回答
410 浏览

matrix - MPI矩阵多重编译错误:未用代码声明

我编写了一个 mpi 矩阵乘法程序,它使用scanf("%d", &size), 指定矩阵大小,然后我定义int matrix[size*size]了 ,但是当我编译它时,它报告矩阵未声明。请告诉我为什么,或者我的问题是什么!

根据 Ed 的建议,我将矩阵定义更改为 if(myid == 0) 块,但得到了同样的错误!现在我发布我的代码,请帮助我找出我出错的地方!谢谢你!

0 投票
3 回答
456 浏览

c++ - C++:读取数据怎么可能影响内存?

我最近一直在深入研究 C++,我的错误似乎变得复杂。

我有一个对象向量,每个对象都包含一个浮点向量。我决定我需要创建一个进一步的平面数组,其中包含所有对象的所有浮点值。它比这要复杂一些,但问题的要点是,当我遍历对象以提取浮点值时,在某些时候,我的对象向量会发生变化,或者以某种奇怪的方式损坏。(我的读操作都是const函数)

另一个例子是 MPI。我刚刚开始,所以我只想在两个不同的节点上运行完全相同的代码,它们有自己的内存并且没有发生数据传输,这一切都非常简单。令我惊讶的是,我遇到了分段错误,经过数小时的跟踪,我发现一个变量的一个赋值是将一个完全不同的变量设置为 NULL。

所以我很好奇,读操作怎么可能影响我的数据结构。同样,看似无关的操作如何影响另一个操作。我不能指望用这些简短的描述来解决我的问题,但是任何建议都将不胜感激。

更新:这是一段代码,我最初没有发布,因为我不确定在不了解整个系统的情况下可以从中提取多少。

我刚刚发现的一件事是,当我停止将值分配给我的平面数组而只是 cout'ed 时,段错误消失了。所以也许我声明我的数组是错误的,但即使我不确定它会如何影响对象向量。

我的平面数组是一个成员函数

在构造函数中初始化,如下所示:

更新 2:

我只想指出,上面的两个例子没有关系,第一个不是多线程的。第二个 MPI 示例在技术上,但 MPI 是分布式内存,我特意尝试了我能想到的最简单的实现,即两台机器独立运行代码。然而,还有一个额外的细节,我放了一个有条件的说法

再次,内存应该被隔离,它们应该像彼此一无所知一样工作..但是删除这个条件并使两个循环都执行所有立方体,消除了错误

0 投票
3 回答
235 浏览

language-agnostic - 使用消息传递进行性能评估

我必须使用 MPI 构建分布式应用程序。我必须做出的决定之一是如何将类的实例映射到进程中(然后映射到机器中),以便从分布式环境中获得最大的优势。

我的问题是:有一个模型可以让我选择更好的映射吗?我的意思是,有些安排肯定是错误的(例如,将两个对象放入两台不同的机器中,这两个对象应该以顺序方式一起处理相当大量的数据,没有要处理的令牌流),但是有一种系统的方法确定这样的错误安排,由执行流程、消息复杂性、算法组件完成的计算所花费的时间决定?

0 投票
1 回答
2461 浏览

python - MPI4Py Scatter sendbuf 参数类型?

我在使用 MPI4Py Python 模块中的 Scatter 函数时遇到问题。我的假设是我应该能够将它传递给发送缓冲区的单个列表。但是,当我这样做时,我收到了一致的错误消息,或者确实添加了其他两个参数,recvbuf 和 root:

下面是相关代码的剪辑,从上面提到的 682 以上几行开始。

我尝试了许多初始化 station_range 的组合,但我一定没有正确理解 Scatter 参数类型。

Python/MPI 大师对此是否有澄清?

0 投票
3 回答
6811 浏览

c - C: 通过 printf() 打印双精度可以多长时间

我需要指定要从双精度值打印的字符串的确切长度,但我不想限制输出超出必要的范围。

用 printf() 格式化时,6 位精度双精度的最大长度是多少?

具体来说,我应该给 X in 什么值printf("%X.6lg",doubleValue);以确保没有值被截断?

我需要具体说明长度的原因是我正在定义一个 MPI 派生数据类型,它由许多双精度值的字符串表示形式组成,并且必须知道它们的确切长度才能在 MPI 进程之间划分文件区域。

我希望这很清楚。提前感谢您的回答。

0 投票
1 回答
110 浏览

algorithm - 多核 - 如何合并在每个核心上找到的本地数据组?

我有大量分布在 3D 网格上的标量值(每个顶点一个值。)

我的目标是展示:

  • 网格中值大于阈值的所有点。
  • AND 对连接的点进行分组(以简化显示。)

所以我的基本解决方案是:

  1. 找到通过阈值测试的点
  2. 对于每个尚未分组的点,创建一个新组并将所有连接的点递归地放入该组。

这很好,直到我开始使用多核解决方案:

  • 数据集已划分为多个核心
  • 每个核心都知道其他核心共享的边界点。
  • 我正在使用 MPI 在内核之间进行通信。

我使用我的原始算法来查找“本地”组单个核心。

我的挑战是将“本地”组合并到全局组中。问题变得复杂的原因有很多: 相互关联的群体可以跨越许多核心边界。在一个核心上看起来独立的组可以由第二个核心上的一组连接。

提前致谢。杰夫

0 投票
1 回答
3632 浏览

c - 使用 MPI_Cart_create、MPICH 获取 NULL 通信器

我为我的家庭作业(并行编程)编写了这个程序,但我在运行时遇到了一些错误。

这是来源:

这是我得到的错误:

0 投票
1 回答
684 浏览

mpi - MPI I/O 是如何实现的?

冗长的背景

我正在为心脏电生理学模拟并行化一些代码。由于用户可以使用内置的脚本语言指定他们自己的模拟,我无法知道如何管理通信与计算的权衡。为了解决这个问题,我正在制作一种运行时分析器,一旦看到要运行的模拟和它必须使用的硬件环境,它将决定如何处理域分解。

我的问题是这样的:

MPI I/O 是如何在幕后实现的?每个进程实际上是在写入某个其他节点上的单个文件,还是每个进程都写入某个稀疏文件,当文件关闭时,这些文件会重新拼接在一起?

了解这一点将帮助我决定是否将 I/O 操作视为通信或计算,并相应地调整平衡……</p>

提前感谢您提供的任何见解。

罗斯

0 投票
4 回答
4506 浏览

c++ - 向 C++ 程序添加 MPI 支持

我有一个用 C++ 实现的程序,现在我想添加 MPI 支持。有一个用于 C++ 的 MPI 绑定,包括命名空间 MPI 和所有内容。

在我的例子中,我有一个特定的对象,它适合作为集群中的并行化进程。

我的问题是:

  • 有没有人做过这样的事情?我可以就如何最好地实施这一点获得一些建议吗?
  • 如何在构造函数中初始化 MPI?在 Class 的构造函数中初始化 MPI 之后,所有的中间调用也会被并行化吗?

例如: