我试图利用常量内存,但是我很难弄清楚如何嵌套数组。我有一个数据数组,其中包含内部数据的计数,但每个条目的计数都不同。 基于以下简化代码,我有两个问题。首先,我不知道如何分配由我的数据结构成员指向的数据。其次,由于无法对常量内存使用cudaGetSymbolAddress,我不确定是否可以仅传递全局指针(这在普通__device__内存中是不允许的)。
感谢提供任何帮助。:-)
struct __align(16)__ data{
int nFiles;
int nNames;
int* files;
int* names;
};
__device__ __constant__ data *mydata;
__host__ void initMemory(...)
{
cudaMalloc( (void **) &(mydata), sizeof(data)*dynamicsize );
for(int i=; i lessthan dynamicsize; i++)
{
cudaMemcpyToSymbol(mydata, &(nFiles[i]), sizeof(int), sizeof(data)*i, cudaMemcpyHostToDevice);
//...
//Problem 1: Allocate & Set mydata[i].files
}
}
__global__ void myKernel(data *constDataPtr)
{
//Problem 2: Access constDataPtr[n].files, etc
}
int main()
{
//...
myKernel grid, threads (mydata);
}
感谢提供任何帮助。:-)