mpi相关内容

使用 GDB 远程调试 MPI

我正在尝试调试我使用来自 pi 远程访问组的 MPI 编写的代码.我无法直接访问 Pis,以便能够使用 GUI 调试代码. 我已经尝试过使用屏幕显示的内容 问题 但任何时候我尝试使用屏幕我收到这条消息: 系统中没有足够的可用槽位来满足 2 个槽位应用程序要求的:屏幕为您的应用程序请求更少的插槽,或提供更多的插槽可用用来. 如果我尝试告诉它只使用 1 个屏幕,mpiexec 会失败 mp ..
发布时间:2022-01-05 10:40:46 其他开发

MPI 内存泄漏

我正在编写一些使用 MPI 的代码,并且在使用 valgrind 运行它时我一直注意到一些内存泄漏.在试图确定问题出在哪里时,我最终得到了这个简单(而且完全没用)的 main: #include "/usr/include/mpi/mpi.h";int main(int argc,char** argv){MPI_Init(&argc, &argv);MPI_Finalize();返回0;} ..
发布时间:2021-12-31 08:13:45 其他开发

什么是最好的 MPI 实现

我必须在集群中实现 MPI 系统.如果这里有人对 MPI (MPICH/OpenMPI) 有任何经验,我想知道哪个更好,以及如何在 x86_64 机器集群上提高性能. 解决方案 MPICH 已经存在了很长时间.它非常便携,您可以在网上找到多年的提示和技巧.这是一个安全的选择,它可能与更多的 MPI 程序兼容. OpenMPI 较新.虽然它不是那么便携,但它非常好地支持最常见的平台.大 ..
发布时间:2021-12-30 21:45:30 其他开发

MPI 比 MapReduce 更适合哪些场景?

据我所知,MPI 使我能够更好地控制集群中不同节点的通信方式. 在 MapReduce/Hadoop 中,每个节点进行一些计算,与其他节点交换数据,然后整理其结果的分区.看起来很简单,但由于您可以迭代该过程,因此即使是 K-means 或 PageRank 等算法也能很好地拟合模型.在具有调度局部性的分布式文件系统上,性能显然是不错的.相比之下,MPI 让我可以明确控制节点如何相互发送消息. ..
发布时间:2021-12-30 21:44:03 其他开发

多个节点上的单个 R 脚本

我想利用来自多个节点的 CPU 内核来执行单个 R 脚本.每个节点包含 16 个内核,并通过 Slurm 工具分配给我. 到目前为止,我的代码如下所示: ncores 我在 UNIX shell 中通过以下命令执行它: mpirun -np 1 R --no-save another_file_path.Rout 这在单个节点上运行良好 ..
发布时间:2021-12-30 21:42:51 服务器开发

如何在 MPI_Send() 中发送结构类型的变量?

