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

news2024/11/20 8:43:06

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 Console1
    implicit none
    print *, '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_mpi
    include 'mpif.h'

    integer process_Rank, size_Of_Cluster, ierror

    call 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_Cluster

    if (process_Rank==0) then
        pause
    end if
  
    call 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.coloradmin.cn/o/686431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot 如何使用 Redis 作为缓存?

SpringBoot 如何使用 Redis 作为缓存? 引言 在今天的互联网应用中,缓存是一个非常重要的概念。缓存可以减轻数据库的负担,提高系统的性能。Redis 是一个非常流行的内存数据库,它可以用作缓存,提供快速的读写速度和高…

【C语言初阶(1)】分支语句

文章目录 前言1. if 语句1.1 if 语法结构1.2 悬空 else1.3 “ ” 号引发的错误1.4 if 语句练习题 2. switch 语句2.1 switch 语法结构2.2 在switch语句中的 break2.3 default 子句2.4 switch 语句练习题 前言 C语言是一门结构化的程序设计语言; 它分为:…

【MySQL】不就是多表查询综合练习

前言 嗨咯大家好!我们学习完毕了多表查询,今天我们就要对我们所学的成果进行测验,本期主要是对多表查询相关内容的练习课程。可以先试着自己敲,遇到不会可以查看查考代码。 目录 前言 目录 练习题 1.查询员工的姓名、年龄、职位…

生物制药厂洁净区环境监测超限的标准是多少?

对于一些生物制药企业来说,质量管理部门应加深对环境监测的质量认识,掌握环境监测的技术手段,定期评估环境监测程序的有效性和完整性,并且对环境监测数据进行趋势分析以寻找可以更好控制的区域,以保证企业的生产符合GM…

网络安全合规-网络安全工程师(一)

网络安全工程师的工作种类很多,当前这个图片说明了具体的工程师的工作种类有哪些,列举了一下。 互联网时代网络及科技迅速发展,随之而来的首要问题就是网络安全,因为已经出现的网络问题带来了巨大的经济损失,甚至各种…

ModaHub魔搭社区:安装、启动 Milvus 服务(CPU版)教程

目录 安装、启动 Milvus 服务 安装前提 操作系统 硬件 软件 确认 Docker 状态 拉取 Milvus 镜像 下载配置文件 启动 Milvus Docker 容器 常见问题 接下来你可以 安装、启动 Milvus 服务 CPU 版 MilvusGPU 版 Milvus 安装前提 操作系统 操作系统 版本 CentOS 7…

node 单线程、多线程和多进程模型

文章目录 node 启动过程单线程多线程node 启动过程相关线程node 多线程特点创建多线程 多进程创建多进程cluster进程守护 node 启动过程 C 层引导:Node.js 启动时,会初始化 C 层的结构和依赖项,如 V8 引擎、Libuv 事件循环、核心模块等。此外…

TCP/IP 协议详解

文章目录 简介应用层传输层网络层网络接口层数据包发送过程TCP 三次握手四次挥手三次握手为什么是三次握手四次挥手为什么是四次挥手 简介 TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。 TCP/IP传输…

【Nginx基础与应用】

文章目录 Nginx基础与应用1 Nginx 概述1.1 介绍1.2 下载与安装1.3 目录结构 2 Nginx 命令3 Nginx 配置文件结构4 Nginx 具体应用4.1 部署静态资源4.2 反向代理4.3 负载均衡(基于反向代理实现) Nginx基础与应用 1 Nginx 概述 1.1 介绍 Nginx是一款轻量级的web服务器/反向代理…

如何在 Linux 中安装、设置和使用 SNMP?

概要 SNMP(Simple Network Management Protocol)是一种用于管理和监控网络设备的协议。它允许网络管理员通过远程方式收集设备的运行状态、性能数据和错误信息,以便进行故障排除和网络优化。在Linux系统中,我们可以安装、设置和使…

vue3-element-admin 项目说明文档

vue3-element-admin官方文档 | 在线预览 项目介绍 vue3-element-admin 是基于 Vue3 Vite4 TypeScript5 Element-Plus Pinia 等最新主流技术栈构建的后台管理前端模板(配套后端源码)。 项目有以下特性: 基于 vue-element-admin 升级到…

共建信创安全生态|安全狗正式加入麒麟软件安全生态联盟

5月25日,麒麟软件安全生态联盟第二次工作会议顺利举办。 作为国内云原生安全领导厂商,安全狗以安全生态联盟成员单位应邀参会并发表重要观点。 厦门服云信息科技有限公司(品牌名:安全狗)成立于2013年,致力于…

无向图G的邻接矩阵法和邻接表法以及遍历输出无向图G包括两种存储的FirstNeighbor和NextNeighbor两种基本操作

一.邻接矩阵法 将下列图G用邻接矩阵法进行存储 圆圈中的字符:是顶点的值 圆圈旁边的数字:是顶点的序号 边线上的值:是两个顶点之间的权值 1.结构体 #define MaxVertexNum 10 typedef char VerTexType;//顶点的数据类型 typedef int Edg…

prometheus + grafana + node_exporter + alertmanager 的安装部署与邮件报警

背景介绍 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 Prometheus的特点 多维度数据模型。 灵活的查询语言。 不依赖分布式存储,单个服务器节点是自主的。 通…

二值化的mask生成yolov5-7.0的实例分割训练标签

背景:要用yolov5-7.0训练分割,这里使用自己的数据,mask是二值化的数据,要先转换成COCO格式,这里用imantics实现。 详见:https://zhuanlan.zhihu.com/p/427096258 截取部分代码如下图,读取image图…

C++之引用、指针引用、常引用

引用 引用的概念引用的定义引用的使用引用的应用引用的本质(就是C内部的一个常指针(type * const 名))指针引用(其类型还是指针type *)常引用(采用const修饰的引用) 引用的概念 1、通常我们说的引用指的是…

和鲸社区数据分析每周挑战【第九十五期:奈飞股价预测分析】

和鲸社区数据分析每周挑战【第九十五期:奈飞股价预测分析】 文章目录 和鲸社区数据分析每周挑战【第九十五期:奈飞股价预测分析】一、前言1、背景描述2、数据说明3、数据集预览 二、数据读取和数据预处理三、历史股价数据可视化四、利用sklearn中LinearR…

Linux 系统下的df、du、fdisk、lsblk指令

文章目录 1 查看磁盘与目录容量(df、du)2 查看磁盘分区(fdisk、lsblk)3 df、du、fdisk、lsblk的区别 1 查看磁盘与目录容量(df、du) df -h //列出文件系统的整体磁盘使用量在显示的结果中要特别留意根目录…

安洵杯2023 部分pwn复现

1. harde_pwn 漏洞点: 覆盖printf的返回地址 from pwn import * from LibcSearcher import LibcSearcher from sys import argv from Crypto.Util.number import bytes_to_long import os def ret2libc(leak, func, path):if path :libc LibcSearcher(func, leak…

二级Python考试环境安装教程

二级Python考试环境 Python3.5.3至Python3.9.10版。为方便考生学习与考点备考,现提供二级Python应用软件的网络下载,广大考生和考点管理员可以下载使用 软件包下载(62.18 MB) https://www.123pan.com/s/y4HrVv-0S0lA.html 安装…