首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WIN+CUDA 6.5.19+compute_52 --ptxas-options=-v未显示输出

WIN+CUDA 6.5.19+compute_52 --ptxas-options=-v未显示输出
EN

Stack Overflow用户
提问于 2015-04-16 06:54:14
回答 1查看 421关注 0票数 1

我正在试图编译一些来源的最后泰坦X设备上的一台Win机器。不幸的是,要在Win 7上编译它们,唯一的资源是CUDA 6.5.19。我还试图通过典型的标志-ptxas-options=-v获取有关PTX输出的其他信息。但是,当我使用以下指令时

代码语言:javascript
复制
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin\nvcc.exe" -gencode=arch=compute_50,code=\"compute_52,compute_52\" --use-local-env --cl-version 2012 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include"     --keep-dir x64\Release -maxrregcount=0 --ptxas-options=-v --machine 64 --compile -cudart static   -DWIN32 -DNDEBUG -D_WINDOWS -D_USRDLL -D_WINDLL -D_UNICODE -DUNICODE -Xcompiler "/EHsc /W3 /nologo /O2 /Zi  /MD  " -o myFile.cu.obj "myFile.cu" 

什么都不显示。注意:--我看到通常的compute_xx,sm_xx已经被compute_52,compute_52取代了。

另一方面,如果我对以前的体系结构(即5.0)使用相同的功能,

代码语言:javascript
复制
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin\nvcc.exe" -gencode=arch=compute_50,code=\"sm_50,compute_50\" --use-local-env --cl-version 2012 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include"     --keep-dir x64\Release -maxrregcount=0 --ptxas-options=-v --machine 64 --compile -cudart static  -DWIN32 -DNDEBUG -D_WINDOWS -D_USRDLL -D_WINDLL -D_UNICODE -DUNICODE -Xcompiler "/EHsc /W3 /nologo /O2 /Zi  /MD  " -o myFile.cu.obj "myFile.cu" 

输出结果和预期的一样。

代码语言:javascript
复制
1>  ptxas info    : Compiling entry function '_Z15g_restart_checkPi' for 'sm_50'
1>  ptxas info    : Function properties for _Z15g_restart_checkPi
1>      0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
1>  ptxas info    : Used 4 registers, 328 bytes cmem[0]

这个功能有什么已知的问题吗?有什么想法来获得想要的信息吗?

EN

回答 1

Stack Overflow用户

发布于 2015-04-16 16:16:05

用于--ptxas-options=-vnvcc开关指示“编译器”生成有关已编译函数的附加输出。

nvcc实际上是一个编译器驱动程序,它做了很多“幕后”的事情。此外,nvcc可以将PTX和/或SASS嵌入到CUDA可执行文件中。PTX是一种中间代码格式,它仍然必须由名为ptxas的子工具编译,以便生成GPU机器可执行代码,称为SASS。

简而言之,当您指定表单compute_XX的虚拟体系结构目标时,这将指示nvcc要生成的PTX类型,并可能嵌入到可执行文件中。当您指定表单sm_XX的物理GPU目标时,您正在标识希望嵌入到可执行文件中的GPU机器代码(SASS)的类型。

将PTX转换为SASS的工具是ptxas。这里所讨论的开关是一个引导ptxas行为的开关。但是,如果您只指定虚拟体系结构目标(这是合法的),那么您的可执行文件将只包含PTX (没有SASS),并且在编译过程中不会调用ptxas

这就是这里正在发生的事情,以及为什么看不到来自ptxas开关的预期输出。解决方案是将一个物理GPU目标(本例中为sm_52)添加到nvcc编译命令中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29667411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档