gpt4 book ai didi

在 CUDA 上使用 __constant__ 内存的正确方法?

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:47 24 4
gpt4 key购买 nike

我有一个数组,我想在 CUDA 设备上的 __constant__ 内存中初始化。直到运行时我才知道它的大小或值。

我知道我可以使用 __constant__ float Points[**N**][2] 或类似的东西,但我如何使它动态化?也许以 __constant__ float* Points 的形式?

这可能吗?可能更重要的是,这是个好主意吗?如果有比这样做更好的替代方法,我很乐意听取他们的意见。

最佳答案

正如在 Dynamic Allocation of Constant memory in CUDA 中讨论的那样和 Constant memory allocation and initialization , 你不能。如 Constant memory allocation and initialization 中所述,

Constants are embedded into executable at compile time (that's why you have to copy bytes to addresses specified by symbols to set constant values at run-time ). So, you wouldn't be able to allocate constant arrays of different sizes for different invokations of the same compiled kernel.

Constant memory allocation and initialization中的推荐是因为

Texture sizes can be set dynamically and they are cached.

如果您使用的是 Kepler,我的建议是使用 const __restrict 修饰数组指针。这样,您将能够动态分配数组,编译器会安排一些事情,以便在运行时通过纹理缓存自动读取数据。

关于在 CUDA 上使用 __constant__ 内存的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17614588/

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