【发布时间】:2017-12-17 03:17:44
【问题描述】:
我有一个长度为 128 的向量;在整个计算过程中,所有元素都是恒定的。
我喜欢在我的 CUDA 内核中使用这个常量向量。我正在考虑将此向量存储在共享内存中,并在内核中使用它。我想知道如何做到这一点?几行代码就好了。
或者这是最好的方法吗?非常感谢。
我们可以通过全局内存的头顶:
__global__ void fun(float* a, float* coeff)
{
size_t
i = blockIdx.x * blockDim.x + threadIdx.x;
if (i >= 128)
return;
a[i] *= coeff[i];
}
但这可能不是最好的方法。我想像
__shared__ float coeff[128];
但是如何将 CPU 值复制到此共享内存?我是否将这个共享内存传递给我的内核?
【问题讨论】:
-
您从哪里得知存在共享内存?没有任何关于如何使用它的解释吗?你读过 Nvidia 的 CUDA C Programming Guide 吗?
标签: vector cuda shared-memory