Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 赢+;CUDA 6.5.19+;compute_52--ptxas options=-v不显示输出_Visual Studio 2012_Cuda - Fatal编程技术网

Visual studio 2012 赢+;CUDA 6.5.19+;compute_52--ptxas options=-v不显示输出

Visual studio 2012 赢+;CUDA 6.5.19+;compute_52--ptxas options=-v不显示输出,visual-studio-2012,cuda,Visual Studio 2012,Cuda,我正在试图编译一些源代码到Win机器上的最后一个Titan X设备。不幸的是,要在Win7上编译它们,唯一的资源是CUDA 6.5.19。我还试图通过典型的标志--ptxas options=-v来获取关于PTX输出的附加信息。尽管如此,当我使用以下指令时 "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin\nvcc.exe" -gencode=arch=compute_50,code=\"compute_52,compute

我正在试图编译一些源代码到Win机器上的最后一个Titan X设备。不幸的是,要在Win7上编译它们,唯一的资源是CUDA 6.5.19。我还试图通过典型的标志--ptxas options=-v来获取关于PTX输出的附加信息。尽管如此,当我使用以下指令时

"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\u xx、sm\u xx已被compute\u 52、compute\u 52取代

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

输出与预期一致

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]
此功能是否存在任何已知问题?获取所需信息有什么想法吗?

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

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

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

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


这就是这里发生的事情,也是为什么看不到ptxas开关的预期输出。解决方案是向
nvcc
compile命令添加一个物理GPU目标(
sm_52

@robert,它有一个更新()允许用compute_52编译。无论如何,我正在安装7.0,我会与您联系!谢谢。你的VS设置有问题。此代码生成开关:
-gencode=arch=compute\u 50,code=\“compute\u 52,compute\u 52\”
实际上并不指定任何GPU机器代码的生成,因为只指定了虚拟体系结构(
compute\u xx
)。创建的可执行文件(使用适当的工具包)中只嵌入了PTX,编译过程中永远不会调用
ptxas
工具(将PTX转换为GPU机器代码,即SASS)。因此,
--ptxas options=-v
开关将无效。所以你还需要修复你的VS设置。对不起,我的版本号全搞错了。您是对的,6.5.19应该支持cc5.2。问题不在于工具包版本(您需要6.5.19更新),而在于架构目标的规范。您需要一个体系结构目标
sm_52
来指定cc5.2 SASS代码的生成(这将导致调用
ptxas
)。您是对的!使用两个compute_52标志进行编译并不是很好。我已经升级到7.0(我认为Win7不支持它,但它是支持的),并且使用compute_52编译,sm_52已经生成了所需的信息。非常感谢@RobertCrovella和Alacasta,你可以添加这些评论作为回答:)
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]