首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当gfortran或ifort隐式地将一个实(4)提升到一个实(8)时,我如何使它告诉我?

当gfortran或ifort隐式地将一个实(4)提升到一个实(8)时,我如何使它告诉我?
EN

Stack Overflow用户
提问于 2015-08-17 15:35:08
回答 1查看 470关注 0票数 2

我的任务是改变高性能HPC应用程序的部分精度,记住它严重依赖于自动矢量化。因此,编译器可以在任何类型的浮点转换发生转换时通知我(因为这可能会对性能产生严重影响)。

-Wconversion标志听起来应该适合我的需要:

-Wconversion 警告不同类型之间的隐式转换。

https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gfortran/Warning-Options.html

然而,在实践中,gfortran5.2.0似乎只报告浮点降级,例如REAL(8)REAL(4)

GCC有-Wdouble-promotion旗子--这正是我所需要的,但对gfortran来说却不是可用的。(https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html)

我正在用gfortran进行开发,但我可以使用ifort。但是,我找不到-warn (https://software.intel.com/en-us/node/525184)的任何类似的参数。

当隐式地提升一个真实值时,我如何让这些编译器发出警告呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-17 15:56:47

您指的是使用gfortran 5.2.0,所以让我们看一下该版本的文档,而不是4.1.0。这里有您所考虑的两面相关旗帜

代码语言:javascript
复制
-Wconversion  
    Warn about implicit conversions that are likely to change the
    value of the expression after conversion. Implied by -Wall.  
 -Wconversion-extra  
    Warn about implicit conversions between different types and
    kinds. This option does not imply -Wconversion.

如果我在下面的程序中使用后一个标志

代码语言:javascript
复制
  use, intrinsic :: iso_fortran_env, only : real32, real64
  real(real64) x
  x = 1._real32
end

我得到了(尽管使用gfortran 4.8.1)在问题标题中请求的警告消息。

代码语言:javascript
复制
Warning: Conversion from REAL(4) to REAL(8) at (1)

然而,只有-Wconversion,我什么也得不到。但是,如果我稍微更改程序,使可表示值的更改开始生效,则会得到(不同的)警告。

另一方面,ifort (高达19.0.5)似乎没有类似的警告。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32054301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档