Estoy tratando de aprovechar la memoria constante, pero me está costando trabajo encontrar la forma de anidar las matrices. Lo que tengo es una matriz de datos que tiene recuentos para los datos internos pero que son diferentes para cada entrada. Así que, basado en el siguiente código simplificado, tengo dos problemas. Primero, no sé cómo asignar los datos apuntados por los miembros de mi estructura de datos. En segundo lugar, dado que no puedo usar cudaGetSymbolAddress para la memoria constante, no estoy seguro de si puedo pasar el puntero global (que no se puede hacer con la memoria simple __device__).Asignación dinámica de memoria constante en CUDA
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);
}
Gracias por cualquier ayuda ofrecida. :-)