问题标签 [pgi]

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.

0 投票
3 回答
5647 浏览

c++ - 使用#ifdef 检测编译器

我正在尝试构建一个可以跨多个平台和编译器工作的小代码。我使用断言,其中大部分都可以关闭,但是当使用 PGI 编译时pgicpp使用-mpOpenMP 支持,它会自动使用--no_exceptions选项:在我的代码中的任何地方,带有“throw”语句的地方都会产生致命的编译器错误。(“对异常处理的支持被禁用”)

我可以测试一个defined 宏来隐藏throwPGI 上的语句吗?我通常使用 gcc,其中有GCC_VERSION之类的。我在 PGI 中找不到任何描述这些宏的文档。

0 投票
2 回答
1348 浏览

fortran - 在 Windows PGI Visual Fortran 上链接 netcdf.lib 的问题

我在(Windows 操作系统)中使用 PGI Visual Fortran 构建一个由 fortran(f90)库和可执行文件组成的项目/解决方案。f90 库链接到 netcdf.lib。f90 可以编译和构建,但是当我尝试将其链接到可执行文件时,出现以下错误:

正在编译项目...
链接...
错误 LNK2019:函数 interpnwptools_checkcldliq_ 中引用的未解析的外部符号 nf_ _inq_varid_错误
LNK2001:未解析的外部符号 nf__inq 可变 错误 LNK2019:函数错误 错误中引用的未解析的外部符号 nf_strerror_ LNK2019:未解析的外部符号 nf_get_att_函数 错误 LNK2001中引用的 real_:未解析的外部符号 nf_get_att_real_ 错误 LNK2019:函数 ncdf_module_openfile_ 中引用的未解析的外部符号 nf_create_ 错误 LNK2019:函数 ncdf_module_openfile_ 中引用的 未解析的外部符号 nf_def_dim_ 。 .







.
和一大堆其他 nf_ 未解析的符号。我认为 netcdf 库没有正确链接。任何人都可以帮忙吗?我正在使用的项目需要 netcdf 3.6.0-p1,这是我使用 MS VStudio 2003 自己构建的。我也尝试使用 gfortran 和 eclipse 构建项目,但存在相同的链接问题。我以前从未使用过 netcdf 或 fortran ......有什么建议吗?

0 投票
1 回答
1313 浏览

c++ - C++ 应用程序在实例化 ofstream 对象时崩溃。

在运行 C++ 应用程序时,我遇到了一个非常烦人的问题。我在 Windows Xp 的 Interix 子系统上使用 pgcpp 编译器。我的问题基本上在这里描述:

我在头文件中有一个类定义。该头文件包含在一个源文件中。这个类有两个构造函数,主要用于实现一个记录器。第一个构造函数接受 ostream *out 作为参数,而第二个重载构造函数接受文件名和默认布尔值 false。第二个构造函数的目标是为我们传递的文件名获取一个流,并开始向它记录消息。构造函数中的代码如下:

其中 p_out 和 p_ofstream 的声明如下:

以上三个都是私人会员。MessageLogger 类的实例化如下:

请注意 append_to_file 的默认值为 false。PGDBG也是行为不端。p_ofstream = new std::ofstream (filename);当控件位于并进入随机位置然后应用程序崩溃时,我莫名其妙地能够介入 。

此外,当我尝试在 PGDBG 中查看混合代码或反汇编代码时,调试器会崩溃并显示以下消息:

我无法在示例程序中重现这一点,我做了与上面完全相同的事情,但一切正常。有人可以解释发生了什么,如果有解决办法?

谢谢,阿迪亚。

0 投票
1 回答
286 浏览

optimization - Portland group FORTRAN pgf90 程序在使用 -fast 编译时失败,使用 -fast -Mnounroll 编译成功

这段代码愉快地嗡嗡作响了很长一段时间,直到我们最近发现了一个边缘情况,它静默失败——没有返回错误。失败显然非常微妙。我们可以通过以下方式让代码在边缘情况下平稳运行:

1) 使用任何包含-traceback或调试 (-g-gopt) 的选项集进行编译;

2) 编译-fast -Mnounroll

3) 编译优化<2;

4)在代码中加入WRITE语句来判断失败的位置;

换句话说,大多数对调试故障有用的工具——实际上会导致故障消失。

我正在调查与循环展开或其他优化相关的失败及其解决方案的任何信息。

谢谢大家。

0 投票
1 回答
1067 浏览

visual-studio - PGI 可视化 fortran 中的 ACCESS_VIOLATION

