【发布时间】:2012-12-15 03:30:37
【问题描述】:
我对如何在 CUDA 中使用共享内存和全局内存感到困惑,尤其是在以下方面:
- 当我们使用
cudaMalloc()时,我们得到一个指向共享或全局的指针吗? 记忆力? - 全局内存是驻留在主机还是设备上?
- 有没有 大小限制为任一?
- 哪个访问速度更快?
-
正在存储一个 共享内存中的变量与通过 核心? IE。而不是拥有
__global__ void kernel() { __shared__ int i; foo(i); }为什么不等价
__global__ void kernel(int *i_ptr) { foo(*i_ptr); } int main() { int *i_ptr; cudaMalloc(&i_ptr, sizeof(int)); kernel<<<blocks,threads>>>(i_ptr); }
关于全局内存与共享内存中的特定速度问题存在许多问题,但没有一个包含在实践中何时使用其中任何一个的概述。
非常感谢
【问题讨论】:
-
@NolwennLeGuen 问题是您无法控制 L1-L2 缓存中的数据。在共享内存中,您确切知道那里有什么。
标签: memory cuda global shared-memory