为每个线程CUDA动态分配内存

问题描述 投票:0回答:1

我需要为每个线程分配一个数组,但数组的长度只有在运行时才知道。一旦计算出数组长度,它就是一个常数值。 cudaMalloc 似乎不在内核内部工作。 无论如何我可以做到吗?像这样的东西-

__constant__ int length;

__global__ void foo() {

int a[length];

}
int main() {

//do some length calculations here.
//copy the calculated value to length.

foo<<<Blocks, Threads>>>();

}
cuda
1个回答
0
投票

最好的办法是动态分配共享内存(并学习如何优化它)。这是一篇很好的文章,重点介绍了如何做到这一点:

https://developer.nvidia.com/blog/using-shared-memory-cuda-cc/

还值得注意:请确保牢记记忆库,请关注发布的博客以获取更多详细信息

© www.soinside.com 2019 - 2024. All rights reserved.