我正在使用 PGI visual fortran 编写一个 fortran 程序。该代码由相当长的两个模块和一个主程序组成。对我来说似乎没有任何问题,程序编译和构建成功,没有警告或错误。但是在运行时或调试模式下会发生错误:

在此错误之后,程序的执行将停止。我尝试了所有我能猜到的方法来克服这个问题。但是,问题仍然存在。变量似乎定义正确。在调试模式下,所有变量似乎都正常。虽然变量 x、y 和 z 将由模块中的函数正确计算,但它们不能在主程序中计算,如下代码所示(通过文件 mainser.f90 中程序 main 的第 14 行的断点获得):

我无法理解错误或访问冲突的来源。这是一个我不熟悉的已知问题吗?或者它是一个错误?我会感谢你的任何帮助。先感谢您。附上fortran语言代码。mainser.f90:

ChainConfModule.f90:

rand.f90:

0 投票
2 回答
166 浏览

fortran - 加速器指令不起作用

这是矩阵乘法的代码

当我执行此操作时,使用加速器指令和 PGI 编译器时的执行时间为 75 毫秒。但是,当我使用“cuda fortran”实现运行相同的矩阵乘法时,执行时间仅为 5 毫秒。所以即使我使用了加速器指令,也有很大的不同。所以我怀疑我的加速器指令是否正常工作。

0 投票
1 回答
1657 浏览

c++ - C/C++ 和 GNU/PGI:对 `__pgio_ini' 的未定义引用

有没有办法将 PGI 编译器二进制文件链接到现有的 GNU 二进制文件?当我尝试链接时,出现以下错误:

细节:

我用 gcc 和 g++ 编译了一些文件。Cmain函数包含在这些文件中。现在我应该在项目中添加一个 OpenACC 函数,该函数必须由 PGI C Compiler ( pgcc) 编译。编译后,出现上述链接错误(两者pgCCg++链接器的错误相同)。

也许我需要将 OpenACC 函数集成到一个虚拟库中并将其包含/链接到项目中。但我不知道该怎么做。

不幸的是,无法使用 PGI 编译器编译整个项目,因为某些功能依赖于 GNU 编译器。

提前致谢。

0 投票
1 回答
639 浏览

fortran - 为什么 PGI 在此模块中不使用公共属性?

在这里使用别人的代码。它用 gfortran 编译得很好。但是,在波特兰集团下,我收到一个错误:

违规行如下所示:

(这里显然有很多 MPI 的东西,但我认为这不是重点。)所以我转到 的源代码ModMpi,即 ModMpi.f90,我看不到对 的引用MPI_WTIME,但我看到:

所以最后,我去找源代码ModMpiInterface,我找到了这条线:

mpi_wtime好的,我可以通过编辑 ModMpi.f90 并声明为公共来从 PGI 获得编译。但是,我仍然想知道:为什么 gfortran 假设(显然)这mpi_wtime是公开的,但 PGI 必须明确告知这一点?为什么 PGI 不假设原始公开声明在整个“使用链”中都成立?

我认为一种行为或另一种行为更接近 Fortran 标准。那会是哪个?

0 投票
1 回答
249 浏览

fortran - POS=... 使用 pgi 编译器时

我正在尝试更新/重新编写一堆代码,这些代码应该能够被所有主要的 fortran 编译器编译。我可以访问pgi 编译器(版本 7.2.5)ifortgfortran一个相对较旧的 (?) 版本。该代码使用 gfortran 和 ifort 编译得很好,但 portland group 的编译器在如下一行中抱怨:

我实际上正在使用mpif90which 是一个包装器pgf90,但这不应该有所作为。(iheader只是一个包含 20 个元素的整数数组)。波特兰组编译器是否支持更现代的版本?

0 投票
1 回答
478 浏览

fortran - Fortran 中的 PGI、OpenMP 和名单

我在尝试使用 OpenMP 和 Portland Group 编译器读取 Fortran 程序中的名单时遇到问题。

我想做的很简单:我read_namelist在一个区域中调用一个子程序SINGLE,在其中初始化我想从名单中读取的参数,然后打开、读取、关闭名单。我在名单中读取的参数是线程私有的,我在读取后将它们传播到其他线程。

虽然它在 GNU 和 Intel 编译器上工作得很好,但在 PGI 上却失败了,我不明白为什么。我没有收到错误,但读取的参数等于默认参数,而不是我从名单中读取的参数。

这是我正在尝试做的一个例子:

该模块params非常简单,仅包含:

使用 pgfortran 编译,这是我得到的输出(有 2 个线程):

如果我用 Intel 或 GNU 编译器编译相同的代码(仍然有 2 个线程):

任何想法或提示将不胜感激!