【问题标题】:cuda kernel parametercuda内核参数
【发布时间】:2011-07-02 04:54:58
【问题描述】:

说我有一个 cuda 内核

__global__ foo (int a, int b)
{
    ... ...
}

a 和 b 的存储位置。这会占用每个线程的寄存器空间吗?

【问题讨论】:

    标签: cuda


    【解决方案1】:

    不,这不会为每个线程占用寄存器空间,而是将ab 分配在一个常量空间(只读空间)中,所有线程都可以从中读取。

    注意,这个空间是由常量寄存器缓存的,由所有线程共享:

    只读常量缓存是 由所有标量处理器内核共享 并加快从常数读取 内存空间,这是一个只读的 设备内存区域 [PTX ISA 版本 2.1 第 3 章]。

    【讨论】:

    • 我猜至少当你修改代码中的参数时,它们会被复制到寄存器中。此外,寄存器可能仍然比常量内存快,所以无论如何都可能发生复制。应该有人检查生成的程序集。
    猜你喜欢
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2015-11-22
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    相关资源
    最近更新 更多