WIN+FORTRAN:Intel Parallel Studio XE到期以后
感觉命里Linux克我,每次用Linux都各种bug,还好Windows不断努力,兼容越来越好了。
之前的:
IVF: Intel Visual Fortran
编译器、数学函数库、调试器
Intel Parallel Studio XE 集成了Intel Fortran Compiler和Visual Fortran Compiler
Priority Support for Intel® oneAPI Base & HPC Toolkit
VS:Microsoft Visual Studio
IDE,提供链接、编辑、工程管理、可视化调试等外围功能
下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux
——————————————————————————————
但前几天发现XE的码到期了,去官网更新发现XE不做了,集成到了新的Interl oneAPI里,免费下载,下载Base&HPC则覆盖XE所有功能。
于是卸载XE,依次下载安装Base和HPC,本来装的VS2019,安装的时候检测出2019勾选,自动集成,本来觉得啊为什么不做了好麻烦啊,结果真香了。

Intel® oneAPI Base Toolkit
Download the Intel® oneAPI Base Toolkit
Intel® oneAPI HPC
Download the Intel oneAPI HPC Toolkit
——————————————————————————————
把之前入门的时候写的VS Fortran简易教程还有一些快捷键设置也附在这里:
(懒得调格式了 凑合吧
- VS使用
- VS只是集成开发环境,提供编辑器。实际编译和调试是调用IVF,链接是调用微软的link
- 新建项目

- Console 编译出命令行窗口
- 解决方案管理器solution explorer
Source Files: 放源文件(.c、.cpp)程序的实现代码全放在这里;
Header Files: 放头文件(.h)声明放在这里;
Resource Files: 资源文件夹(.rc),里面可以放你程序里需要的资源,包括图标,对话框,图片,菜单等等,主要用来做界面的。如:*.ico, *.bmp, …

- Ctrl+F5 运行,run without debug
- 在输出窗口output中查看结果,双击错误定位到对应行

- Library 库
- QuickWin 可视化
- 文件:.vfproj工程文件

- 调试后会出现Debug文件夹,发布为release文件夹,内含编译文件
.exe 可执行文件
.pdb 调试文件

- Debug&Release

- IVF命令行程序是ifort
- ifort test.f90 -o exe 编译生成exe程序
- 参数

- IDE-build会自动检测源代码的依赖关系,进行编译和链接,相当于

- VS高级操作
- 快捷键设置:添加编译和运行快捷键
![]()


- 关闭错误列表窗口:VS和IVF的匹配不好,可能会不显示错误,可直接查看输出窗口

- 常规设置:工具-选项
- 有时默认出错时自动运行早期版本

- fortran设置



- IVF设置


- 转到定位:在变量上右键,转到定位,可跳转到变量定义处

- 搜索:Ctrl+F

- 多行注释:快捷工具条中

- 自动排版
ctrl+a选中 → ctrl+k → ctrl+f
- 工程属性:项目-属性
根据需要进行修改,只对当前工程有效

- VS对IVF的高级设置
- 编译选项:windows习惯使用/flag表示,Linux习惯用-flag表示

- VS预设了两种编译模式:Debug和Release

根据需要进行修改,可参考视频去哪了呢?_哔哩哔哩_bilibili

- 调试器
- 调试Debug:动态分析
- 点击行号前添加红色断点,一般在主程序声明语句结束后的第一个执行语句添加断点,开始调试F5,来启动调试界面。
- 调试Debug:动态分析

调试到断点前结束,箭头表示即将执行的语句。

- 局部变量窗口(调试-窗口-局部变量)
对变量数值进行手动更改,更改后的变量会标红

- 逐步调试:逐语句会进入函数内部逐语句执行,逐过程把函数调用视为一个语句执行。可向上拖动箭头重新执行语句,变量不会回退到之前的值。

- 监视窗口:查看指定变量,如a(3:5)。
查看module内的变量时,不能直接输入变量名,模组名::变量名

- 调用堆栈:查看函数和模块的调用情况

- 即时窗口:可以输入直接输入命令,查看变量,建立日志等。
- 建立日志:把当前变量a的值存入log.txt中
>log "C:\log.txt"
a
>log off

- 静态库和动态库
静态库lib就是先把部分源代码编译,打包成静态库,直接给工程链接。
动态库dll就是先把部分源代码编译并链接成动态库,以后的工程依赖它运行。
部分动态库需要导入库lib,告诉程序如何使用动态库。

- 静态库lib
- 编译过程:编译源码,得到obj文件打包成lilb
- 使用:编译主程序和其他子程序,链接时带上lib文件
- 静态库中每一个module对应一个同名的mod文件,当use module时,编译器需能够找到对应的mod文件,因此需要把静态库中的mod文件保存,以便使用静态库时加载。但不同编译器产生的mod不同,使用新的编译器时需要重新编译。
- VS操作:新建项目,选择Library-Static Library,添加源码,编译链接生成lib

生成文件:

调用时,可直接拷贝生成文件或在项目属性中添加目录。


- 动态库dll:实质上为没有主程序的可执行文件
- 编译过程:编译源代码,链接obj得到DLL文件。
- 使用:编译主程序,链接时带上导入库lilb;
或动态利用系统函数加载,如windows下LoadLibrary和GetProcAddress。

- VS操作:新建动态链接库
!DEC$ ATTRIBUTES DLLEXPORT:"sub"::sub
在IVF中需要外部导出的函数需要加该注释

生成文件

调用时,需要同时拷贝dll和lib或动态调用。
- 第三方函数库
- 函数库涵盖的内容:

- 函数库的使用


- Lapack函数库:www.netlib.org/lapack/
主要处理线性代数(特征值、奇异值、最小二乘等)
- IMSL
- 安装


添加相应的include和lib路径后,在include文件夹找到.h文件,根据文件名在程序中写入 include "link_f90_static.h"或复制文件中的内容粘贴进程序中。
或使用动态链接库,需要找到imsl_dll.dll的位置,把路径添加到环境变量path中,否则报错。

- 使用
使用时,use 莫个模块,5.0以后统一把函数放入numerical_libraries模块中,但在某些版本中统一 use numerical_libraries可能出错,建议use较小的模块
- MKL:Intel公司出品的数学函数库,具有高度汇编级优化,包含lapack、Blas、FFTW等
- 安装


- 使用

也可添加现有项,添加lib进当前项目。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
