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使用
    1. VS只是集成开发环境,提供编辑器。实际编译和调试是调用IVF,链接是调用微软的link
    2. 新建项目

  1. Console 编译出命令行窗口
    1. 解决方案管理器solution explorer

Source Files: 放源文件(.c、.cpp)程序的实现代码全放在这里;

Header Files: 放头文件(.h)声明放在这里;

Resource Files: 资源文件夹(.rc),里面可以放你程序里需要的资源,包括图标,对话框,图片,菜单等等,主要用来做界面的。如:*.ico, *.bmp, …

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

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

  1. 调试后会出现Debug文件夹,发布为release文件夹,内含编译文件

.exe 可执行文件

.pdb 调试文件

  1. 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

  • 工程属性:项目-属性

根据需要进行修改,只对当前工程有效

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

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

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

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

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

  1. 局部变量窗口(调试-窗口-局部变量)

对变量数值进行手动更改,更改后的变量会标红

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

  1. 监视窗口:查看指定变量,如a(3:5)。

查看module内的变量时,不能直接输入变量名,模组名::变量名

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

  1. 即时窗口:可以输入直接输入命令,查看变量,建立日志等。
    • 建立日志:把当前变量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进当前项目。


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部