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 肯定集成。放一张网上找到的图,忘了是哪存的了,如有侵权请联系删除
    在这里插入图片描述
  2. 下载 VS2017
  3. 下载 IVF2018Cluster

二、安装

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

图源:微软官网
1.2 建议安装到默认目录,以免环境变量什么的麻烦
1.3 等待安装完成,然后关闭 VS2017 ,否则后续装 IVF 时不能识别以致安装失败

  1. 安装 IVF2018Cluster
    2.1 双击安装包,提示将提取安装包内产品。直接点击Extract即可
    临时提取文件,只要把下面小方框勾上了,等安装完成就会自动删除临时文件
    2.2 等待几秒提取完成,出现 logo
    正在提取……
    这个Logo真好看!Intel Fortran 编译器在 Intel Parallel Studio XE Professional Edition 里面
    2.3 因为笔者需要 Intel 的 Fortran 编译器和 MPI 库,所以第二个 Fortran Complier 和第六个 MPI Library 必须勾选。最后四个是 Intel 开发的一些性能工具,勾选上以后可以使用。当然全部安装的话也只需几个G的硬盘空间,为免漏掉什么工具,笔者一般是全部安装。同样安装到默认目录。点击 Next 下一步
    这里不能滚动截图,所以分开两个 1/2
    这里不能滚动截图,所以分开两个 2/2
    2.4 点击同意,Next 下一步
    不同意不给用!
    2.5 到这里有两个选项,下面一个是选择集成到哪个版本的 VS 里;上面一个是用来激活的,如果有激活码就直接输进去就行,而如果是用许可证文件,则点击 here 进入 激活与集成环境
    2.5.1 笔者是使用许可证文件激活,所以点击 here 进入,勾选 License file activitation ,点击 Browse 浏览,找到并双击许可证文件,完成后点击 OK 返回上一层许可证激活
    2.5.2 点击 Customize ,进入选择 VS 的版本选集成环境
    由于笔者只安装了2017版的 VS,所以只有这一个可以进行集成;如果还安装了另外两个版本,也可以集成进去
    2.6 确认无误后,点击 Install 安装,等待安装完成即可
    正在安装……

三、配置

3.1 打开 VS2017 ,新建一个项目
新建项目
3.2 选择 Intel® Visual Fortran => Console Application =>Empty Project ,确定目录、解决方案名称、项目名,然后点击“确定”创建一个项目
新建fortran项目
3.3 因为MPI的配置是对每个项目都要做更改,不能全局更改,所以笔者自建了一个配置模板项目,需要的时候就直接复制使用。右键点击该项目,选择“属性”
属性更改
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 点击右下角的“应用“生效
添加包含目录
3.5 在 Linker => General => Additional Library Directories,添加 Intel MPI 的库目录 C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.3.210\windows\mpi\intel64\lib 点击右下角的“应用“生效
添加库目录
3.6 在 Linker => Input => Additional Dependencies,添加附属依赖项 impi.lib 点击右下角的“应用“生效
添加附属依赖项
3.7 在 配置管理器=>平台,选择“x64”平台(因为 Cluster 版只包含64位 MPI 库,如果是在 Intel 官网下载的 MPI 库,则兼有32位 MPI 库
选择平台


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为并行需要的进程数,可更改。点击右下角的“应用“生效
添加命令行参数


3.9 此外,MPI程序运行需要确保 hydra_service 服务已开启,且要进行用户授权
3.9.1 以管理员身份打开cmd,输入 hydra_service -status,回车,查看状态,如果是显示以下信息,说明该服务已启动hydra_service是Intel MPI 程序运行的守护进程
如果不是的话,重新启动或者重新安装它,具体可以直接输入 hydra_service 获取帮助,再相应输入命令行参数
一般初次安装并确认已启动的话,以后都会开机自启,只要不作死修改什么开机启动项啥啥啥的
hydra_service命令的完整描述
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可执行程序

五、调试运行

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

说明与补充

  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
    Configuring a Visual Studio* Project
  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 并行环境时,也是在各个论坛到处搜索相关帖子,参考尝试,个中辛酸,到最终解决的一刻是真的欣慰,也算是接触学习了很多新的知识。但由于当时管理习惯不够好,曾搜到的网址方法无暇再翻寻,所以不再一一贴出,谨在此致以深深的谢意!

  • 30
    点赞
  • 141
    收藏
    觉得还不错? 一键收藏
  • 56
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 56
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值