gpt4 book ai didi

opencl - 私有(private)内存比本地内存慢吗?

转载 作者:行者123 更新时间:2023-12-03 23:42:04 26 4
gpt4 key购买 nike

我正在研究一个每个线程有很多全局内存访问的内核,所以我将它们复制到本地内存,速度提高了 40%。

我想要更快的速度,所以从本地复制到私有(private),这降低了性能

那么我认为我们不能使用太多可能会降低性能的私有(private)内存是否正确?

最佳答案

阿什温的回答是正确的,但有点误导。

OpenCL 将变量的地址空间从它们的物理存储中抽象出来,两者之间不一定存在 1:1 的映射关系。

考虑在 __private 地址空间中声明的 OpenCL 变量,默认情况下,函数内部包含自动非指针变量。 NVidia GPU 实现会尽可能将这些物理分配到寄存器中,仅当寄存器容量不足时才会溢出到物理片外内存。这种特殊的片外内存称为“CUDA 本地”内存,具有与为 __global 变量分配的内存相似的性能特征,这解释了由于寄存器溢出导致的性能损失。在这个实现中没有像“私有(private)内存”这样的物理东西,只有一个“私有(private)地址空间”,它可以在芯片上或芯片外分配。

性能损失不是使用私有(private)地址空间(或“私有(private)内存”)的直接后果,私有(private)地址空间通常分配在高性能内存中。这是因为,在这种实现下,变量太大而无法分配到高性能寄存器上,因此被“溢出”到片外内存。

关于opencl - 私有(private)内存比本地内存慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9885880/

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