gpt4 book ai didi

cuda - 使用无与伦比的选项为 GeForce 310(计算能力 1.2)编译 CUDA 程序 "-arch=compute_20 -code=sm_20"

转载 作者:行者123 更新时间:2023-12-04 05:04:30 27 4
gpt4 key购买 nike

我正在使用 nvcc 编译一个 CUDA 程序带选项 -arch=20 -code=20对于具有计算能力 1.2 的 GeForce 310 GPU。该程序似乎正常运行如下。

wangli@wangli-desktop:~/wangliC2050/1D-EncodeV6.1$ make
nvcc -O --ptxas-options=-v 1D-EncodeV6.1.cu -o 1D-EncodeV6.1 -I../../NVIDIA_GPU_Computing_SDK/C/common/inc -I../../NVIDIA_GPU_Computing_SDK/shared/inc -arch=compute_20 -code=sm_20
ptxas info : Compiling entry function '_Z6EncodePhPjS0_S_S_' for 'sm_20'
ptxas info : Function properties for _Z6EncodePhPjS0_S_S_
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 14 registers, 52 bytes cmem[0]
wangli@wangli-desktop:~/wangliC2050/1D-EncodeV6.1$ ./1D-EncodeV6.1
########################### Encoding start (loopCount=10)#######################
#p n size averageTime(s) averageThroughput(MB/s) errorRate(0~1)
#================= Encode on GPU v6.1 ===============
4 4 4 0.000294 0.051837 100.000000
#################### Encoding stop #########################

所以,我想知道:
  • 为什么这个程序可以在带有 nvcc 的 GeForce 310 上运行选项-arch=compute_20 -code=sm_20哪些与卡的计算能力 1.2 不匹配?
  • 如果 -arch 的值会发生什么选项将不同于 -code选项?

  • 谢谢。

    最佳答案

    CUDA 可执行文件通常包含两种类型的程序数据:基本上是 GPU 机器代码的 SASS 代码和 PTX这是一个中间代码(尽管它非常接近机器代码)。只要可执行文件中存在 PTX 代码,那么如果驱动程序确定正确的 SASS 二进制文件对于实际运行代码的 GPU 不可用,它将在应用程序启动时执行“JIT-compile”步骤,以使用应用程序包中的 PTX 代码创建适用于相关设备的必要二进制代码。

    这就是你的情况。

    如果 arch != code,那么您正在创建在体系结构上符合 arch 类型的设备代码,但被编译为使用与代码类型相关联的机器级指令。例如,如果我为 arch = 1.2 和 code = 2.0 编译,我不能使用 double类型(它们将被降级为 float ,因为 double 在 1.2 架构中不受支持)但是生成的 SASS 机器代码将准备在 cc 2.0 设备上执行,并且不需要 JIT 编译步骤那种设备。

    NVCC 手册有更多信息,特别是关于 steering code generation 的部分。 .

    关于cuda - 使用无与伦比的选项为 GeForce 310(计算能力 1.2)编译 CUDA 程序 "-arch=compute_20 -code=sm_20",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15714360/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com