sách gpt4 ai đã đi

cuda - CUDA 共享内存大小意味着什么

In lại 作者:行者123 更新时间:2023-12-04 22:14:54 33 4
mua khóa gpt4 Nike

我正在尝试自己解决这个问题,但我不能。
所以我想听听你的建议。

我正在编写这样的内核代码。 VGA 是 GTX 580。

xxxx <<< blockNum, threadNum, SharedSize >>> (... threadNum ...)
(note. SharedSize is set 2*threadNum)

__global__ void xxxx(..., int threadNum, ...)
{
extern __shared__ int shared[];
int* sub_arr = &shared[0];
int* sub_numCounting = &shared[threadNum];
...
}

我的程序创建了大约 1085 个块和每个块 1024 个线程。

(我正在尝试处理巨大的数组)

所以每个块的共享内存大小是 8192(1024*2*4)bytes,对吧?

我发现通过使用 cudaDeviceProp,我可以在 GTX 580 上每个块的共享内存中使用最多 49152 字节。

而且我知道 GTX 580 有 16 个处理器,线程块可以在处理器上实现。

但是我的程序出现错误。(8192bytes < 49152bytes)

我在内核中使用“printf”来查看是否运行良好,但有几个块没有运行。 (虽然我创建了 1085 个块,但实际上只有 50~100 个块在运行。)

我想知道在同一处理器上运行的块是否共享相同的共享内存地址。 (如果没有,为共享内存分配其他内存?)

我当然无法理解每个块的共享内存的最大大小是什么意思。

给我建议。

1 Câu trả lời

是的,同一多处理器上的块共享相同数量的共享内存,对于您的 GPU 卡(计算能力 2.0),每个多处理器 48KB。因此,如果在同一个多处理器上有 N 个块,则每个块的共享内存的最大大小为 (48/N) KB。

关于cuda - CUDA 共享内存大小意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11498769/

33 4 0
Bài viết được đề xuất: fortran - 获取正在使用的 MPI Communicator 的数量
Bài viết được đề xuất: gdb - 堆栈从堆栈中间展开
Bài viết được đề xuất: unit-testing - 您如何使用规范编写参数化测试?
Bài viết được đề xuất: sql - 引发异常时在 Oracle 中继续插入
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com