Ben*_*Ben 7 memory cuda constants nvidia dynamic-data
我正在尝试利用常量内存,但我很难搞清楚如何嵌套数组.我所拥有的是一系列数据,这些数据包含内部数据,但每个条目的数据都不同.所以基于以下简化代码我有两个问题.首先,我不知道如何分配我的数据结构成员指向的数据.其次,因为我不能使用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);
}
Run Code Online (Sandbox Code Playgroud)
感谢您提供的任何帮助.:-)
小智 0
为什么不直接使用所谓的“打包”数据表示呢?这种方法允许您将所需的所有数据放入一维字节数组中。例如,如果您需要存储
struct data
{
int nFiles;
int nNames;
int* files;
int* names;
}
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式将此数据存储在数组中:
[struct data (7*4=28 bytes)
[int nFiles=3 (4 bytes)]
[int nNames=2 (4 bytes)]
[file0 (4 bytes)]
[file1 (4 bytes)]
[file2 (4 bytes)]
[name0 (4 bytes)]
[name1 (4 bytes)]
]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19903 次 |
最近记录: |