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.
Если вы хотите попробовать это, вы можете установить библиотеку следующим образом:
1 2 3 4 5 |
git clone https://github.com/Idein/py-videocore6 cd py-videocore6/ pip3 install -r requirements.txt python3 setup.py build sudo python3 setup.py install |
а затем запустите тесты:
1 2 |
pip3 install nose nosetests -v -s |
Однако, использование 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.
Оригинал статьи вы можете прочитать здесь.