Допустим, я начинаю обработку сетки 1024х1024 с рабочих групп 8х8.И у меня 1080 с 20 вычислительными блоками на 128 ядер - всего 2560 ядер.
Это не совсем верный способ визуализации графического процессора.У вас есть 20 вычислительных единиц.Вот и все.«Ядра» на самом деле представляют собой пару (2 x 32) векторных блоков ALU линий, каждый из которых имеет планировщик команд и общий кэш L1.
Теперь ясно, что в среднем каждое физическое ядро будет обрабатыватьв среднем около 400 элементов в сетке.
Это не следует по ряду причин.Распределение работы зависит от кода, который вы пишете, и параметров выполнения, которые вы используете для запуска кода.Не существует внутренней связи между размером входов в ядро и количеством параллельных операций, которые должен выполнять данный SM или «ядро» внутри SM.
Вопрос, какой статистически был бы порядоквыполнение каждого ядра?
Не определено.CUDA не дает никаких гарантий, подразумеваемых или иных, в отношении порядка исполнения.
Будет ли это мажорная строка?Основной столбец ..?
Все еще не определено.
или каждое ядро получит свою собственную "подрайон" для работы?
Itпрограммист должен определить, как схема нумерации логических потоков / блоков, которую демонстрирует модель программирования, будет соответствовать особенностям входных данных или памяти.
Этот вопрос важен для того, чтобы убедиться, чтодоступ к памяти дружествен к кешу.
Графический процессор имеет иерархическую структуру кеша, что означает, что на самом деле это не так важно, как вы представляете.Существуют хорошо документированные рекомендации по программированию для обеспечения максимальной пропускной способности памяти и использования кэша.На них не влияет порядок исполнения, как подразумевает ваш вопрос.