gcc允许-fsingle-precision-constant省去手动将f添加到每个文字常量的麻烦。在nvcc中有没有方便的等价物?
答案 0 :(得分:3)
我认为对于较新的架构(或者至少不使用编译器驱动程序或设备C编译器),答案是否定的
旧的基于Open64的编译器支持大量的命令行选项(尽管很多都没有做任何事情)。可能通过-Xcompiler=-fshort-double
强制所有双精度计算成单精度。编译为缺少原生双精度支持的sm_10,sm_11和sm_12目标时,编译器用于自动执行双精度浮点运算。旧的编译器仍然用于计算1.x目标,所以这仍然是可能的。
新的cicc LVVM前端(用于设备> 1.x计算能力)支持更短,更短的参数列表,并且没有记录AFAIK。我自己的讨论显示了以下用于控制代码生成和输出的选项:
-generate-line-info
-device-c
-kernel-params-are-restrict
-restrict
-disable-inlining
-Wno-memory-space
-disable-llc-opts
-show-src
-g
-O3
-O0
-fmad=0
-fmad=1
-prec-div=0
-prec-div=1
-prec-sqrt=0
-prec-sqrt=1
-ftz=0
-ftz=1
-m64
-m32
所以我觉得你运气不好。但是,如果确实想要这样做,那么自己可能会编写LLVM传递的范围,它会将双精度常量转换为cicc发出的IR中的浮点数。 This question看起来像某人或多或少地询问同一件事,并且可能会给你一个开始的地方。