使用特定于机器的`.file`路径,CUDA `.ptx`文件是否可移植?

4
我正在学习cudaDecodeD3D9示例,以了解CUDA的工作原理。在编译时,它会从.cu文件生成.ptx文件。据我所知,.ptx文件是一种中间表示形式,将即时编译为任何特定GPU。该示例使用cudaModuleMgr类通过cuModuleLoadDataEx加载此文件。
.ptx文件是文本格式的,我可以看到在其顶部有一堆硬编码的路径,包括我的用户文件夹,例如:
    .file   1   "C:/Users/******/AppData/Local/Temp/tmpxft_00002abc_00000000-7_NV12ToARGB_drvapi.cudafe2.gpu"
    .file   2   "c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h"
    .file   3   "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\crt/device_runtime.h"
    .file   4   "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\host_defines.h"
    .file   5   "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\builtin_types.h"
    .file   6   "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\device_types.h"
    .file   7   "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\host_defines.h"
    .file   8   "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\driver_types.h"
    .file   9   "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\surface_types.h"
    .file   10  "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\texture_types.h"
    .file   11  "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\vector_types.h"
    .file   12  "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\builtin_types.h"
    .file   13  "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\device_launch_parameters.h"
    .file   14  "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\crt\storage_class.h"
    .file   15  "c:\users\******\desktop\cudadecodesample\3_imaging\cudadecoded3d9\cudaProcessFrame.h"
    .file   16  "c:\program files (x86)\nvidia gpu computing toolkit\cuda\v5.0\include\math_functions.h"
    .file   17  "C:/Users/******/Desktop/CudaDecodeSample/3_Imaging/cudaDecodeD3D9/NV12ToARGB_drvapi.cu"
    .file   18  "C:/Program Files (x86)/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include\common_functions.h"

我的问题是:由于这个文件是在编译时创建的,那么它是否只能在我的机器上运行,因为其中包含了所有这些硬编码的路径?我应该怎么做才能确保程序在任何计算机上运行,即使CUDA SDK没有安装?

1个回答

5

.file 指令只用于调试,不会影响代码在正常情况下的编译。因此,我非常确定您可以删除或完全忽略它们,代码将是可移植的,至少在编译器选项所规定的体系结构和功能限制内(因此目标代码版本、体系结构和编译大小)。


2
PTX文件是具有可移植性的,前提条件是平台位数和主机ABI保持不变。64位PTX模块无法为32位上下文进行JIT编译。在一个sizeof(long) == 8的平台生成的PTX模块,在一个sizeof(long) == 4的平台上可能会导致运行时故障(例如,从Linux到Windows)。 - Greg Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接