Windows11安装oneAPI和Visual Studio 2022配置Fortran并行环境

Windows11安装oneAPI和Visual Studio 2022配置Fortran并行环境

  • 安装Visual Studio 2022 Community
  • 安装oneAPI
  • 建立Fortran工程项目测试
    • 建立单核运行的Fortran运行算例
    • 建立并行运行的Fortran运行算例
  • 结语

安装Visual Studio 2022 Community

访问微软Visual Studio官网,下载社区版(Visual Studio Community)即可,不用破解,是免费版的。网址为https://visualstudio.microsoft.com/zh-hans/free-developer-offers/
微软官网
安装过程非常简单。此处不再赘述。如遇到问题,可以留言评论,笔者经常看CSDN的。

安装oneAPI

访问微软oneAPI官网,网址为https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/toolkits.html。注意,如果中文页面下载不了,可以右上角切换语言到USA(English),切换到英文页面,网址为https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html。如果还是下载不了,需要检查一下是否是浏览器把下载页面的弹窗页面给阻拦掉了,解除阻拦页面即可。
微软oneAPI页面
需要先安装oneAPI Base Toolkit,再安装oneAPI HPC Toolkit。
进入oneAPI Base Toolkit下载页面后。选择Windows系统;选择在线/离线安装都可以。在线安装的灵活度更大一些,可以自定义安装哪些组件;建议选择安装最新版本。
提示:不必注册后下载,点击下方不注册直接下载的链接就可以直接下载。
oneAPI base toolkit下载页面
进入oneAPI HPC Toolkit下载页面后,和上述选择一样。
oneAPI HPC Toolkit下载页面
安装过程非常简单,此处不再赘述。如遇到问题,可以留言评论,笔者经常看CSDN的。

建立Fortran工程项目测试

建立单核运行的Fortran运行算例

打开Visual Studio 2022,点击创建新项目
Visual Studio 2022
语言选择Fortran,新建Main Program Code,点击下一步
Fortran
配置新项目,本文工程文档较少,因此点选了将解决方案和项目放在同一目录中
配置新项目
点击下一步后,出现内置的Fortran示例代码。
Fortran内置示例代码
点击启动,就只会看到黑框闪一下,是因为运行完就退出了,建议在end program Console 1上一行加一行pause,这样运行结束后,会出现终端显示Hello World
在这里插入图片描述
随便敲击键盘一个按键即可退出终端。
此时可以验证Visual Studio的Fortran环境配置无误可以正常运行了。

此处将此文件代码粘贴到这里,以便建立空文件的读者直接验证程序。

program Console1implicit noneprint *, 'Hello World'pause
end program Console1

建立并行运行的Fortran运行算例

和上述一样,先新建一个项目。本文新建项目Console2。
点击Visual Studio上方的项目>>属性,打开项目属性页对话框。
属性页
点击左侧Fortran>>General,点击右侧Additional Include Directories右侧的下拉三角,点击Edit...
Fortran General
输入oneAPI安装路径的include文件夹位置,点击OK

 C:\Program Files (x86)\Intel\oneAPI\mpi\2021.9.0\include;C:\Program Files (x86)\Intel\oneAPI\mpi\2021.9.0\include\ilp64

include文件
设置include
再点击左侧Linker>>General,点击右侧Additional Library Directories右侧的下拉三角,点击Edit...
Linker
输入oneAPI安装路径的lib文件夹位置,点击OK,点击

C:\Program Files (x86)\Intel\oneAPI\mpi\2021.9.0\lib;
C:\Program Files (x86)\Intel\oneAPI\mpi\2021.9.0\lib\debug

lib路径
Linker
再点击左侧Linker>>Input,点击右侧Additional Dependencies,输入

impi.lib impicxx.lib

dependencies

在右侧解决方案,项目Console2的Header Files右击,添加>现有项,输入oneAPI安装路径的include文件夹位置C:\Program Files (x86)\Intel\oneAPI\mpi\2021.9.0\include,右下方选择所有文件,选择添加文件mpif.h
mpif.h

