gpt4 book ai didi

c++ - 在 CUDA 中高效地初始化共享内存阵列

转载 作者:行者123 更新时间:2023-11-27 23:04:52 25 4
gpt4 key购买 nike

请注意,此共享内存数组永远不会被写入,只能从中读取。

据我所知,我的共享内存被初始化为:

__shared__ float TMshared[2592]; 
for (int i = 0; i< 2592; i++)
{
TMshared[i] = TM[i];

}
__syncthreads();

(TM 从内核启动传递到所有线程)

您可能已经注意到,这是非常低效的,因为没有进行并行化,并且同一 block 中的线程正在写入同一位置。

如果这个问题真的需要优化,因为所讨论的共享数组相对较小,有人可以推荐更有效的方法/评论吗?

谢谢!

最佳答案

使用所有线程写独立的位置,它可能会更快。

示例假设一维线程 block /网格:

#define SSIZE 2592

__shared__ float TMshared[SSIZE];

int lidx = threadIdx.x;
while (lidx < SSIZE){
TMShared[lidx] = TM[lidx];
lidx += blockDim.x;}

__syncthreads();

关于c++ - 在 CUDA 中高效地初始化共享内存阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24419822/

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