问题标签 [pgi-visual-fortran]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fortran - 将数组声明为序列的编译时警告
MPI
通过引用数组的第一个值将数组传递给调用时,我遇到了编译时警告。考虑以下示例代码,这是我能得到的最精简的代码:
请注意,我MPI_REDUCE
只传递了 的第一个元素,input
但output
使用了 的计数N
,即(在本例中)数组的完整大小。值得注意的是,像这样引用数组部分可能不是最佳实践,但无论如何我都在这样做。
我得到以下编译器警告和运行时输出:
我收到 PGI 14.3/OpenMPI 1.8.0 或 PGI 15.5/OpenMPI 1.8.6 的警告。我没有收到 PGI 12.9/OpenMPI 1.6.2、PGI 14.3/OpenMPI 1.6.5 或 Intel 14.0/OpenMPI 1.8.0 的警告。
据我了解,这sequence
是一个仅影响派生数据类型的关键字,input
这里output
是纯整数。此外,这些是一维数组 - 它们是否必须是连续的?
我的问题是:这里发生了什么?我可以(并且应该)将整数声明为序列吗?
编辑 1按照 francescalus 的建议,我尝试将虚拟数组定义为contiguous
. 我已经添加contiguous
到input
论点并询问了 main 和 sub 的连续性(这是一个词吗?)input
并在其中output
使用is_contiguous
。我没有重新发布整个代码,而是编辑了上面显示的原始代码。不幸的是,我仍然收到相同的编译器警告。此外,该contiguous
属性似乎没有做任何事情,因为is_contiguous
在子例程中报告了 falseinput
和output
。
我contiguous
是否正确使用了该属性?input
要求和output
成为似乎是合理的contiguous
,但不是sequence
。也许我应该PGI
直接报告这个问题,特别是现在我在一个相当新的版本上遇到了这个问题pgfortran
。
fortran - 我可以在 PGI Visual Fortran 2015 中分析普通/顺序(非并行)fortran .f90 文件吗?我只有 f90 文件,没有可执行文件
如何在 PGI Visual Fortran 2015 中分析 fortran .f90 文件?我的项目中只有 f90 文件,没有可执行文件。
cuda - Fortran 上的 CuSolver 稀疏接口
我正在尝试编写一个程序来将 cusolverSp 连接到 fortran。尽管我对用 C 编写 cuda 并不陌生,但我不确定如何在 fortran 上使用它。
以下是我的代码:
我构建期间的当前错误是
错误 S0188:参数号 # 到 cusolverspcreate/etc:类型不匹配
我不知道如何解决它。该程序是对工作 cusolverDn 的修改,我确信这意味着我犯了很多错误,因为我可以参考的接口示例并不多。
python - forrtl 严重(193):运行时检查失败。变量 \'TRNSYSFUNCTIONS_mp_GETOUTPUT VALUE$GETOUTPUT VALUE\' 正在使用但未启动
我正在尝试使用 pyFMI 模拟从 TRNSYS 创建的 FMU。当我尝试模拟它时,它会提示以下消息:
“forrtl 严重(193):运行时检查失败。变量 \'TRNSYSFUNCTIONS_mp_GETOUTPUT VALUE$GETOUTPUT VALUE\' 正在使用而未启动”
我的代码如下所示:
任何人都可以预测错误的原因。好像有初始化错误。
windows - 在 Windows 的 PGI 上安装 gfortran
我正在尝试学习 Fortran 进行研究并选择使用 PGI 社区版 2015。我已经安装了必要的 Visual Studios/其他软件包,以便编译器工作。由于 PGI 使用了一些 Cygwin 组件,我如何下载以下软件包以便将其安装到 PGI 编译器中?说:
https://cygwin.com/packages/x86_64/mingw64-i686-gcc-fortran/?C=D;O=A
https://cygwin.com/packages/x86_64/make/
我不知道正确的术语,但我将如何使用这些文件并将它们导入编译器(使用“make”命令)。您是否还可以提供有关如何执行此设置的示例代码,就像我执行 gfortran --version 时一样,没有检测到任何内容。
fortran - 使用 PGI Visual Fortran 编译 MPI 时未解析的外部符号 MPI_INIT
我正在使用 Visual Fortran,我正在尝试使用 MPI 实现一个非常简单的代码。
在我定义了库并完成了许多我在许多博客中发现的步骤后,我遇到了这个错误:
“错误 1 错误 LNK2019:函数 MAIN__ hello_world.obj 中引用的未解析外部符号 MPI_INIT”
这是什么原因以及如何克服它?
fortran - 空数组的边界检查——各种编译器的行为
更新20210914:Absoft 支持确认下面描述的af95
/的行为af90
是无意的,确实是一个错误。Absoft 开发人员将努力解决它。其他编译器在这方面表现正确。感谢@Vladimir F 的回答、评论和建议。
我的印象是,对于大小为 0 的数组,Fortran 很酷。但是,在 Absoft Pro 21.0 中,我遇到了一个涉及此类数组的(奇怪的)错误。相反,gfortran
、ifort
、nagfor
、pgfortran
、sunf95
和g95
都对同一段代码感到满意。
下面是一个最小的工作示例。
将这段代码命名为testempty.f90
. 然后运行
这就是我的机器上发生的事情(Ubuntu 20.04,linux 5.4.0-77-generic,x86_64):
所以af95
很恼火call bar(b)
。,af90
结果是一样的。
gfortran
我使用, ifort
, nagfor
, pgfortran
,sunf95
和测试了相同的代码g95
。尽管我明确实施了边界检查,但他们所有人都对代码感到非常满意。下面是Makefile
用于测试的。
问题:
af95
/的行为是否af90
符合标准?- 我的代码是否包含任何违反 Fortran 标准的内容?
- 一般来说,在 Fortran 代码中涉及空数组是否被认为是危险的?有时它们是不可避免的,因为数据大小在运行前通常是不可确定的。
“标准”是指 2003 年、2008 年和 2018 年。
非常感谢您的任何评论或批评。
(同样的问题也出现在Fortran Discourse上,我希望它不会违反这里的规则。)