使用 MPI 通过命令行传递参数

2024-02-28

我正在使用 C++ 使用 MPI 调用在多个进程上运行一个过程。 我的 Main 函数中的前几行如下所示:

int main(int argc, char *argv[]){
int comm_sz;
int my_rank;

MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

x = atoi(argv[4]);
y = atoi(argv[5]);

现在,当我使用以下命令执行并运行我的程序时

mpiexec -n 1 program 10 10

我希望为 x 和 y 分配值 10 和 10,因为它们是传递的第 4 个和第 5 个参数。 但这并没有发生,它相应地将这些变量分配给 0 和 0。我的程序没有按预期运行。

当我更改这些数字时,我的序列代码正在运行。只是我是 MPI 的新手。

你能建议我哪里出错了吗?


在 Linux/Windows/Mac OSX 上的大多数 MPI 实现中,当您调用MPI_Init(&argc, &argv),参数列表被修改,就像您运行串行问题一样program 10 10;它会吃掉参数列表直至可执行文件,其中可能包含 mpirun 命令本身的任意数量的选项。

标准没有明确这一点;该标准留下了很多关于启动进程和初始化过程的内容,有些模糊,因为 MPI 必须在与 POSIX 类型系统行为非常不同的系统上工作。但我从未见过 POSIX 类型环境中的 MPI 实现不这样做。

(更新为添加:) g.inozemtsev 对这个问题的评论是一个极好的、简洁的解释why有时候是这样的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MPI 通过命令行传递参数 的相关文章

随机推荐

  • 如何将 UITableView 行重新排序限制为一个部分

    我正为这个问题碰头 谷歌却什么也没找到 我最终解决了这个问题 并想把它写在这里是为了下一个人 你有一个UITableView有多个部分 每个部分都是同质的 但整个表是异构的 因此 您可能希望允许对节内的行重新排序 但不允许across部分
  • 我是否需要定义巨大的 VPC 子网才能并行运行许多 Lambda 函数?

    我读到每个 AWS Lambda 调用都会获得自己的私有 IP 在 VPC 中运行时 这是否意味着如果我想要并行运行 50 000 个 Lambda 我需要它在具有 50 000 个可用私有 IP 的 VPC 子网中运行 简短 更新 答案
  • UICollectionView 的分页

    我使用 UICollectionView 创建了数据表视图 这是代码 class PanelViewController UIViewController var TableHeaderArray NSMutableArray var Ta
  • 如何在 C++ 11 中迭代 std::tuple [重复]

    这个问题在这里已经有答案了 我制作了以下元组 我想知道我应该如何迭代它 有tupl size 但是阅读文档 我不知道如何使用它 我也有搜索 但问题似乎存在Boost tuple auto some make tuple I am good
  • NetSqlAzMan vs AzMan vs (??????)

    我一直在尝试 从字里行间解读 NetSqlAzMan 项目的原始 和 或当前 动机 这是写的吗 Windows 授权管理器 AzMan 的适配器 NetSqlAzMan 中的方法只是将调用传递给 Windows 授权管理器 AzMan 但可
  • 将 C++ 向量初始化为随机值...快速

    嘿 我想尽可能快地做到这一点 因为它在我正在编写的程序中被多次调用 所以有没有比以下更快的方法将 C 向量初始化为随机值 double range set to the range of a particular function i wa
  • SVG 元素上的 CSS 转换 IE9+

    拥有 SVG 路径
  • C++:如何在不使用 sprintf 的情况下将 fprintf 结果作为 std::string 获取

    我正在使用一个用 C 实现的开源 UNIX 工具 我需要更改一些代码以使其执行我想要的操作 我想做尽可能小的改变 希望我的补丁能够被上游接受 首选可在标准 C 中实现且不会创建更多外部依赖项的解决方案 这是我的问题 我有一个 C 类 我们称
  • 在Python中比较两个浮点数是否相等[重复]

    这个问题在这里已经有答案了 当在Python中比较两个浮点数时 我看到代码总是这样来比较小值epsilon 想知道选择正确的epsilon值的最佳实践是什么 而其背后的场景又是怎样的呢 谢谢 epsilon 0 000001 abs a b
  • 窗口.print();不适用于 Safari

    使用 onclick 链接 Safari 时 打印方法在窗口上不起作用 在 Safari 中通过放置在按钮上的 onclick 代码打印网页的替代方法是什么 发生的另一个奇怪的行为是 当我尝试关闭窗口时 浏览器本机的打印对话框就会出现 尝试
  • 如何将文件从Windows主机复制到Docker容器

    正在寻找将本地文件复制到 Windows 上的 Docker 容器的快速解决方案 我在其他 Stack Overflow 解决方案中找不到这个 您可以将此称为在 Docker 容器内安装 Windows 上的本地驱动器 从任务栏上的图标打开
  • 在 Perl 中如何将变量限定为 const/final?

    例如 在下面的情况下 我不想更改 infilename初始化后程序中的任何位置 my infilename input 56 12 txt open my fpin lt infilename or die print infilename
  • CDT 在“设置索引器”期间发生内部错误

    我使用 Eclipse 和 CDT 来构建 C 代码 加载我的工作区后 我收到以下消息 An internal error occurred during Setting up indexer 这是日志 eclipse buildId I2
  • Resharper 重新格式化 Linq 语句以在同一行中放入和选择

    当我输入 Linq 查询样式语句时 例如 var stuff from x in things group x by x Something into g select g Resharper 正在将其重新格式化为 var stuff fr
  • 如何使用 MuPDF 在受密码保护的 pdf 上保存注释

    我正在尝试保存受密码保护的 pdf 的注释 我能够绘制注释并保存它 但是 一旦我返回并再次进行活动 我就看不到我的注释 然而奇怪的是 我可以看到注释框 但看不到绘制的路径 它适用于普通 pdf 无密码 pdf 知道如何保存受密码保护的 pd
  • R 的最佳 IDE/文本编辑器 [重复]

    这个问题在这里已经有答案了 可能的重复 Linux 中的 R 有哪些可用的 IDE https stackoverflow com questions 1097367 what ides are available for r in lin
  • 为什么浏览器不要求记住密码? [复制]

    这个问题在这里已经有答案了 您需要在登录表单上做什么 以便浏览器提示记住登录信息 我有一个名为 用户名 的输入和一个名为 密码 的输入 在我的浏览器上 我将其设置为询问是否应该记住密码 并且在大多数网站上都会这样做 但在我正在测试的网站上却
  • 如何在 VS Code 1.57 中禁用工作区信任?

    我刚刚更新到 VS Code 1 57 现在收到关于信任我的工作区的提示 我怎样才能禁用它并恢复到旧的行为 在完全禁用受信任的工作区之前 请确保您了解什么是可信工作空间以及为什么它们会有所帮助 https code visualstudio
  • Python Kivy 使用 Matplotlib 绘制实时图形(尺寸太小)

    我正在尝试使用 kivy Garden matplotlib 在 kivy 内创建测量可视化 目标是绘制字典中的变量及其相关测量值 目前代码 见下文 由 3 部分组成 在导入部分之后 我定义了在代码中使用的常量 下一部分是一个字典 我用它以
  • 使用 MPI 通过命令行传递参数

    我正在使用 C 使用 MPI 调用在多个进程上运行一个过程 我的 Main 函数中的前几行如下所示 int main int argc char argv int comm sz int my rank MPI Init argc argv