Как запланирована рабочая группа OpenCL на Intel FPGA? - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть вопрос о планировании рабочей группы на нескольких CU в Intel FPGA. Как рабочие группы назначаются доступным CU, когда CU считается доступным? Это когда последний рабочий элемент предыдущей рабочей группы покинул конвейер или когда он находится на втором этапе (то есть каждый этап конвейера занят предыдущей рабочей группой, кроме первой)? Это решение принимается аппаратным планировщиком, но я не нашел общедоступной документации, объясняющей все это.

Редактировать: я говорю об автоматическом процессе, который происходит при использовании Intel OpenCL SDK для FPGA,не индивидуальный дизайн с HDL.

1 Ответ

1 голос
/ 02 октября 2019

Помимо рабочих элементов, рабочие группы также передаются по конвейеру в каждом CU. Следовательно, у вас есть несколько рабочих групп в полете в одном CU одновременно, чтобы максимизировать эффективность конвейера. Если в вашем проекте используются буферы на основе локальной памяти, при проверке отчета в формате HTML вы увидите, что компилятор дополнительно реплицирует эти буферы для поддержки определенного количества «одновременных рабочих групп». Число таких рабочих групп, по-видимому, равно глубине конвейера на единицу CU, деленной на размер рабочей группы. В конце концов, все рабочие элементы из всех рабочих групп, работающих одновременно в одном и том же CU, передаются по конвейеру один за другим, причем рабочие элементы, принадлежащие каждому CU, используют свои собственные локальные буферы, и для каждой рабочей группы применяется синхронизация барьеров. Новая рабочая группа будет запланирована в каждом CU, возможно, после того, как одна из одновременно работающих рабочих групп полностью покинет CU.

PS Возможно, легче получить помощь, связанную с Intel FPGA SDK для OpenCL. на их собственном форуме.

PPS Подробная информация о планировщике рабочих элементов Intel OpenCL нигде не документирована.

...