Cai*_*ian 3 optimization cuda gpu nvcc
我正在尝试测量GPU上的峰值单精度触发器,因为我正在修改PTX文件以在寄存器上执行连续的MAD指令.不幸的是,编译器正在删除所有代码,因为它实际上没有任何用处,因为我不执行任何数据的加载/存储.是否有编译器标志或编译指示添加到代码中,因此编译器不会触及它?
谢谢.
要使用nvcc完全禁用优化,可以使用以下命令:
nvcc -O0 -Xopencc -O0 -Xptxas -O0 // sm_1x targets using Open64 frontend
nvcc -O0 -Xcicc -O0 -Xptxas -O0 // sm_2x and sm_3x targets using NVVM frontend
Run Code Online (Sandbox Code Playgroud)
请注意,生成的代码可能非常慢.-O0标志传递给主机编译器以禁用主机代码优化.-Xopencc -O0和-Xcicc -O0标志控制编译器前端(生成PTX的部分)并关闭那里的优化.-Xptxas -O0标志控制编译器后端(将PTX转换为机器代码的部分)并关闭该部分中的优化.请注意,-Xopencc,-Xcicc和-Xptxas标志是组件级标志,除非在nvcc手册中有说明,否则应视为不受支持.
我认为没有任何方法可以在编译器中关闭此类优化。您可以通过添加代码来存储值并将该代码包装在始终为 false 的条件语句中来解决此问题。要使编译器无法确定始终为 false 的条件,请至少使用一个变量(而不仅仅是常量)。
| 归档时间: |
|
| 查看次数: |
4256 次 |
| 最近记录: |