Я немного запутался в терминах волнового фронта AMD и workgroupsize OpenCL. Я нашел разные источники, были сделаны разные заявления.AMD wavefront против рабочей группы
Мой вопрос: насколько размер волны в формате GCS для волнового фронта и в соответствии с этим: насколько большой должна быть рабочая группа по opencl, по крайней мере, чтобы не потерять занятость.
Информация, полученная мной из this document из amd, состоит в том, что размер фронта волнового фронта GCN равен 16. Я могу запустить 4 волновых фронта на CU за раз, и в каждом кубе будет максимум 40 волновых фронтов в полете. поэтому я подразумеваю, что рабочая группа должна быть по крайней мере размером 16 в opencl.
Но общая информация (например, в this или this) является то, что wavefrontsize 64 и в соответствии с этим workgroupsize должно быть не менее 64, если выше, кратное 64. Это также то, что совпадает с meassurements на моем ядре , которые состоят в том, что с workgroupsize 64 я получаю наивысшую производительность, для всего ниже 64 его ухудшение.
Большое спасибо за разъяснения.
Если размер рабочей группы равен 16, минимальная ширина simd-устройства amd gpu равна 80%, потому что каждый из них имеет ширину 64 дюйма. Вы теряете 48 единиц за CU. Волновые фронты применяются к одной и той же области, не распределенной по всем CU. –
Да, это то, что я получаю из большинства источников. но что насчет ссылки nr.1 там, где она говорит, в cu есть 4 16-широкоугольных SIMD, и каждый из них способен иметь 10 волновых фронтов в полете. для меня это означает, что волновой фронт равен 16, а не 64. Помните, что мой вопрос особенно касается технологии GCN от amd. – user3507003
Когда у вас есть рабочая группа шириной 16, вы используете только один сид с 16 шинами. Другие 3 ждут на холостом ходу, пока все волновые фронты, выпущенные на этом сингле, так что это не динамический параллелизм, я думаю. –