嗨,我只是想知道是否有可能在nvidia cuda内核中执行以下操作
__global__ void compute(long *c1, long size, ...)
{
...
long d[1000];
...
}
Run Code Online (Sandbox Code Playgroud)
或以下
__global__ void compute(long *c1, long size, ...)
{
...
long d[size];
...
}
Run Code Online (Sandbox Code Playgroud)
tke*_*win 10
你可以做第一个例子,我没有尝试过第二个例子.
但是,如果您可以提供帮助,您可能需要重新设计程序而不是这样做.您不希望在内核中分配4000字节的内存.这将导致大量使用CUDA本地内存,因为您将无法将所有内容都安装到寄存器中.CUDA本地内存很慢(400个周期的内存延迟).
启动内核时,可以动态分配共享内存.
__global__ void compute(long *c1, long size, ...)
{
...
extern __shared__ float shared[];
...
}
compute <<< dimGrid, dimBlock, sharedMemSize >>>( blah blah );
Run Code Online (Sandbox Code Playgroud)
CUDA编程指南:
数组的大小在发布时确定(参见第4.2.3节).
| 归档时间: |
|
| 查看次数: |
11745 次 |
| 最近记录: |