Относительно глобального лимита:
У каждого из amd gpus есть глобальный предел того, сколько одновременных волновых фронтов он может выдержать.Это ограничение зависит от модели, но обычно не изменяется между разными версиями одного и того же чипа.Например, для чипов кипариса (5830, 5850, 5870) это 496 волновых фронтов на GPU.Поскольку эти чипы имеют разное количество CU, максимальное количество волновых фронтов / CU (рассчитанное по этому ограничению) увеличивается с 35,4 для 5830 до 24,8 для 5870. Для чипов начального уровня этот глобальный предел может рассчитываться до значений, достигающих 96 волновых фронтов /кубическийВ этих случаях применяется ограничение на 32 волновых фронта / CU (8 рабочих групп и 4 волновых фронта) с 8 регистрами / потоком.
Теперь для 2 волновых фронтов:
Судя по числам, указанным в ATIРуководство по потоковому программированию В OpenCL кажется, что количество используемых регистров немного меньше, чем 16384, так что я бы предположил (как и в чистом предположении, не нашел никакой информации об этом), некоторые регистры используются для других целей, не доступных непосредственно ядру.(Указатели инструкций и еще много чего).В приведенной таблице нет распределения, использующего более 15872 регистров, так что это может быть используемым максимумом.Конечно, это чисто предположение, так что это может быть просто случай, когда кто-то использует неправильные числа в руководстве, и все копируют его.
В общем, Руководство по программированию ATI Stream OpenCL являетсяхороший ресурс, чтобы узнать об этом.Имейте в виду, что ссылка является результатом быстрого поиска в Google и, похоже, не указывает на самую последнюю версию (она указывает на версию 1.03, когда я использую версию 1.05, и я не знаю, является ли этосамый актуальный тоже).Не знаю, имеет ли это какое-то важное значение, но может потребоваться более глубокий поиск.