optimization - 完全禁用 NVCC 上的优化

标签 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

请注意,生成的代码可能非常慢。 -O0 标志被传递给主机编译器以禁用主机代码优化。 -Xopencc -O0 和 -Xcicc -O0 标志控制编译器前端(产生 PTX 的部分)并在那里关闭优化。 -Xptxas -O0 标志控制编译器后端(将 PTX 转换为机器代码的部分)并关闭该部分的优化。请注意,-Xopencc、-Xcicc 和 -Xptxas 标志是组件级标志,除非在 nvcc 手册中记录,否则应视为不受支持。

关于optimization - 完全禁用 NVCC 上的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821605/

相关文章:

c++ - 有多少种生成临时对象/不必要地调用构造函数的方法?

algorithm - 具有可变数量杆的汉诺塔的通用解决方案?

c++ - 如何在别人提交任务的前提下,在一个集群上使用多个gpu?

python - 如何强制 tensorflow 和 Keras 在 GPU 上运行?

Java抽象方法: is this bad practice?

c - 二进制序列检测器

MATLAB 产生的结果与 CUBLAS + Kernel 不同

c++ - 以有效的方式在一组边中找到现有的圆

c - 我们应该使用 __device__ 和 __host__ 的例子

ffmpeg色彩空间转换速度