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

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

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

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

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

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

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

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

46得票3回答
CUDA共享内存和全局内存有什么区别?

我对如何在CUDA中使用共享内存和全局内存感到困惑,特别是以下方面: 当我们使用cudaMalloc()时,我们会得到一个指向共享内存还是全局内存的指针? 全局内存位于主机还是设备上? 它们中有大小限制吗? 哪个访问速度更快? 将变量存储在共享内存中是否与通过内核传递其地址相同?即,而不是...

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

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

23得票1回答
CUDA:使用共享内存的瓦片矩阵乘法,以及矩阵大小不是块大小的倍数。

我正在尝试熟悉CUDA编程,并且感到非常有趣。我目前正在查看this处理矩阵乘法的PDF,其中包括使用和不使用共享内存的方法。两个版本的完整代码可以在here找到。这段代码几乎与CUDA矩阵乘法示例中的代码完全相同。虽然非共享内存版本具有在任何矩阵大小下运行的能力,而不受块大小的限制,但共享内...

9得票4回答
基于共享内存的一维stencil CUDA实现中的负数组索引

我目前正在进行CUDA编程,并尝试从我在网上找到的研讨会幻灯片中学习,可以在这里找到。我遇到的问题出现在第48张幻灯片上。以下代码可以在那里找到: __global__ void stencil_1d(int *in, int *out) { __shared__ int temp...

18得票3回答
Cuda 共享内存数组变量

我正在尝试声明一个矩阵乘法的变量,如下所示: __shared__ float As[BLOCK_SIZE][BLOCK_SIZE]; 我正在尝试让用户输入矩阵的大小以进行计算,但这意味着需要更改BLOCK_SIZE。我已经更改了它,但是我遇到了编译器错误: error: consta...

7得票2回答
复制到CUDA共享内存

在CUDA编程中,如果我们想要使用共享内存,我们需要将数据从全局内存传输到共享内存。线程用于传输这些数据。 我在某个地方(在线资源中)读到过,最好不要让块中的所有线程都参与从全局内存复制数据到共享内存的操作。这种想法是有道理的,因为并不是所有的线程都会同时执行。一个warp中的线程是一起执行...