我将 MPI 等级拆分以计算数组的不同部分,然后我想将这些切片放入/发送到不参与计算的不同等级。 该等级是新通信器的主人,该通信器设置为对数组执行其他操作(平均、IO 等)。 我让它与 MPI_isend 和 MPI_irecv 一起工作,现在我想尝试 MPI_Put。 我有! if (.not ...
我将 MPI 等级拆分以计算数组的不同部分,然后我想将这些切片放入/发送到不参与计算的不同等级。 该等级是新通信器的主人,该通信器设置为对数组执行其他操作(平均、IO 等)。 我让它与 MPI_isend 和 MPI_irecv 一起工作,现在我想尝试 MPI_Put。 我有! if (.not ...
我试图通过一个小例子来理解 MPI-Function `MPI_Fetch_and_op() 并遇到了一个我想理解的奇怪行为。 在这个例子中,等级为 0 的进程会等待,直到进程 1..4 都将 result 的值都增加了 1,然后才能继续。 在函数MPI_Win_lock_all()使用 ass ...
我想在进程之间使用共享内存。 我试过 MPI_Win_allocate_shared 但是当我执行程序时它给了我一个奇怪的错误: 断言在文件./src/mpid/ch3/include/mpid_rma_shm.h第 592 行中失败: local_target_rank >= 0 inte ...
我正在使用MPI_Raccumulate函数,该函数是使用预定义的聚合函数从源到目标的一种单面通信。 我想在程序结束时检查所有MPI_Raccumulate调用是否都已完成(发送者发送了数据,接收者成功接收了数据)。 但是, MPI_Wait似乎不是解决此问题的方法; 它仅等待检查源缓 ...
Donzis&Aditya的一篇论文表明,有可能使用可能在模板上有延迟的有限差分方案。 这是什么意思? FD方案可能用于解决热方程和读取(或简化它) 意思是,下一个时间步的值取决于同一位置的值及其前一时间步的邻居。 通过将(在我们的示例中为1D)域分割到不同的处理器上,可以容易 ...
在学习MPI-2单面通信的一系列尝试中,我正在测试以下代码,在该代码中,我将一个基本类型值(例如int在主进程中,并将其暴露给所有其他进程。 现在,我对整数的处理很简单。 我让每个进程迭代递增它,直到共享整数达到最大值。 每个进程在打印出共享整数之前都会围起来,如下所示(底部完整的代码): ...
我正在学习MPI-2,并尝试使用MPI-2单面通信实现第一个简单功能: 使进程0托管一个固定大小的data_size数组。 每个进程(包括0)将生成一个数组,并与主机数组进行比较: 如果生成的数组的第一个元素小于主机数组的元素,请用生成的数组替换主机数组。 在代码中: ...
我正在学习MPI-2 / MPI-3中引入的MPI单面通信,并且遇到了关于MPI_Accumulate 在线课程页面 : MPI_Accumulate允许调用者将移动到目标进程的数据与已存在的数据组合,例如在目标进程中累积和。 使用MPI_Get检索数据(后跟同步)可以实现相同的功能 ...
我写使用MPI-2的优化方案,其中我需要有一个std::vector相等的长度std::vector S(在概念上),所有进程之间共享。 该向量拥有当前发现问题的最佳k解,并且每次通过许多MPI流程之一找到新的最佳解时都会进行更新。 每个过程寻找新解决方案所花费的时间通常相差很大。 我 ...
我正在用Fortran77编写并行程序。 我有以下问题: 我有N个处理器。 每个处理器包含大小为S的数组A。 使用某些函数,在每个处理器上(例如等级X),我计算两个整数Y和Z的值,其中Z <S(每个处理器上Y和Z的值不同)。 我想获取处理器Y到处理器X的 ...
当满足错误条件时,我的程序可以在某些MPI等级上生成错误消息。 但是,有可能仅在某些(但不是全部)等级上满足此条件。 我想从遇到错误情况的第一个等级输出一条消息,并从其他等级中丢弃类似的消息。 如果我天真地这样做(不丢掉消息),例如 我会在屏幕上获得随机排序的输出。 我想 ...
如果我有一个数组A [100] [100] [100],如何为六个边缘子数组(重影单元)创建一个用于远程内存访问的窗口,尤其是对于A [0] [:] [:]和A [100] ] [:] [:]。 在MPI-1中,我创建矢量类型来发送/接收虚假单元格。 在MPI-2和-3中,我需要公开整个数组 ...
以下简短的Fortran90程序只要包含MPI_GET调用便会崩溃。 等级1尝试从等级0读取值并挂在MPI_WIN_UNLOCK中。 等级0尝试使用分段错误在MPI_BARRIER中崩溃。 我反复检查了命令的语法,但它们似乎是正确的。 C / C ++中的类似代码可在同一系统上工作。 ...
考虑以下OpenMP代码片段,该片段使用中间共享变量在两个线程之间传输私有数据 我将需要(使用伪代码)使用单面消息传递库将私有数据从一个进程转移到另一个进程。 有任何想法吗? ...
我在使用基本通信和组MPI2方法方面有相当多的经验,并且使用MPI进行了相当多的令人尴尬的并行仿真工作。 到目前为止,我已经构建了我的代码,以便有一个调度节点和一堆工作节点。 调度节点具有将与模拟器一起运行的参数文件列表。 它使用参数文件为每个工作节点播种。 工作节点运行其模拟,然后请求 ...