如何使用CUDA_FORCE_PTX_JIT?

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

根据 NVIDIA 编程指南:

应用程序在运行时加载的任何 PTX 代码都会被进一步编译 由设备驱动程序转换为二进制代码。这就是所谓的准时制 汇编。即时编译增加了应用程序加载时间, 但允许应用程序从最新的编译器改进中受益。

...

将 CUDA_FORCE_PTX_JIT 设置为 1 会强制设备驱动程序忽略任何 嵌入应用程序中的二进制代码(请参阅第 3.1.4 节)并 即时编译嵌入式 PTX 代码;如果内核没有 有嵌入的 PTX 代码,将无法加载

我使用以下标志编译了我的简单向量添加:

nvcc -o vectorAdd -gencode arch=compute_20,code=sm_20 vectorAdd.cu

CUDA_FORCE_PTX_JIT
环境变量未设置时,我得到正确的结果。但是当我将
CUDA_FORCE_PTX_JIT
环境变量设置为
1
时,我从
cudaGetErrorString
收到以下错误:

invalid device function 

如何解决此问题并使 CUDA_FORCE_PTX_JIT 正常工作?也许我的编译方式没有嵌入任何PTX代码。

提前致谢。

更多信息:

CUDA驱动程序版本:295.41

CUDA工具包版本:4.0

操作系统:Ubuntu 10.04

硬件:GTX 480,或 Tesla C2050

linux cuda nvcc
1个回答
1
投票

我找到了解决该问题的方法。在编译期间,不得以任何方式指定目标 GPU(删除

-arch
-gencode
标志)。随后,驱动程序在运行时生成目标二进制文件。

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