Мне сказали, что в моем курсе CUDA следующий доступ (глобальная память) коагулируется, если элементы моего массива "a" имеют размер 4,8 или 16 байтов.
int i = blockIdx.x*blockDim.x + threadIdx.x;
a[i];
2 условия для объединения: Потоки основы должны иметь доступ к фрагменту 32, 64 или 128 байтов. Первый поток деформации должен получить доступ к адресу, кратному 32, 64 или 128
Но в этом примере (первое условие) ничто не гарантирует, что деформация получит доступ к фрагменту из 32 байтов.
Если я предполагаю, что элементы a являются числами с плавающей запятой (4 байта), и если я определю blockDim.x как 5, то каждая деформация получит доступ к фрагментам по 20 (4x5) байтов, даже если элементы моего массива "a" имеют размер 4,8 или 16 байт, а не 32. Итак, самое первое утверждение о слиянии ложно?
Спасибо за ваш ответ.