繁体   English   中英

用mingw64编译一个mpi项目

[英]compiling a mpi project with mingw64

我正在尝试使用“ mpiexec -n 4 myprogram”命令运行以下代码。

#include <stdio.h> 
#include "mpi.h"
#include <omp.h>

int main(int argc, char *argv[]) {
  int numprocs, rank, namelen;
  char processor_name[MPI_MAX_PROCESSOR_NAME];
  int iam = 0, np = 1;

  MPI_Init(&argc, &argv);
  MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
  MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  MPI_Get_processor_name(processor_name, &namelen);

  #pragma omp parallel default(shared) private(iam, np)
  {
    np = omp_get_num_threads();
    iam = omp_get_thread_num();
    printf("Hello from thread %d out of %d from process %d out of %d on %s\n",
           iam, np, rank, numprocs, processor_name);
  }

  MPI_Finalize();
}

我正在使用win7 x64,mpich2 x64,eclipse x64和mingw64(rubenvb构建)。 它可以很好地编译,并且可以在eclipse环境中运行(但仅在一个进程中运行),但是在命令行中,它立即关闭而没有结果或错误。 如果我将其编译为x86 exe,它将按预期运行。 那么怎么了? MPI与mingw64编译的程序不兼容吗?

如果将其构建为控制台程序,则该程序将运行,完成然后立即关闭,因为该程序可能未发送任何命令来保持控制台打开。

如果您再次运行它,这一次(首先进入控制台并从命令行运行它),控制台将保持打开状态,因为它作为一个单独的进程运行,而不是与您的程序捆绑在一起(就像双击时一样)运行程序)。

至于不并行运行,请确保在编译和链接阶段都具有-fopenmp标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM