gpt4 book ai didi

c++ - 对相邻的数组元素使用共享内存?

转载 作者:行者123 更新时间:2023-11-30 01:08:48 25 4
gpt4 key购买 nike

我想用 CUDA 处理图像。每个像素的新值是根据一行中的两个相邻像素计算的。为像素值使用 __shared__ 内存是否有意义,因为每个值只会使用两次?瓷砖不是也是错误的方法吗,因为它不适合问题结构?我的方法是在每个像素上运行一个线程,并每次为每个线程加载相邻像素值。

最佳答案

所有当前支持的 CUDA 架构都有缓存。从计算能力 3.5 开始,这些对于只读数据特别有效(因为读写数据仅缓存在 L2 中,L1 缓存仅限于只读数据)。如果将指向输入数据的指针标记为 const __restrict__,编译器很可能会加载它 via the L1 texture cache .您也可以通过显式使用 __ldg() builtin 来强制执行此操作.

虽然可以通过共享内存显式管理相邻像素数据的重用,但您可能会发现这与仅依赖缓存相比没有任何好处。

当然,无论您是否使用共享内存,您都希望在 x 方向上最大化 block 大小并使用 1 的 blockSize.y 以获得最佳访问位置。

关于c++ - 对相邻的数组元素使用共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41427873/

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