Это общий подход, который используется в CUDA, OpenCL, и я думаю, что поток ATI.
Идея сетки заключается в обеспечении простого, но гибкого отображения между обрабатываемыми данными и потоками, выполняющими обработку данных. В простой версии модели выполнения GPGPU один поток GPU «распределяется» для каждого выходного элемента в 1D, 2D или 3D сетке данных. Для обработки этого выходного элемента поток будет считывать один (или несколько) элементов из соответствующего местоположения или соседних мест в сетке (-ях) входных данных. Путем организации потоков в сетке проще, чтобы потоки определяли, какие элементы входных данных читать и где хранить выходные данные.
Это контрастирует с общей многоядерной моделью потоков ЦП, где один поток распределяется на ядро центрального процессора, и каждый поток обрабатывает множество входных и выходных элементов (например, 1/4 данных в четырехъядерной системе).
Как ничтожно, это не просто облегчает работу с потоками - аппаратное обеспечение требует, чтобы эта организация выполняла отдельные инструкции для нескольких данных (SIMD). – RD1
Аппаратное обеспечение не требует такой вещи. Аппаратное обеспечение * более эффективно *, если специальные подгруппы потоков внутри сетки выполняют одни и те же действия одновременно. Это сложнее, чем я описал здесь, но также отличаюсь от того, что вы и какое-то состояние. – Eric