mpi相关内容
生成素数是一个我经常不时尝试的玩具问题,尤其是在尝试新的编程语言、平台或风格时. 我正在考虑尝试使用 Hadoop (Map Reduce) 编写素数生成算法或素数测试算法. 我想我会发布这个问题来获取技巧、参考、算法、方法. 虽然我的主要兴趣是基于 Map Reduce 的算法,但我不介意查看新的 Hadoop 编程模型或例如查看使用 PiCloud 我似乎有一些关于素数
..
从这里:Is file appendUNIX 中的原子 考虑多个进程打开同一个文件并附加到它的情况.O_APPEND 保证查找到文件末尾然后开始写操作是原子的.因此,多个进程可以附加到同一个文件中,并且只要每个写入大小为 我编写了一个测试程序,其中多个进程打开并写入同一个文件 (write(2)).我确保每个写入大小 > PIPE_BUF (4k).我期待看到进程覆盖其他人数据的情况.但这
..
我有一个可以编译和运行的 MPI 程序,但我想逐步执行它以确保没有发生任何奇怪的事情.理想情况下,我想要一种将 GDB 附加到任何特定进程的简单方法,但我不确定这是否可行或如何实现.另一种方法是让每个进程将调试输出写入单独的日志文件,但这并没有真正提供与调试器相同的自由. 有更好的方法吗?您如何调试 MPI 程序? 解决方案 正如其他人所说,TotalView 是这个的标准.但它会花
..
如何将二维数组块发送到不同的处理器?假设二维数组大小为 400x400,我想将大小为 100X100 的块发送到不同的处理器.这个想法是每个处理器将在其单独的块上执行计算并将其结果发送回第一个处理器以获得最终结果. 我在 C 程序中使用 MPI. 解决方案 首先我要说的是,您通常并不真正想要这样做 - 从某个“主"进程中分散和收集大量数据.通常,您希望每个任务都在解决自己的难题,并且您的
..
我正在尝试解决的问题如下: 我在大型二维矩阵上计算的 C++ 串行代码.为了优化这个过程,我希望分割这个大的 2D 矩阵并使用 MPI 在 4 个节点上运行(比如).节点之间发生的唯一通信是在每个时间步长结束时共享边值.每个节点与其邻居共享边数组数据 A[i][j]. 基于对 MPI 的阅读,我有以下方案要实现. if (myrank == 0){对于 (i= 0 到 x)对于(y=
..
我需要将一个整数数组(基本上是一个二维数组)从 root 传递给所有处理器.我在 C 程序中使用 MPI.如何为二维数组声明 MPI 数据类型以及如何发送消息(我应该使用广播还是分散) 解决方案 你需要使用 广播,因为您想向每个进程发送相同消息的副本.Scatter 分解消息并在进程之间分配块. 至于如何发送数据:HIndexed 数据类型适合您. 假设你的二维数组是这样定义的
..
我正在尝试解决的问题如下: 我在大型二维矩阵上计算的 C++ 串行代码.为了优化这个过程,我希望分割这个大的 2D 矩阵并使用 MPI 在 4 个节点上运行(比如).节点之间发生的唯一通信是在每个时间步长结束时共享边值.每个节点与其邻居共享边数组数据 A[i][j]. 基于对 MPI 的阅读,我有以下方案要实现. if (myrank == 0){对于 (i= 0 到 x)对于(y=
..
我正在尝试将来自所有处理器(包括主节点)的不同长度的不同字符串收集到主节点上的单个字符串(字符数组)中.这是 MPI_Gatherv 的原型: int MPI_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype,void *recvbuf, const int *recvcounts, const int *disp
..
这就是我们如何使用 MPI_Init 函数 int main(int argc, char **argv){MPI_Init(&argc, &argv);…} 为什么 MPI_Init 使用指向 argc 和 argv 的指针而不是 argv 的值? 解决方案 根据此处所述的答案: 使用 MPI 通过命令行传递参数 大多数 MPI 实现将删除此函数中所有与 mpirun 相
..
- 找到 PkgConfig:/usr/bin/pkg-config(找到版本“0.29.1")-- 检查模块'libusb-1.0>=1.0.17'-- 找到 libusb-1.0,版本 1.0.21-- 检查模块'opencv>=3.0'--找到opencv,版本3.2.0-- 检查模块'libcaer>=2.0'-- 找到 libcaer,版本 3.3.7-- 找不到 MPI_C(缺少:MP
..
在全新的 Raspberry Pi 4 Ubuntu 上运行干净的 Ubuntu, ubuntu@ubuntu:~/mpi-hello-world/mpitutorial/tutorials/mpi-hello-world/code$ uname -aLinux ubuntu 5.4.0-1028-raspi #31-Ubuntu SMP PREEMPT Wed Jan 20 11:36:14
..
我在仅使用两个节点运行 OpenMPI 程序时遇到问题(其中一个节点是执行 mpiexec 命令的同一台机器,另一个节点是单独的机器). 我将调用运行 mpiexec 的机器、master 和另一个节点 slave. 在 master 和 slave 上,我都在 ~/mpi 下的主目录中安装了 OpemMPI 我在 master 上有一个名为 ~/machines.txt
..
我有一个小程序. #include "mpi.h"#include int main(int argc, char *argv[]){整数等级,大小;内部缓冲区;错误;MPI_Status 状态;err = MPI_Init(&argc, &argv);如果(错误 == MPI_SUCCESS){MPI_Comm_size(MPI_COMM_WORLD, &size);MPI_Comm_rank
..
我目前在我的机器上安装了 MPICH(版本 3.1.4)(运行 Mac OS X 10.10.5).我想删除它并安装 OpenMPI,但在网上找不到有关如何卸载 MPICH 的说明. 简单地删除MPICH的目录就足够了吗?如果是这样,我在哪里可以找到它?我以为我已经将它安装在 usr/local 中,并且确实在那里找到了一些与 MPI 相关的文件(在名为 include 的文件夹中),但似乎
..
我是 C++ 新手,尝试通过 MPI 发送 bool 数据类型,但 C++ 不支持这种数据类型. 我试图让它成为 MPI_BYTE 和 MPI_INT 但它什么也没打印. #include #include "mpi.h"使用命名空间标准;int main(int argc, char **argv){内部 R,P;MPI_Status 状态;布尔检查=假;MPI_Init(&argc,
..
使用 MPICH2 库的 CRAY 超级计算机.每个节点有 32 个 CPU. 我在 N 个不同的 MPI 等级上有一个浮动,其中每个等级都在不同的节点上.我需要对这组浮点数执行归约操作.对于任何 N 值,我想知道 MPI_Reduce 是否比 MPI_Gather 更快,并且在根上计算了减少.请假设对根等级进行的减少将使用可以利用 N 个线程的良好并行减少算法来完成. 如果 N 的任
..
我有这样的结构: typedef 结构体{整数 x;双*y;国际**z;}工业; 如何通过 MPI 将 *y 和 **z 之类的指针发送到其他进程?我知道很多答案都说从不通过 MPI 发送指针.但是如果我不能将 *y 更改为数组,因为它在主程序的其他部分使用,我应该怎么做才能通过 MPI 通过进程传输它们?特别是**z,我该怎么办?提前致谢! 解决方案 只需遵循第二个示例中的代码 这里
..
我正在课堂上使用 C 学习 MPI.我目前正试图弄清楚您何时使用 MPI_Comm_split 以及它的优势是什么.如果我不使用组或者我的所有进程都在一个组中,我还试图弄清楚使用它是否比仅使用 MPI_COMM_WORLD 有任何好处. 据我所知,MPI_Comm_split 为每种“颜色"提供了一个独特的通信器,这与使用 MPI_COMM_WORLD 不同(不确定这最后一部分是否正确).M
..
我有一个 .sh 文件要由 srun 运行,因为我想查看脚本的动态打印输出.但是通过运行 srun job_spinup.sh southfr_exp 1 & 我总是在 2 个主循环后出现错误(由于时间限制错误而超时)......这是 .sh 文件中的主要代码.顺便说一下,我想运行一个 12 个月的模型并循环 20 次(所谓的旋转 20 次).但是错误发生在第二个循环(旋转)的 11 月...这是
..
考虑这样的事情: typedef struct TS {双 a,b,c;}...S x,y;...MPI_Allreduce(&x, &y, 3, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); 上面的代码是否完全可移植(不使用 MPI_Type_struct 和全部;假定结构中的所有变量都属于同一类型)?也是在各个节点上使用不同硬件的情况下吗? 提前致谢,杰
..