Jestem świadomy alokacji dynamicznej, gdy używane są tablice 1D, ale jak można to zrobić, gdy używane są tablice 2D?Alokacja dynamiczna z podziałem pamięci GPU 2D
myKernel<<<blocks, threads,sizeofSharedMemoryinBytes>>>();
....
__global__ void myKernerl(){
__shared__ float sData[][];
.....
}
że chcę przeznaczyć 2D wspólną tablicę pamięci:
__shared__ float sData[32][32];
Jak można to zrobić dynamicznie? będzie:
myKernel<<< blocks, threads, sizeof(float)*32*32 >>>();
Twój statycznie zadeklarowane „2D wspólną tablicę pamięci” nie jest dwuwymiarowy, to tylko pamięć liniowa i kompilator generuje row-major dostęp celu niego. Opierając się na nieskończonej liczbie pytań dotyczących tablic wielowymiarowych, być może nadszedł czas, aby usiąść z jakimś materiałem referencyjnym i dowiedzieć się, jak działają macierze w C++ .. – talonmies