gpt4 book ai didi

c - C 语言中的 OpenMP + MPI 混合 - 编译困难

转载 作者:行者123 更新时间:2023-11-30 16:53:40 25 4
gpt4 key购买 nike

必须编译类似以下代码的内容(OpenMP + MPI in C)我对编译器的经验很少,并且在这方面遇到了很大的麻烦,需要明确的步骤如何在 Windows 中编译此类代码,非常感谢!

#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();
}

最佳答案

您可以像任何其他库一样使用 MPI 进行编译,并且编译器具有特定的 OpenMP 标志。假设您使用 MS-MPI 和 Microsoft C/C++ 编译器:

  1. 添加 MPI 包含和库路径/I"C:\Program Files (x86)\Microsoft SDKs\MPI\Include"/libpath:"C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64"

    • “C:\Program Files (x86)\Microsoft SDKs\MPI” 更改为安装 MS-MPI 的位置
    • 如果在 32 位计算机上,请将 Lib\x64 替换为 Lib\x86
  2. 将 MPI 库添加到命令行:"msmpi.lib"

  3. 将 OpenMP 标志添加到命令行:/openmp

cl /I"C:\Program Files (x86)\Microsoft SDKs\MPI\Include" /libpath:"C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64" /openmp "msmpi.lib" /out:helloworld.exe helloworld.c

请参阅 Microsoft 文档:How to compile and run a simple MS-MPI program/openmp (Enable OpenMP 2.0 Support)

<小时/>

如果您使用 GNU 工具(mingw 或 cygwin),则同样适用:链接 MPI 并添加 OpenMP 标志。

gcc -I"/path/to/MPI/include" -L"/path/to/MPI/include" -lmpi --openmp -o helloworld.exe helloworld.c

请注意,如果您的库是 MPICH 的衍生版本,您可能需要将 -lmpi 更改为 -lmpich .

关于c - C 语言中的 OpenMP + MPI 混合 - 编译困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40794038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com