Disclaimer: статья предназначена для тех, кто имеет представление о том, что такое CUDA, но путается при работе с сеткой. Перед тем, как начать писать особо полезные программы на CUDA, нужно разобраться с иерархией нитей, то есть понять, как нити организованы. Нить (thread) в CUDA – это последовательная программа, ответственная за решение части какой-то большой задачи. Нитей запускают всегда очень много и первая сложность, с которой сталкиваются программисты, это то, что нити организованы не линейно, а иерархично. Верхним уровнем иерархии нитей в CUDA является сетка (grid). Сетка может быть одномерной, двумерной или трёхмерной. Сетка состоит из блоков (block), которые тоже могут быть максимум трёхмерные. Конфигурацию сетки и блоков мы задаём при вызове вычислительного ядра (kernel), например: sum<<<1, 32>>(a) # да, Дзен до сих пор не умеет оформлять код запустит 32 потока в 1 (одном) блоке, то есть Чтобы убедиться, что это так, я написал маленькую программку (where.cu, запускать чере