我可以在编译时确定是否设置了--use_fast_math吗?

问题描述 投票:0回答:2

我正在编写一些CUDA代码,并且我希望它根据是否设置了--use_fast_math而表现不同。而且-我想在编译时而不是在运行时做出决定。

似乎在设置--use_fast_math时,NVCC确实不是添加或更改预处理器定义。我通过比较以下内容的输出进行了检查:

nvcc -Xcompiler -dM -E -x cu -

带有]的输出>

nvcc -Xcompiler -dM -E --use_fast_math -x cu -

它们完全相同;因此该途径似乎被封锁。现在,如果编译用户将使用--use_fast_math -DUSING_FAST_MATH调用NVCC,那么我也可以检测到;但是假设它是库代码,我们不能对用户施加这些限制。

是否有其他方式让代码进行编译才能注意到--use_fast_math已打开?

注:“取空”可能意味着使用预处理器#if#ifdef指令,使用SFINAE,使用编译器内置的值或constexpr函数-编译时可用的任何形式。

我正在编写一些CUDA代码,并且我希望它根据是否设置了--use_fast_math而表现不同。而且-我想在编译时而不是在运行时做出决定。似乎...

cuda nvcc fast-math compiler-definitions
2个回答
0
投票

答案几乎可以肯定是。快速数学函数是硬件指令,它们由CUDA设备代码编译器中的代码生成代替。一个例子:


0
投票

这里是丑陋的丑角,而不是答案:

© www.soinside.com 2019 - 2024. All rights reserved.