CUDA .ptx文件可移植吗? [英] Are CUDA .ptx files portable?
问题描述
我正在研究 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,我该怎么做以确保程序可以在任何计算机上运行?
.file指令仅用于调试.在正常情况下,这不会影响代码的编译方式.因此,我敢肯定,您可以剥离或完全忽略它们,并且代码可以移植,至少在编译器选项(即目标代码版本,体系结构和编译大小)所规定的体系结构和功能限制内.
I'm studying the cudaDecodeD3D9 sample to learn how CUDA works, and at compilation it generates a .ptx file from a .cu file. This .ptx file is, as I understand it so far, an intermediate representation that will be compiled just-in-time for any specific GPU. The sample uses the class cudaModuleMgr to load this file via cuModuleLoadDataEx.
The .ptx file is in text format, and I can see that at the top of it is a bunch of hardcoded paths on my machine, including my user folder, i.e.:
.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"
My question is then: since this file is created at compile-time, will it only work on my machine because of all these hardcoded paths? What should I do to ensure the program will run on any machine, even if the CUDA SDK isn't installed?
The .file directive is only for debugging. It doesn't effect how the code will compile under normal circumstances. So I am pretty certain that you can strip or just completely ignore them and the code will portable, at least within architecture and feature limitations dictated by your compiler options (so target code version, architecture, and compile size).
这篇关于CUDA .ptx文件可移植吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!