使用 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 中编译的主要内容,如果未能解决你的问题,请参考以下文章
使用 MPI.NET 和 Mono 框架在超级计算机的 linux 节点上执行分布式计算
水文日常~~Linux命令行下如何编译运行MPI程序(C/C++)