簡體   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