使用 MPI 并在 Linux 中使用 OpenMPI 的代码不能在使用 MSMPI 的 Windows 中编译

Posted

技术标签:

【中文标题】使用 MPI 并在 Linux 中使用 OpenMPI 的代码不能在使用 MSMPI 的 Windows 中编译【英文标题】:Code using MPI and working in Linux with OpenMPI doesn't compile in Windows using MSMPI 【发布时间】:2018-05-17 21:50:05 【问题描述】:

我正在尝试在 Windows 7 中使用 MSMPI 在 C 中编译一个程序。该程序在 Linux 中使用 OpenMPI 编译和运行良好。但是 in 不能使用 Visual Studio 2010 中的 MS 编译器进行编译。当我取消注释“MPI_Init()”行时,我正在处理大量错误和消息

“错误207错误C1003:错误计数超过100;停止编译”

第一行是这样的

"myObj *a[5] = NULL;"

带有错误信息

“错误 104 错误 C2059:语法错误:''”

编译器抱怨意外的右大括号“”。使用 MPI_Init 语句注释掉代码编译正常,但当然不使用 MSMPI。这是一个sn-p的代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h> 
#include <math.h>
#include <omp.h>
#include <mpi.h>
#include "more_header_files.h" 

int main(int argc, char *argv[])

   MPI_Init(&argc, &argv);
   MPI_Status status;
   int my_rank, numProc;

   MPI_Comm_rank( MPI_COMM_WORLD, &my_rank );
   MPI_Comm_size( MPI_COMM_WORLD, &numProc );

   myObj *a[5] = NULL;

除了安装 MinGW 和使用 GCC 编译(可能也不起作用)之外,还有其他解决方案吗?

【问题讨论】:

【参考方案1】:

我发布问题时使用的是 VS 2010。迁移到 VS 2013 解决了编译问题。不幸的是,现在可执行文件在没有有用信息的情况下崩溃。相同的代码在使用 OpenMPI 的 Linux 中运行良好。

【讨论】:

以上是关于使用 MPI 并在 Linux 中使用 OpenMPI 的代码不能在使用 MSMPI 的 Windows 中编译的主要内容,如果未能解决你的问题,请参考以下文章

linux mpi.h一般在哪

使用 MPI.NET 和 Mono 框架在超级计算机的 linux 节点上执行分布式计算

windows怎么配置安装mpi

水文日常~~Linux命令行下如何编译运行MPI程序(C/C++)

水文日常~~Linux命令行下如何编译运行MPI程序(C/C++)

水文日常~~Linux命令行下如何编译运行MPI程序(C/C++)