【问题标题】:Why can you set the stack size on CUDA GPU devices with compute capability 2.0+ only?为什么只能在计算能力 2.0+ 的 CUDA GPU 设备上设置堆栈大小?
【发布时间】:2013-08-30 21:00:14
【问题描述】:

我想我有几个与调用堆栈相关的问题,但我的主要问题是,

  • “为什么只能在计算能力 2.0+ 的设备上设置堆栈大小?”

  • 另外,为什么我只能使用 nvidia Nsight 查看计算能力为 2.0 及以上的设备的调用堆栈? 2.0+ 的设备有什么特别之处可以做到这一点,而 1.x 的设备则不行?

我知道这是一个非常广泛的问题,但是对于上述问题的答案,甚至是关于 CUDA 设备上的堆栈调用的一般信息,我们将不胜感激。

【问题讨论】:

    标签: cuda


    【解决方案1】:

    较旧的 1.x 设备无法实现堆栈,因此允许它是没有意义的。 2.0+ 设备能够实现堆栈的至少一个原因是因为它们具有将通用指针作为操作数的指令。这意味着编译器不需要在每个指针流经程序时跟踪它的类型(共享的、本地的或全局的)——硬件可以找出它。这使得实现单独编译(使用堆栈和 ABI)成为可能,因为编译器不需要查看整个程序来跟踪每个指针的类型。

    【讨论】:

    • 有见地!为什么你希望能够改变堆栈的大小?是不是让你可以在栈上分配更多的局部变量和函数调用?这个空间是从哪里得到的?
    • 栈的大小控制着函数调用和递归的深度。堆栈越大,递归越深。
    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2023-02-24
    • 1970-01-01
    相关资源
    最近更新 更多