Я искал месяц для этой проблемы.Я не могу синхронизировать блоки в CUDA.
Я прочитал много постов об atomicAdd, кооперативных группах и т. Д. Я решил использовать глобальный массив, чтобы блок мог записывать один элемент глобального массива.После этой записи поток блоков ожидает (т. Е. Перехватывается в цикле while), пока все блоки не записывают глобальный массив.
Когда я использовал 3 блока, моя синхронизация работает хорошо (потому что у меня 3 SM).Но использование 3 блоков дает мне 12% загрузки.Поэтому мне нужно использовать больше блоков, но они не могут быть синхронизированы.Проблема в том, что блок на SM ожидает другие блоки, поэтому SM не может получить другой блок.
Что я могу сделать?Как можно синхронизировать блоки, когда количество блоков превышает количество SM?
Спецификация CUDA-GPU: CC.6.1, 3 SM, windows 10, VS2015, графическая карта GeForce MX150.Пожалуйста, помогите мне в этой проблеме.Я использовал много кодов, но ни один из них не работает.