WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记

引子

笔者因项目需求,需要做Fortran77代码的MPI并行,因此在 WIN10 下安装了 VS2017Intel Parallel Studio XE 2018 Update 3 Cluster Edition for Windows(以下简称IVF2018Cluster) ,并做相应配置,最终以MPI并行的Hello World程序单机环境运行验证。
IVF2018Cluster 版本已经包含 Intel 自家的 Fortran 编译器和 64位MPI 库,然后将其集成到 VS2017 集成开发环境中,最后在 VS2017 中编码、编译、运行。
本文主旨是为这段时间的学习做笔记记录与具体教程,相关说明如“为何简称为IVF2018”等皆放于文末,如需了解可先移步文末;关键配置步骤在3.5至3.9

关键词:WIN10 VisualStudio Fortran IVF IntelMPI 配置

大体步骤

  1. 下载 VS2017 和 IVF2018Cluster
  2. 先安装 VS2017,再安装 IVF2018Cluster
  3. 配置MPI编程与调试所需环境
  4. 编写代码并编译生成可执行程序
  5. 单机环境下调试运行程序

详述步骤

一、下载

  1. 微软的 Visual Studio 与 Intel 的 IVF 的集成受版本限制,下载前要先确保集成支持,一般同年份版本如 VS2013 和 IVF2013 肯定集成。放一张网上找到的图,忘了是哪存的了,如有侵权请联系删除
    WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第1张图片
  2. 下载 VS2017
  3. 下载 IVF2018Cluster

二、安装

  1. 要将 Intel Fortran 编译器集成到 VS 里面,必须先安装 VS2017 ,再安装 IVF2018Cluster
  2. 安装 VS2017
    1.1 必须勾选“使用C++的桌面开发”,其它的可选可不选

WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第2张图片
1.2 建议安装到默认目录,以免环境变量什么的麻烦
1.3 等待安装完成,然后关闭 VS2017 ,否则后续装 IVF 时不能识别以致安装失败

  1. 安装 IVF2018Cluster
    2.1 双击安装包,提示将提取安装包内产品。直接点击Extract即可
    WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第3张图片
    2.2 等待几秒提取完成,出现 logo
    WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第4张图片
    WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第5张图片
    2.3 因为笔者需要 Intel 的 Fortran 编译器和 MPI 库,所以第二个 Fortran Complier 和第六个 MPI Library 必须勾选。最后四个是 Intel 开发的一些性能工具,勾选上以后可以使用。当然全部安装的话也只需几个G的硬盘空间,为免漏掉什么工具,笔者一般是全部安装。同样安装到默认目录。点击 Next 下一步
    WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第6张图片
    WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第7张图片
    2.4 点击同意,Next 下一步
    WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第8张图片
    2.5 到这里有两个选项,下面一个是选择集成到哪个版本的 VS 里;上面一个是用来激活的,如果有激活码就直接输进去就行,而如果是用许可证文件,则点击 here 进入 WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第9张图片
    2.5.1 笔者是使用许可证文件激活,所以点击 here 进入,勾选 License file activitation ,点击 Browse 浏览,找到并双击许可证文件,完成后点击 OK 返回上一层WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第10张图片
    2.5.2 点击 Customize ,进入选择 VS 的版本WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第11张图片
    由于笔者只安装了2017版的 VS,所以只有这一个可以进行集成;如果还安装了另外两个版本,也可以集成进去
    2.6 确认无误后,点击 Install 安装,等待安装完成即可
    WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第12张图片

三、配置

3.1 打开 VS2017 ,新建一个项目
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第13张图片
3.2 选择 Intel® Visual Fortran => Console Application =>Empty Project ,确定目录、解决方案名称、项目名,然后点击“确定”创建一个项目
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第14张图片
3.3 因为MPI的配置是对每个项目都要做更改,不能全局更改,所以笔者自建了一个配置模板项目,需要的时候就直接复制使用。右键点击该项目,选择“属性”
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第15张图片
3.4->3.6配置编译环境