mpif.h
再编辑Console2.f90代码,输入以下测试算例。该测试算例为网络上找到的一段代码,因为忘记从哪里粘贴的了,所以未能给出源地址。

    PROGRAM hello_world_mpiinclude 'mpif.h'integer process_Rank, size_Of_Cluster, ierrorcall MPI_INIT(ierror)call MPI_COMM_SIZE(MPI_COMM_WORLD, size_Of_Cluster, ierror)call MPI_COMM_RANK(MPI_COMM_WORLD, process_Rank, ierror)print *, 'Hello World from process: ', process_Rank, 'of ', size_Of_Clusterif (process_Rank==0) thenpauseend ifcall MPI_FINALIZE(ierror)END PROGRAM

点击运行
并行运行
此时已验证成功并行环境可以启动。下一步验证程序可以并行运行。
在程序文件夹路径下,新建文本文件runMpiExec_Debug.txt,输入以下内容

title %cd%
mpiexec -n 8 ./x64/Debug/Console2.exe
pause

保存后,将文件重命名为runMpiExec_Debug.bat,点击运行。

如果报错有类似如下信息:

[unset]: unable to decode hostport from b4272c0e-bc89-43ab-a94f-d3903edf303f
Abort(1090831) on node 0 (rank 0 in comm 0): Fatal error in PMPI_Init: Other MPI error, error stack:
MPIR_Init_thread(176):
MPID_Init(1437)......:
MPIR_pmi_init(118)...: PMI_Init returned -1
[unset]: write_line error; fd=-1 buf=:cmd=abort exitcode=1090831
:
system msg for write_line failure : No error
forrtl: severe (157): Program Exception - access violation
Image              PC                Routine            Line        Source
impi.dll           00007FFCCFF66BC4  Unknown               Unknown  Unknown
impi.dll           00007FFCCFFA045E  Unknown               Unknown  Unknown
impi.dll           00007FFCD078C3FC  Unknown               Unknown  Unknown
Console2.exe       00007FF728E31065  MAIN__                      6  Console2.f90
Console2.exe       00007FF728E3122B  Unknown               Unknown  Unknown
Console2.exe       00007FF728E319B9  Unknown               Unknown  Unknown
Console2.exe       00007FF728E318DE  Unknown               Unknown  Unknown
Console2.exe       00007FF728E3179E  Unknown               Unknown  Unknown
Console2.exe       00007FF728E31A2E  Unknown               Unknown  Unknown
KERNEL32.DLL       00007FFD25ED26AD  Unknown               Unknown  Unknown
ntdll.dll          00007FFD2752A9F8  Unknown               Unknown  Unknown

则表明Windows系统中默认的mpiexec不是oneAPI的mpiexec可执行文件。则需要指定mpiexec路径,需要修改runMpiExec_Debug.bat文件内容为

title %cd%
"C:\Program Files (x86)\Intel\oneAPI\mpi\2021.9.0\bin\mpiexec.exe" -n 8 ./x64/Debug/Console2.exe
pause

再次运行
运行结果
表明程序成功开启并行环境,进行了8进程并行运行。

结语

此为笔者历时很久探索出来的,比较可靠、稳定在Windows11系统下配置oneAPI并行环境,进行Fortran并行程序开发(C++并行程序开发应该也没问题)的步骤。终于腾出时间来写这篇博客,截图耗时耗力,昨晚搞了很久,今早打开草稿箱继续写。收到CSDN消息推送,一位陌生人评论我Visual Studio代码整体增加缩进或减少缩进博客文不对题,虽然我点进去后,发现评论已经删掉了,但是良言一句三冬暖,恶语伤人六月寒,端午节前后正是北京最热的天气,我确实感受到了很大的寒意,直接就不想写这篇博文了。但是思来想去,可能是我那篇博文写的确实粗糙简陋,游客从百度搜过来,没有看清楚我表达了什么,所以随口评论的。恢复心情后,继续一鼓作气把这篇博客写完。希望读者不吝赐赞,遇到问题可以友好评论,我经常看CSDN的,可以一块讨论交流,不要再给博主泼冷水了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1297.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉树题目:单值二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:单值二叉树 出处:965. 单值二叉树 难度 3 级 题目描述 要求 如果二叉树每个结点都具有相同的值&am…