我使用 MPI 用 C 编写了一个程序,其中结构变量将以环形方式发送到进程,并根据从该变量接收到的值,分配该特定进程的工作. 问题是我需要知道如何在 MPI_Send() 函数中发送一个结构变量,因为它在运行时给出了 INVALID DATATYPE,考虑下面的例子 结构信息{int ne, n, u, v, process, min, strip, mincost, b;统计;MPI_S ..
发布时间:2021-12-30 21:42:15 其他开发

C 中如何使用 MPI_Scatter 和 MPI_Gather?

到目前为止,我的应用程序正在读取一个包含整数列表的 txt 文件.这些整数需要由主进程(即等级为 0 的处理器)存储在数组中.这工作正常. 现在,当我运行程序时,我有一个 if 语句检查它是否是主进程,如果是,我正在执行 MPI_Scatter 命令. 据我所知,这将用数字细分数组并将其传递给从属进程,即所有 rank > 0 .但是,我不确定如何处理 MPI_Scatter.slav ..
发布时间:2021-12-30 21:17:43 其他开发

Openmpi mpmd 获取通信大小

我有两个 openmpi 程序,我是这样开始的 mpirun -n 4 ./prog1 : -n 2 ./prog2 现在我如何使用 MPI_Comm_size(MPI_COMM_WORLD, &size) 以便我获得大小值 prog1 size=4prog2 大小=2. 截至目前,我在两个程序中都获得了“6". 解决方案 这是可行的,虽然实现起来有点麻烦.其原理是根据argv[0 ..
发布时间:2021-12-30 21:15:03 C/C++开发

使用 MPI,消息在发送之前似乎已收到

在下面的测试程序中,我从一个进程向另一个进程发送消息.trace printfs 好像在发送之前就表明了正在接收的消息是什么,为什么会这样? #include #include #include /* 运行两个进程 */void main(int argc, char *argv[]) {整数等级,我,计数;浮动数据[100],值[200];MPI_Status 状态;MPI_Init(&arg ..
发布时间:2021-12-30 21:10:33 其他开发

MPI - 按订单打印

我正在尝试用 C 编写一个函数,其中每个处理器都打印自己的数据.这是我所拥有的: void print_mesh(int p,int myid,int** U0,int X,int Y){int i,m,n;for(i=0;i 由于某种原因它不起作用.数组全部混合打印.您对为什么这不起作用有任何见解吗?还有其他可行的想法吗?如果可能,我不想在主进程中发送整个数组.另外我不想使用预编译函数. ..
发布时间:2021-12-30 21:10:00 其他开发

MPI_Type_create_subarray 和 MPI_Gather

我必须解决一个小问题.我有 4 个从进程,每个进程都想发送一个二维子数组 (CHUNK_ROWS X CHUNK_COLUMNS) 到主 0.主 0 收集 ddd[ROWS][COLUMNS] 中的所有块并打印它.我想使用 MPI_Gather() #include #include 使用命名空间标准;#define 行 10#define 列 10#define CHUNK_ROWS 5#de ..
发布时间:2021-12-30 21:05:48 其他开发

MPI 从文本文件中读取

我正在学习在 MPI 中编程,我遇到了这个问题.假设我有一个包含 100,000 行/行的 .txt 文件,我如何将它们分块以供 4 个处理器处理?即我想让处理器 0 处理 0-25000 行,处理器 1 处理 25001-50000 等等.我做了一些搜索,确实遇到了 MPI_File_seek,但我不确定它是否可以在 .txt 上工作并在之后支持 fscanf. 解决方案 文本并不是并行 ..
发布时间:2021-12-30 21:03:41 其他开发

MPI:阻塞与非阻塞

我无法理解 MPI 中阻塞通信和非阻塞通信的概念.两者之间有什么区别?有什么优点和缺点? 解决方案 阻塞通信使用 MPI_Send() 和 MPI_Recv().这些函数在通信完成之前不会返回(即它们阻塞).稍微简化一下,这意味着传递给 MPI_Send() 的缓冲区可以重用,因为 MPI 将它保存在某处,或者因为它已被目的地接收.类似地,MPI_Recv() 在接收缓冲区已填充有效数据时 ..
发布时间:2021-12-30 20:59:06 其他开发

创建一个跨 MPI 进程保持同步的计数器

我在使用基本的 comm 和 group MPI2 方法方面有相当多的经验,并且使用 MPI 做了相当多令人尴尬的并行模拟工作.到目前为止,我已经构建了我的代码,使其具有一个调度节点和一堆工作节点.调度节点有一个将与模拟器一起运行的参数文件列表.它使用参数文件为每个工作节点播种.工作节点运行他们的模拟,然后请求调度节点提供的另一个参数文件.运行完所有参数文件后,调度节点会先关闭每个工作节点,然后再 ..
发布时间:2021-12-30 15:49:55 C/C++开发

如何使用 cmake 编译包含 MPI 的 c 程序

我正在尝试将 openmp 和 mpi 技术应用于需要构建“cmake .&&make"的开源 C 程序.我已经在 How to set linkerCMake 的 try_compile 函数中的 OpenMP 标志 如何包含 -fopenmp 标志但仍然对 mpi 感到困惑.我该怎么办? 解决方案 OpenMP 这是关于 OpenMP 的问题吗?然后你所要做的就是使用 -fope ..
发布时间:2021-12-26 21:38:48 其他开发

R:foreach 循环如何找到应该调用的函数?

我在使用调用自定义函数的 foreach 循环(使用 %dopar%)时遇到问题.在Linux下确实没有问题,但是在Windows下却找不到自定义函数.这个问题很难用语言来解释,所以我写了一个小例子来说明.假设我有三个简单函数的集合,其中 FUN2(使用 %do%)和 FUN3(使用 %dopar%) 调用第一个 (FUN): FUN ..
发布时间:2021-12-26 12:18:21 其他开发

无法理解 MPI_Type_create_struct

我无法理解 MPI_Type_create_struct 方法.假设我们有一个结构体: struct foo(){浮点值;字符等级;} 我们想将此结构发送到另一个进程.考虑下面的代码示例: int count = 2;//结构体元素个数MPI_Aint 偏移[计数] = {0, 8};int blocklengths[count] = {1, 1};MPI_Datatype types[c ..
发布时间:2021-12-23 16:59:56 其他开发

C 中的结构序列化并通过 MPI 传输

我已经定义了一个自定义的 struct,我需要将它发送给另一个使用MPI_Bsend(或MPI_Send)进行MPI处理. 这是结构: struct car{int 移位;国际顶级速度;}我的车; 问题是,除了基本类型之外,MPI 似乎不支持复杂数据类型的直接“传输",如上面显示的结构.我听说我可能必须使用“序列化". 我应该如何解决这个问题并成功地将 myCar 发送到进程 5? ..
发布时间:2021-12-23 16:53:17 其他开发

MPI 将矩阵划分为块

我想将矩阵划分为块(而不是条带),然后使用 MPI_Scatter 分配这些块. 我想出了可行的解决方案,但我认为这远非“最佳实践".我有 8x8 矩阵,填充了从 0 到 63 的数字.然后我将它分成 4 个 4x4 块,使用 MPI_Type_vector 并通过 MPI_Send 分发它,但这需要一些额外的计算,因为我必须计算大矩阵中每个块的偏移量. 如果我使用分散,第一个(左上角 ..
发布时间:2021-12-18 23:43:32 其他开发