0


Windows VScode 配置MPI库

1 正常配置流程

1.1 配好C++

超简单视频教程建议
1.1.1 下载mingw-w64、配置环境变量
1.1.2 安装C/C++Compile Run插件
1.1.3 配置C/C++Compile Run插件,主要是配置gcc.exe、g++.exe、gdb.exe的路径

1.2 安装MPI库

参考教程
但是这教程写的该说不说,流程是对的,但是还是有问题
我这里总结、修改一下

1.2.1 下载安装Microsoft MPI

下载地址
就安装最新版吧,下载两个文件msmpisetup.exe和msmpisdk.msi,无先后顺序地分别安装这两个文件,安装的地址可以随便改。
简单介绍一下:sdk(Software Development Kit,软件开发工具包),因此
这个Microsoft MPI包括了mpi.h、omp.h(意味着不需要再配置openmp)等
安装完后理论上已经给加入环境变量了,在cmd中输入 set msmpi 应该是下图的结果
在这里插入图片描述

1.3 VScode配置MPI库

1.3.1 运行mpi程序的过程

简单介绍一下运行mpi程序的过程,你有一个写了mpi的cpp文件,会先用编译器进行编译(这里就是g++.exe),编译完后生成一个可执行文件exe,然后再用mpiexec去运行这个exe文件。
是不是听起来挺简单的?确实过程很简单,但是目前麻烦就是麻烦在编译的过程,工具确实是g++,但是为了能够找到mpi运行所需要的各种库文件什么的,你需要指定很多的参数,才能正常、正确编译。(表达可能不专业,但是大致是这个意思)
根据目前网上的我看到的教程,当使用mingw-w64编译器时,你需要指定以下参数
在这里插入图片描述

网址
具体到命令就是

g++ 文件名.cpp -o 文件名 -I mpi的Include路径 -L mpi的Lib/x64路径 -lmsmpi

下面举一个实际的例子
下面是一个调用MPI接口的test.cpp文件

#include<iostream>#include<mpi.h>#include<stdint.h>usingnamespace std;intmain(int argc,char* argv[]){
    cout<<"hello"<<endl;int myid, numprocs;int namelen;char processor_name[MPI_MAX_PROCESSOR_NAME];MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);MPI_Get_processor_name(processor_name,&namelen); 
    std::cout<<"Hello World! Process "<<myid<<" of "<<numprocs<<" on "<<processor_name<<std::endl;MPI_Finalize();return0;}

定位到test.cpp所在位置,在终端输入以下编译命令

g++ test.cpp -otest-I E:\\Lib\\mpi\\Include -L E:\\Lib\\mpi\\Lib\\x64 -lmsmpi

如果没有报错就是编译成功了,在同样的位置下生成test.exe
然后在终端用下面命令运行

mpiexec test

也可以指定进程数

mpiexec -n4test

如果是像我这样的运行结果就对了
在这里插入图片描述

1.3.2 VScode配置mpi

按照上面1.3.1说的其实就可以实现mpi开发了,那么为什么还需要配置呢?其实这是为了方便,每次编译都指定一大串的参数太麻烦了,所以就通过配置这些参数,实现每次编译运行的时候都默认加上了这些参数,来简化这个过程。
这里有两种方式
首先把msi的Include加入到c++的includePath里
在这里插入图片描述

方式一 task.json中加入这些参数

task.json就是控制如何编译c/c++的配置文件,里面的args关键字就指定编译的参数。在两个args的位置(分别对应c、c++的编译),加入下面的内容。
在这里插入图片描述
但是这种方式会让你在当前文件夹下的所有cpp、c都按照这个进行编译。
这种方式按下图方式编译
在这里插入图片描述

方式二

安装插件Code Runner,以后运行都通过这个插件,这个插件可以用在很多种编译语言上,并设置如何运行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置的内容

"c":"cd $dir && gcc $fileName -o $fileNameWithoutExt -lmsmpi -L E:\\Lib\\mpi\\Lib\\x64\\ -I E:\\Lib\\mpi\\Include\\ && mpiexec -n 4 $fileNameWithoutExt","cpp":"cd $dir && g++ $fileName -o $fileNameWithoutExt -lmsmpi -L \"E:\\Lib\\mpi\\Lib\\x64\" -I \"E:\\Lib\\mpi\\Include\" && mpiexec -n 4 $fileNameWithoutExt",

或者路径不要引号

"c":"cd $dir && gcc $fileName -o $fileNameWithoutExt -lmsmpi -L E:\\Lib\\mpi\\Lib\\x64\\ -I E:\\Lib\\mpi\\Include\\ && mpiexec -n 4 $fileNameWithoutExt","cpp":"cd $dir && g++ $fileName -o $fileNameWithoutExt -lmsmpi -lmsmpi -L E:\\Lib\\mpi\\Lib\\x64\\ -I E:\\Lib\\mpi\\Include\\ && mpiexec -n 4 $fileNameWithoutExt",

这里用插件,不仅配置了参数,而且指定了如何运行的。
后面就通过下面的方式来运行
在这里插入图片描述
这种方式的不好的地方在于指定了多少个进程运行,想改得去setting.json中改。

2 碰到的坑

json的坑

最开始我就是按照教程来写入json文件的
教程里面是这样的

"cpp":"cd $dir && g++ $fileName -o $fileNameWithoutExt -lmsmpi -lmsmpi -L "E:\\Lib\\mpi\\Lib\\x64" -I "E:\\Lib\\mpi\\Include\\" && mpiexec -n 4 $fileNameWithoutExt",

这是错的,要不然把路径的引号去了,要不然就在前引号和后引号之前都加上反斜杠。
因为不懂json的语法,导致我一直没配成功

标签: windows vscode

本文转载自: https://blog.csdn.net/m0_46128316/article/details/134175604
版权归原作者 想学到东西的W 所有, 如有侵权,请联系我们删除。

“Windows VScode 配置MPI库”的评论:

还没有评论