【Solr】中文分词配置

提示:在设置中文分词前需确保已经生成过core,未生成core的可以使用:solr create -c "自定义名称"进行定义。 未分词前的效果预览: 下载分词器: 下载地址: https://mvnrepository.com/artifact/com.github.m…

网络安全能力成熟度模型介绍

一、概述 经过多年网络安全工作,一直缺乏网络安全的整体视角,网络安全的全貌到底是什么,一直挺迷惑的。目前网络安全的分类和厂家非常多,而且每年还会冒出来不少新的产品。但这些产品感觉还是像盲人摸象,只看到网络安…

python spider 爬虫 之 解析 xpath 、jsonpath、BeautifulSoup (三)

BeautifulSoup 简称:bs4 BeautifulSoup跟lxml 一样,是一个html文档的解析器,主要功能也是解析和提取数据 优缺点 缺点:效率没有lxml的效率高 优点:接口接口人性化,使用方便 延用了css选择器 安装Beautifu…

项目——学生信息管理系统2

目录 用户类型,我们创建一个枚举类 在 org.xingyun.model 包下创建 UserType 枚举类 快速生成 get set 方法 修改代码,下拉框的内容,用我们的枚举类型 给登录按钮绑定事件 我们在 org.xingyun.utils 包下创建一个工具类 Eclipse 智能提…

四年之约不负等待,耕升 GeForce RTX 4060 踏雪+DLSS 3实现百帧玩光追

昨日,耕升正式发布了GeForce RTX 40系列的最新成员耕升 GeForce RTX 4060 追风。作为NVIDIA密切合作的核心AIC合作伙伴耕升,也将在今日为玩家带来了更多耕升GeForce RTX 40系列成员——耕升 GeForce RTX 4060 踏雪。作为耕升 GeForce RTX 4060系列中的双…

Axure教程—上传文件

本文介绍用Axure制作文件上传效果 预览 预览地址:https://6q4of2.axshare.com 功能 1、点击”文件上传“按钮,显示上传的文件 2、点击”删除“图片,显示提示”是否要删除“,点击”是“,删除数据,点击”否…

基于Java人力资源管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

树形控件父节点不选中,只能选中子节点,如何实现?

rTree 树形控件一级菜单没有复选框,子菜单有复选框,如何实现?_阿 尭的博客-CSDN博客 接上一篇博客,继续深入功能,如何只选中叶子节点而不选中父节点。 1.在节点被点击时的回调,node-click中,返…

什么是域控服务器?域控服务器功能?部署域控需要考虑因素?域控组策略功能?

一、什么是域控制服务器? 域控制器(Domain Controller)是在Windows Server操作系统上运行的一个服务角色,它用于管理和控制一个或多个计算机的安全策略、用户身份验证和授权等任务。域控制器通常是用于企业网络中的主要身份验证和…

「C/C++」C++类与类的关系(UML类图+代码说明)

✨博客主页:何曾参静谧的博客 📌文章专栏:「C/C」C/C学习 相关术语 🎯依赖关系(Dependency):表示一个类的实现需要另一个类的协助,虚线箭头,箭头指向被依赖的类。 &#…

简要介绍 | 基于Diffusion model的图像生成和重建

注1:本文系“简要介绍”系列之一,仅从概念上对基于Diffusion model的图像生成和重建进行非常简要的介绍,不适合用于深入和详细的了解。 基于Diffusion model的图像生成和重建 What are Stable Diffusion Models and Why are they a Step Forw…