mpi相关内容

OpenMP 中可重用的私有动态分配数组

我正在使用 OpenMP 和 MPI 在 c 中并行化一些矩阵运算.一些对矩阵进行运算的函数是用 Fortran 编写的.Fortran 函数需要传入一个缓冲区数组,该数组仅在函数内部使用.目前我正在每个并行部分分配缓冲区,类似于下面的代码. int i = 0;整数 n = 1024;//实际上这是从命令行读取的双**a = createNbyNMat(n);#pragma omp 并行{双* ..
发布时间:2021-06-04 18:34:53 其他开发

使用 MPI 发送 size_t 类型的数据

在 MPI 中发送 size_t 类型数字的最安全方法是什么?例如,我确信将其作为 MPI_INT 盲目发送是不安全的.MPI_LONG 会一直工作吗? 解决方案 如何使用宏? #include #include #if SIZE_MAX == UCHAR_MAX#define my_MPI_SIZE_T MPI_UNSIGNED_CHAR#elif SIZE_MAX == USHRT_ ..
发布时间:2021-06-04 18:34:50 其他开发

发送数据:MPI_Type_contiguous vs 原始类型

我正在尝试通过两个进程交换数据(30 个字符)以将 MPI_Type_contiguous API 理解为: 字符数据[30];MPI_Type_contiguous(10,MPI_CHAR,&mytype);MPI_Type_commit(&mytype);MPI_Send(data, 3,mytype,1, 99,MPI_COMM_WORLD); 但是可以通过以下方式完成类似的任务: M ..
发布时间:2021-06-04 18:34:46 其他开发

在本地安装带有mpi的fftw-2.1.5

我正在尝试使用 --enable-mpi 标志在带有 linux 的 IBM 集群上安装 fftw-2.1.5 库,但此后我未能这样做.我需要 fftw 版本 2.1.5,因为 GADGET2 代码需要该版本,并支持 mpi. 首先,我安装了 mpich-3.0.4: cd ~/mpich-3.0.4./configure --prefix=$HOME --enable-shared制作进 ..
发布时间:2021-06-04 18:34:43 其他开发

如何为xcode安装Openmpi?

我试图在xcode 4中运行一些MPI程序.我通过键入 sudo port install openmpi 从MacPort安装了openmpi,安装正常完成.然后,将opt/local/include/openmpi添加到我的用户标题搜索路径中,将"libmpi.dylib"和"libmpi_cxx.dylib"拖到我的项目中. 但是当我尝试运行该程序时,出现以下错误消息: 体系结构x8 ..
发布时间:2021-05-29 21:23:52 C/C++开发

使用MPI_Pack打包阵列

我正在尝试打包一个数组,并将其从一个进程发送到另一个进程.我仅在2个进程上执行此操作.我已经编写了以下代码. #include#include#include#include"mpi.h"int main(int argc,char * argv []){MPI_Init(& argc,& argv);int myrank,大小; ..
发布时间:2021-05-14 19:25:16 其他开发

充分利用SLURM上的所有CPU

我想在集群上运行作业.在不同的节点上有不同数量的CPU,我不知道哪个节点将分配给我.有什么适当的选项可以使作业在所有节点上创建与CPU一样多的任务? #!/bin/bash -l#SBATCH -p正常#SBATCH -N 4#SBATCH -t 96:00:00srun -n 128 ./运行 解决方案 实现目标的一个肮脏技巧是使用SLURM提供的环境变量.对于样本文件: #!/bin ..
发布时间:2021-05-14 19:25:10 其他开发

用h5py并行写入不同的组

