Чудех се как да декларирам непостоянен указател към двумерна споделена памет и дали това ще има същия ефект като при едномерните масиви.
__shared__ float 2d_array[32][32];
// not working: volatile T ** smem = sdata;
Чудех се как да декларирам непостоянен указател към двумерна споделена памет и дали това ще има същия ефект като при едномерните масиви.
__shared__ float 2d_array[32][32];
// not working: volatile T ** smem = sdata;
Обърнете внимание, че вашият "двуизмерен" масив от споделена памет всъщност е само едноизмерен. Така че нещо като това:
__shared__ volatile float array_2d[32][32];
volatile float *smem = &array_2d[0][0];
float val = *(smem + y + 32*x) // address of s2_array[x][y]
е това, което искате. Статичният масив array_2d
се съхранява в основен ред и може да бъде достъпен, както показах.