[英]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.