CUDA .ptx文件可移植吗? [英] Are CUDA .ptx files portable?

查看:184
本文介绍了CUDA .ptx文件可移植吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