为啥 MPI 在 Visual Studio 2015 中不起作用?

Posted

技术标签:

【中文标题】为啥 MPI 在 Visual Studio 2015 中不起作用?【英文标题】:Why MPI doesn't work in Visual Studio 2015?为什么 MPI 在 Visual Studio 2015 中不起作用? 【发布时间】:2015-11-11 21:24:44 【问题描述】:

我从具有管理员权限的控制台下载并安装了mpich2-1.0.8p1-win-x86-64.msi。我创建了空的 win32 控制台项目,创建了文件 code.cpp 并粘贴了此示例代码。

#include <stdio.h>
#include "mpi.h"
int main(int argc, char* argv[])

    int ProcNum, ProcRank, RecvRank;
    MPI_Status Status;
    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &ProcNum);
    MPI_Comm_rank(MPI_COMM_WORLD, &ProcRank);
    if (ProcRank == 0)
     
            printf("\n Hello from process %3d", ProcRank);
        for (int i = 1; i < ProcNum; i++)
        
            MPI_Recv(&RecvRank, 1, MPI_INT, MPI_ANY_SOURCE,
                MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
            printf("\n Hello from process %3d", RecvRank);
        
    
    else
        MPI_Send(&ProcRank, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
    MPI_Finalize();
    return 0;

后来我去项目属性到VC++目录并添加了包含目录和库目录。在 Linker/Input/Additional Dependencies 我写了 mpi.lib,在 C/C++/Language 我允许 Open MP Support。当我编译我的项目时,我遇到了奇怪的错误。你能帮助我吗?我不明白我做错了什么,因为我是用教程做的。

【问题讨论】:

MPI 不需要 OpenMP 支持。从您的错误列表(特别是第一个警告)中,看起来您在为 32 位架构编译时提供了 64 位 MPI 库的路径。要么提供 32 位库,要么编译为 64 位架构。 '我用 C/C++/Language 编写了 mpi.lib'。什么编程语言被称为“语言”? @R_Kapp 谢谢,它帮助了我。把这个写在答案中,我会选择这个作为解决方案。 @Deanie 它是属性中目录的名称。 【参考方案1】:

您的第一个(也是唯一一个)警告表明您正在将 64 位库与 32 位构建链接。您需要提供 32 位库或构建 64 位架构以消除链接器错误。

【讨论】:

以上是关于为啥 MPI 在 Visual Studio 2015 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Visual Studio 2010 在 Windows 上使用 Open MPI 构建 boost::mpi 库

为啥 Visual Studio 编辑器在空白处显示点?

为啥以“以管理员身份运行”运行 Visual Studio?

为啥我的 Visual Studio 工具箱中缺少串行端口组件?

Typescript:为啥 Visual Studio 代码不报告与命令行 tsc 相同的错误?

为啥visual studio 2013安装后,没有c#模板?