gpt4 book ai didi

CUDA 共享内存 - 从内核减少总和

转载 作者:行者123 更新时间:2023-12-04 04:41:14 24 4
gpt4 key购买 nike

我正在处理图像立方体 (450x450x1500) 的大型数据集。我有一个处理单个数据元素的内核。每个数据元素产生 6 个中间结果(浮点数)。我的块由 1024 个线程组成。 6 个中间结果由每个线程(6 个浮点数组)存储在共享内存中。但是,现在我需要将每个中间结果相加以产生一个总和(6 个总和值)。我没有足够的全局内存来将这 6 个浮点数组保存到全局内存,然后从主机代码中的推力或任何其他库中运行减少。

是否有任何可以从共享内存中数组的内核函数内部调用的归约例程?

解决这个问题的最佳方法是什么?我是 CUDA 编程的新手,欢迎任何建议。

最佳答案

这似乎不太可能:

I do not have enough global memory to save these 6 float arrays to global memory and then run a reduction from thrust or any other library from the host code.



我无法想象您有足够的空间将数据存储在共享内存中而不是全局内存中。

不管怎样, CUB提供可从线程块内调用的归约例程,并可对存储在共享内存中的数据进行操作。

或者您可以编写自己的求和代码。做起来并不难,SO上有很多问题,比如 this one .

或者您可以调整 cuda sample code .

关于CUDA 共享内存 - 从内核减少总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18860334/

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