py-videocore6 — библиотека Python для GPGPU на Raspberry Pi 4 с графическим процессором VideoCore 6


Raspberry Pi 4 SBC был выпущен в конце июня с новым SoC Broadcom BCM2711B, включающий VideoCore 6 (VC6) GPU для 2D и 3D графики, и может быть использован для вычислений GPU общего назначения (GPGPU).

Ранее мы видели, что как такие компании, как Idein, использовали возможности VideoCore 4 GPGPU на Raspberry Pi 3/Zero для ускорения распознавания изображений, и для этой цели они выпустили библиотеку python (py-videocore).

Проблема в том, что GPU VideoCore 6, найденный в RPi 4, сильно отличается от  GPU VideoCore 4 для более ранних версий плат Raspberry Pi Foundation, как объясняет участник форума phiren:

Я искал драйверы с открытым исходным кодом и вот некоторые из моих наблюдений:

  • vc6 явно получен из vc4, но он значительно отличается. vc6 — это лишь небольшое расширение vc5
  • Конвейер QPU остается в основном таким же, у вас все еще есть add ALU и multiply ALU, и он может выдавать две операции ALU за цикл. Есть еще 4 полосы SIMD, чередующиеся в течение 4 циклов.
  • Кодировка команд для QPU отличается, но основные инструкции одинаковы.
  • Инструкции для упакованного 8-битного int math были отброшены вместе с большинством режимов упаковки.
  • Добавлены инструкции для упакованного 16-битного float math (2 операции с плавающей запятой за одну операцию)
  • multiply ALU теперь может быть сложением, поэтому вы можете выполнить две вычислительные операции за инструкцию.
  • add ALU получил кучу новых инструкций, с которыми я не знаком и не изучал.

Это означает, что библиотеку py-videocore нельзя использовать так же, как и в RPi 4. Но, если вам интересна эта тема, вам будет полезно узнать, что Idein выпустил Python-библиотеку py-videocore6 для программирования GPGPU на Raspberry Pi 4. вместе с тремя примерами тестового кода, представленного на Github.

В настоящее время практически нет документации, и поскольку наши знания о внутренних компонентах GPU ограничены, мы не понимаем, что они делают, но похоже, что один распределяет память на GPU/QPU, другой отображает некоторые параметры GPU, и, наконец, один запускается некую сборку на Videocore 6 QPU.

Если вы хотите попробовать это, вы можете установить библиотеку следующим образом:

а затем запустите тесты:

Однако, использование Raspberry Pi 4 по сравнению с Pi 3 может быть не таким уж большим преимуществом. Так Akane — с того же форума, о котором говорилось выше, — подсчитал, что, теоретически, VideoCore 6 должна обеспечивать лишь немного большую производительность с точки зрения GFLOPS:

VideoCore IV с тактовой частотой 250 МГц: 250 [МГц] x 3 [slice] x 4 [ЦПУ/slice] x 4 [процессор] x 2 [операционная/тактовая частота] = 24 Гфлоп/с
VideoCore IV с тактовой частотой 300 МГц: 300 [МГц] x 3 [slice] x 4 [ЦПУ / slice] x 4 [процессор] x 2 [операционная/тактовая частота] = 28,8 Гфлоп/с
VideoCore VI с тактовой частотой 500 МГц: 500 [МГц] x 2 [slice] x 4 [ЦП/slice] x 4 [процессор] x2 [операционная/тактовая частота] = 32 Гфлоп/с

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.