3.4 在 Fortran => General => Additional Include Directories,添加 Intel MPI 的包含目录 C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.3.210\windows\mpi\intel64\include 点击右下角的“应用“生效
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第16张图片
3.5 在 Linker => General => Additional Library Directories,添加 Intel MPI 的库目录 C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.3.210\windows\mpi\intel64\lib 点击右下角的“应用“生效
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第17张图片
3.6 在 Linker => Input => Additional Dependencies,添加附属依赖项 impi.lib 点击右下角的“应用“生效
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第18张图片
3.7 在 配置管理器=>平台,选择“x64”平台(因为 Cluster 版只包含64位 MPI 库,如果是在 Intel 官网下载的 MPI 库,则兼有32位 MPI 库
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第19张图片


3.7->3.8配置调试环境
3.7 在 Debugging=>Command,添加mpiexec.exe的路径 C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.3.210\windows\mpi\intel64\bin\mpiexec.exe 点击右下角的“应用“生效
3.8 在 Debugging=>Command Arguments ,添加 -n 4 “$(TargetPath)” ,其中4为并行需要的进程数,可更改。点击右下角的“应用“生效
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第20张图片


3.9 此外,MPI程序运行需要确保 hydra_service 服务已开启,且要进行用户授权
3.9.1 以管理员身份打开cmd,输入 hydra_service -status,回车,查看状态,如果是显示以下信息,说明该服务已启动WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第21张图片
如果不是的话,重新启动或者重新安装它,具体可以直接输入 hydra_service 获取帮助,再相应输入命令行参数
一般初次安装并确认已启动的话,以后都会开机自启,只要不作死修改什么开机启动项啥啥啥的
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第22张图片
3.9.2 要进行用户授权,同样以管理员身份打开cmd。输入 mpiexec -register,回车后提示输入账户与密码,然后键入当前Windows登录账户名与密码,再确认一遍密码,就将账户与密码存到注册表了
注册账号描述
也可以直接输入 mpiexec ,看看后面的命令参数作用与怎么使用,篇幅过大就不放图了。

这里笔者碰到个问题,就是用自己登录电脑的账号密码注册后,在后面运行mpi程序时总是显示 Credentials for XXX rejected connecting to XXX ,搜了下说是登录信息不对。后来看到有帖子说只要本地上有一个管理员权限的账户就行,也不用登录它。于是笔者先在本地再新建一个用户并给它管理员权限,再用注册这个用户的账号密码,这时运行mpi程序就没问题了。如果有碰到这个问题的可以这么尝试一下,或者有谁知道该怎么解决的,也可以在评论里分享,万分感谢!

四、编写代码

这里用MPI并行编程方式编写一段Fortran77代码,让各个进程都在显示器显示HelloWorld

      program main
      include "mpif.h"
      character * (mpi_max_processor_name) processor_name
      integer myid,numprocs,namelen,rc,ierr
      
      call mpi_init(ierr)
      call mpi_comm_rank(mpi_comm_world,myid,ierr)
      call mpi_comm_size(mpi_comm_world,numprocs,ierr)
      call mpi_get_processor_name(processor_name,namelen,ierr)
      write(*,10) myid,numprocs,processor_name
10    format('hello,world!processor ',i2,' of ',i1,' on ',20a)
      call mpi_finalize(rc)
      end

然后点击 生成 => 生成项目,生成.exe可执行程序

五、调试运行

直接点击 调试 => 开始执行(不调试),结果如下:
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第23张图片
【这里是因为在前面3.7->3.8配置了调试环境,才能直接用VS的调试功能;如果没有做3.7->3.8的话,只能在命令行里手动输入,下面也给出命令行窗口执行方法:
在.exe可执行程序所在文件夹,空白处 shift+鼠标右键 ,然后点击打开Powershell窗口,再键入 mpiexec -n 4 可执行程序名 ,回车即可。这一方法对需要频繁更改并行进程数运行方便】
WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第24张图片

说明与补充

  1. 为何简称为 IVF2018 ?——这要从 Fortran 编译器历史说起,自从 Compaq Visual Fortran 团队并入 Intel 之后,Intel 推出了 Intel Visual Fortran(简称IVF),并一直维护开发至今。一开始 IVF 是独立的一个产品,后来随着时代发展~~,硬盘空间大了也便宜了,人也越来越有钱了~~,Intel 把它并到一个大工具集里,这就是 Intel Parallel Studio 。但之前十多年的习惯不易改,所以要用 Fortran 编译器的时候还是直接叫它 IVF ,约定俗成而已
  2. Intel MPI 也是 Intel 的一个产品,免费,不开源,有32位与64位 MPI 库
  3. 现行 Intel Parallel Studio 有 Cluster(集群)版和普通版,Cluster 版就只包含了64位 MPI 库,没有32位 MPI 库;普通版则没有 MPI 库
  4. 早期版本 Intel MPI 的守护程序是 smpd ,据 Intel 工程师说现在已经过时了,所以较新的 IVF 包含的是 hydra_service
  5. 配置编译调试环境的信息主要来源于 Intel 官网Configuring a Visual Studio* Project
    WIN10下VS+Fortran+Intel MPI安装、配置、运行笔记_第25张图片
  6. 其它版本或者单独安装的 Intel MPI ,对它的环境配置与上面的区别,只在于安装目录的不同,如这个 2018Cluster 版的默认安装目录是 C:\Program Files (x86)\IntelSWTools ,再如笔者在前期安装的 IVF2011 默认安装目录是 **C:\Program Files (x86)\Intel\ComposerXE-2011**,举一反三即可!
  7. 为何不用 MSMPI 而用 Intel MPI ?——其实一开始是用的 MSMPI,但是配置好之后,编译生成总有几个警告。查了下网上论坛讨论,大概是因为 VS 的库前后有过小更改导致的,小问题。因为强迫症不能忍但是想尽量做好,所以换了 Intel MPI 一试,0 errors 0 warnings ,完美!
  8. MSMPI 的配置其实也跟 Intel MPI 的极其相似,关键也是添加包含目录、库、附属依赖项这些就行
  9. 其实最权威、最能一次到位的,还是官方文档、论坛,比如上图就是 Intel 官网上的开发者指导书,或者安装的 IVF 也会自带帮助文档,多尝试找找也能找到了。如果看英文速度慢,某某翻译软件都是些好助手。

后记与致谢

笔者去年上半年接到这个项目时,由于大学只学过C语言且很久没用过了,非常紧张,天天在网上搜相关资料,幸亏发现了一个很适合小白入门的Fortran网站 Fortran Coder,丰富的资料、资源,对求助一语中的的建议,都助我度过了前期那段艰难的入门阶段,真的是太感谢了。后来搭 MPI 并行环境时,也是在各个论坛到处搜索相关帖子,参考尝试,个中辛酸,到最终解决的一刻是真的欣慰,也算是接触学习了很多新的知识。但由于当时管理习惯不够好,曾搜到的网址方法无暇再翻寻,所以不再一一贴出,谨在此致以深深的谢意!

你可能感兴趣的:(MPI,fortran,visual,studio,windows)