Комментировать

Если у вас миллион точек, то

Если у вас миллион точек, то все данные в shared не влезут (если данные - одно complex-число, то на миллион точек нужно 8 мегабайт, а даже на 280GTX разделяемой памяти на все мультипроцессоры - меньше мегабайта), а значит на каждом шаге по времени вы вынуждены их сохранять в глобальную память (а на следующем шаге - оттуда читать).

Как следствие, нужно просто организовывать вычисления так (много блоков, мало работы на thread в рамках одной итерации), чтобы латентности чтения-записи в глобальную память прятались бы. Чтобы прятать - блоков должно быть много больше, чем мультипроцессоров.