15得票1回答
CUDA中的动态共享内存

有类似于我将要询问的问题,但我觉得它们都没有涉及到我真正寻找的核心。我现在拥有一个需要将两个数组定义到共享内存中的CUDA方法。现在,数组的大小由一个在程序执行开始后读入程序的变量给出。因此,我不能使用该变量来定义数组的大小,因为定义共享数组的大小需要在编译时知道值。我不想像这样做 __sha...

7得票1回答
Numba CUDA运行时的共享内存大小?

在CUDA C++中,可以直接定义一个在运行时指定大小的共享内存。那么我该如何使用Numba/NumbaPro CUDA来实现这个呢? 到目前为止,我的尝试都只导致了错误并显示以下信息: Argument 'shape' must be a constant 编辑:仅澄清一下,我想要的...

43得票5回答
分配共享内存

我正在尝试使用常量参数分配共享内存,但是遇到了错误。我的内核看起来像这样:__global__ void Kernel(const int count) { __shared__ int a[count]; } 我收到了一个错误信息: 错误:表达式必须具有常量值 count...

11得票3回答
OpenCL本地内存是否有限制?

今天我在内核中添加了四个更多的__local变量,以便倾倒中间结果。但是,只将这四个变量添加到内核签名中,并添加相应的内核参数,会使内核的所有输出都变为“0”。没有任何cl函数返回错误代码。 我进一步尝试仅添加两个较小变量中的一个。如果我只添加其中一个,它可以正常工作,但如果我添加两个,它会...

7得票3回答
共享内存随机访问时预期的银行冲突数量

假设在共享内存中有一个32位整数的正确对齐数组A。 如果单个warp尝试随机获取A的元素,那么预期的bank冲突次数是多少? 换句话说: __shared__ int A[N]; //N is some big constant integer ... int v = ...

27得票3回答
CUDA:何时使用共享内存,何时依赖于L1缓存?

在Compute Capability 2.0(Fermi)发布之后,我一直在想是否还有任何用例可以使用共享内存。也就是说,在什么情况下使用共享内存比让L1在后台执行更好? 共享内存只是为了让设计针对CC < 2.0的算法能够高效运行而存在吗? 要通过共享内存进行协作,块中的线程将写...

16得票1回答
CUDA中,本地内存比共享内存慢吗?

我只发现一条注释,说本地内存比寄存器内存慢,每个线程两种类型。 共享内存应该很快,但它比线程的本地内存更快吗? 我想做的是一种中位数滤波器,但使用给定的百分位数而不是中位数。因此,我需要取出列表的块,对它们进行排序,然后选择一个合适的块。但如果我开始对共享内存列表进行排序,事情就会出错。如...

7得票3回答
在CUDA中,用什么指令将数据从全局内存加载到共享内存?

我目前正在学习CUDA,了解到有全局内存和共享内存。 我查阅了CUDA文档,发现GPU可以使用ld.shared/st.shared和ld.global/st.global指令访问共享内存和全局内存。 我想知道的是,从全局内存加载数据到共享内存使用哪个指令? 如果有人能告诉我就太好了。 ...

7得票1回答
CUDA - 确定共享内存中的银行数

共享内存被“分成”了许多个bank。这就导致了整个bank冲突的问题,我们都知道。 问题: 但是你如何确定共享内存中有多少个bank(“条纹”)? (在NVIDIA“devtalk”论坛上搜索,似乎每个块的共享内存被“分成”了16个bank。但是我们怎么知道呢?建议这样做的线程已经有几年了...

18得票3回答
有没有一种方法可以为共享内存数组设置默认值?

考虑下面的代码: __global__ void kernel(int *something) { extern __shared__ int shared_array[]; // Some operations on shared_array here. } ...