我正在尝试使用并行h5py为每个进程创建一个独立的组,并用一些数据填充每个组.实际上,只有一个组被创建并填充了数据.这是程序: 从mpi4py导入MPI的 导入h5py等级= MPI.COMM_WORLD.Get_rank()f = h5py.File('parallel_test.hdf5','w',driver ='mpio',comm = MPI.COMM_WORLD)数据=范围(100 ..
发布时间:2021-05-13 20:14:33 其他开发

由于有待处理的消息而使mpi_finalize挂起,我可以不调用mpi_finalize而完成程序

我有一个很长的FORTRAN + MPI代码,它们挂在mpi_finalize()步骤上.可能是由于待处理的消息.即使我"ctrl-c"中止该挂起的程序,我也可以获得预期的输出. 这里的问题是:我可以从我的代码中删除mpi_finalize(),会有潜在的问题吗?看来,通过删除mpi_finalize()可以使输出保持不变,并且程序可以无错误地退出. 我使用的编译器是"ifort版本1 ..
发布时间:2021-05-09 19:20:30 其他开发

openmpi忽略错误:无法识别mca接口

今天早上,我将gfortran(从4.7升级到6.1.0)和OpenMPI(从1.10到2.0.1)编译器进行了升级.我写了这个简单的程序: 程序主要使用mpi_f08隐式无整数:: ierror呼叫mpi_init(ierror)致电mpi_finalize(ierror)结束程序主要 直接编译时(没有mpirun,只有 ./a.out ),我收到以下消息(由于程序按预期运行,它们并不是真 ..
发布时间:2021-05-09 19:18:11 其他开发

使用MPI-IO编写Fortran格式的文件

我正在尝试使用OVERFLOW-PLOT3D q文件格式(在此定义: http://overflow.larc.nasa.gov/files/2014/06/Appendix_A.pdf ).对于单个网格,基本上是 READ(1)NGRID读(1)JD,KD,LD,NQ,NQC读取(1)REFMACH,Alpha,REY,TIME,GAMINF,BETA,TINF和&IGAM,HTINF,HT ..
发布时间:2021-05-09 19:17:35 其他开发

为什么在添加MPI时文件没有打开?

当我的程序没有MPI时,打开文件就可以了,但是当我添加MPI时,文件不会打开.为什么会这样? 我的代码: void fileEntry(string path,int n){后流fout.open(路径);如果(!fout.is_open()){cout ..
发布时间:2021-05-07 18:50:59 C/C++开发

MPI通信复杂度

我正在研究MPI中Quicksort的并行实现的通信复杂性,并且在书中找到了类似的东西: “单个进程从其他p-1个进程中收集p个常规样本.由于传递的值相对较少,因此消息等待时间可能是此步骤的主要术语.因此,收集的通信复杂性是O(log p)"(O实际上是theta,p是处理器数). 对广播消息进行相同的确认. 为什么这些组通信复杂度为O(log p)?是因为通信是使用某种基于树的 ..

CMake的:选择mpich而不是openmpi

我正在使用cmake 3.10.2.我同时安装了openmpi和mpich.但是我只需要加载mpich.因此,我从文档中发现了以下内容 MPI_EXECUTABLE_SUFFIX 后缀,该后缀附加在要查找的所有名称之后.例如,您可以将其设置为.mpich或.openmpi来选择一个或另一个关于Debian及其衍生版本的信息. 我的CMake文件是这样的 set(MPI_EXE ..
发布时间:2021-04-22 19:51:00 其他开发

为什么mpi_bcast比mpi_reduce慢得多?

使用MPI,我们可以进行广播以将阵列发送到多个节点,也可以简化将多个节点上的阵列组合到一个节点上. 我猜想,实现这些目标的最快方法将是使用二叉树,其中每个节点要么发送到两个节点(bcast),要么减少两个节点(reduce),这将使节点数成为时间的对数 似乎没有什么理由会比减少广播特别慢? 我在4台计算机的群集上运行了以下测试程序,其中每台计算机具有12个内核.奇怪的是,广播比减 ..
发布时间:2021-04-22 19:44:33 C/C++开发

MPI:更改CMakelists中的处理器数量

我正在使用CLion.我的CMakeLists.txt看起来像这样: cmake_minimum_required(版本3.2)项目(MPI)add_executable(MPI main.cpp)#需要此项目的MPI:find_package(需要MPI)设置(CMAKE_CXX_COMPILE_FLAGS $ {CMAKE_CXX_COMPILE_FLAGS} $ {MPI_COMPILE ..
发布时间:2021-04-22 19:21:49 C/C++开发