What are the default values for arch and code options when using nvcc?

亡梦爱人 提交于 2019-12-21 07:42:43

问题


When compiling your CUDA code, you have to select for which architecture your code is being generated. nvcc provides two parameters to specify this architecture, basically:

  • arch specifies the virtual arquictecture, which can be compute_10, compute_11, etc.
  • code specifies the real architecture, which can be sm_10, sm_11, etc.

So a command like this:

nvcc x.cu -arch=compute_13 -code=sm_13

Will generate 'cubin' code for devices with 1.3 compute capability. Please correct me if I'm wrong. Which I would like to know is which are the default values for these two parameters? Which is the default architecture that nvcc uses when no value for arch or code is specified?


回答1:


Ok, I've finally managed to discover the default values. My fault for not reading the whole chapter on GPU compilation in the NVCC documentation from the beginning to the very very end. So,

nvcc x.cu

is equivalent for

nvcc x.cu –arch=compute_10 -code=sm_10,compute_10

Those are the default values. The compilation is performed by default to the virtual architecture compute_10, and the a.out that results from the compilation will include the CUBIN code for the sm_10 real architecture, and the PTX assembly code for the compute_10 architecture, which will be recompiled 'just in time' by the CUDA driver if your architecture is greater than sm_10.




回答2:


I believe the default is compute_10, as you cannot use any compute_13 features unless you specify explicitly that that's what you want. (Presumably the NVCC documentation that comes with the CUDA toolkit specifies, but I can't find a link online).



来源:https://stackoverflow.com/questions/4671607/what-are-the-default-values-for-arch-and-code-options-when-using-nvcc

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!