【问题标题】:Registers and Private Buffer寄存器和私有缓冲区
【发布时间】:2012-03-29 08:47:07
【问题描述】:

openCL中的寄存器和私有内存有什么区别。

【问题讨论】:

    标签: opencl


    【解决方案1】:

    在物理上,寄存器在芯片上,因此靠近内核。私有内存是从 DRAM 中分配的,它离核心很远。无论远近,我们在这里指的是延迟。从寄存器读取可能需要 1-10 个时钟周期,而从 DRAM 读取可能需要 200-400 个时钟周期。

    此外,作为程序员,您无法真正寻址特定的寄存器(除非您进行汇编编程)。将使用哪些寄存器来执行内核由编译器或处理器在运行时决定。但是,您可以根据需要处理私有内存的特定位置。

    【讨论】:

    • 非常感谢重播。我们如何访问这些内存,好的,我们通过 __private 访问私有,但是寄存器呢。
    • Megharaj:答案可以在我的回复中找到:您无法从 OpenCL 访问寄存器。用于内核的寄存器由编译器或硬件在运行时决定(就像任何其他语言一样)。
    • 我认为这可能是我在一个问题中遇到问题的原因http://stackoverflow.com/questions/9885880/effect-of-private-memory-in-opencl。
    • 在网上的一些文章中,我已经看到,在 OpenCL 内核中,如果我们默认使用没有 __private 的变量,它们将是私有内存,但是当它超过可用的寄存器时,它就像编译器对某些变量使用寄存器一样它会使用私有内存吗?
    • 梅加拉吉:是的。当发生寄存器溢出时,可能会使用私有内存来处理。
    猜你喜欢
    • 2013-12-08
    • 1970-01-01
    • 2018-06-04
    • 2016-08-02
    • 2017-03-25
    • 1970-01-01
    • 2016-06-15
    • 2011-03-12
    • 2012-01-28
    相关资源
    最近更新 更多