Сборка параллельного C++17 SYCL кода на Raspberry Pi 4B+ IoT платах
Узнайте, как разрабатывать, компилировать и запускать современный параллельный C++17 код на Raspberry Pi 4B+ IoT платах с использованием программной модели Khronos CL/SYCL, hipSYCL и тулчейнов GCC/Clang.
Наши цели
Это руководство предлагает пошаговые инструкции, практические советы и лучшие практики для создания эффективных параллельных приложений на C++17/20 с CL/SYCL на Raspberry Pi 4B+ IoT платах, основанных на архитектуре ARM Cortex-A72 четырехъядерный 64-бит.
Обзор Raspberry Pi 4B+ IoT плат
Последние Raspberry Pi 4B+ платы оснащены SoC Broadcom BCM2711B0, четырехъядерным ARM Cortex-A72 @ 1.5 ГГц и до 8 ГБ LPDDR4-3200 памяти. Эти спецификации обеспечивают высокую производительность и масштабируемость для параллельных вычислений на краю, позволяя сбор, предобработку и эффективную разгрузку данных в дата-центры в реальном времени.
Ключевые преимущества:
- Поддержка DSP, SIMD, VFPv4 и аппаратной виртуализации для ускорения рабочих нагрузок.
- Быстрый VideoCore-VI GPU @ 500 МГц и PCI-Express Gigabit Ethernet для высокопропускной связи.
- Низкопрофильная LPDDR4 память, повышающая параллельную пропускную способность.
Для интеллектуального анализа данных и тяжелых параллельных рабочих нагрузок настоятельно рекомендуются конфигурации 4 ГБ или 8 ГБ.
Настройка Raspberry Pi 4B IoT платы
Начните с прошивки Raspbian Buster 10.6.0 на 16 ГБ micro-SD карту с помощью Raspberry Pi Imager 1.4. После прошивки вставьте карту, подключите micro-HDMI, Ethernet и 5 В/3 А USB-C блок питания, затем включите плату.
Выполните первичные постинсталляционные шаги:
- Установите root-пароль:
sudo passwd root - Переключитесь на root:
sudo -s - Обновите систему и прошивку:
sudo apt update && sudo apt upgrade -y sudo rpi-update - Перезагрузите:
sudo shutdown -r now - Установите последний загрузчик:
sudo rpi-eeprom-update -d sudo shutdown -r now - Запустите
raspi-configи:- Обновите утилиту.
- Отключите десктоп GUI (Boot → Console Autologin).
- Расширьте корневой раздел.
После финальной перезагрузки войдите как root. Установите сетевые инструменты и OpenSSH для удаленного доступа:
sudo apt install -y net-tools openssh-server
Настройте статический IP для eth0 в /etc/network/interfaces и включите root SSH логин в /etc/ssh/sshd_config (раскомментируйте соответствующие строки). Перезапустите SSH-сервис и подключитесь через SSH-клиент вроде MobaXterm.
Разработка параллельного C++17 кода с CL/SYCL
Khronos Group представила CL/SYCL как современную абстракцию над OpenCL, позволяющую гетерогенный параллелизм на CPU, GPU и FPGA. Ниже приведен минимальный SYCL-кернел, выполняющийся на хост-CPU:
#include
using namespace cl::sycl;
constexpr std::uint32_t N = 1000;
int main(){
queue q{};
q.submit([&](handler &cgh){
cgh.parallel_for(range<1>{N}, [=](id<1> idx){
// Параллельная работа здесь
});
});
q.wait();
}
Для таргетинга ARM AArch64 архитектуры Raspberry Pi нужна реализация SYCL с поддержкой ARM. Проект triSYCL предлагает экспериментальную поддержку кроссплатформенных сборок, а более зрелая библиотека hipSYCL дает стабильную поддержку ARM. Установите соответствующие тулчейны:
- GCC/G++ 10.x.x кросскомпилятор для ARM.
- LLVM/Clang 9.x.x нативный тулчейн для AArch64.
Соберите ваше SYCL-приложение с hipSYCL, линкуя против ARM бэкенда, и деплойте исполняемый файл прямо на Raspberry Pi. Запуск бинарника на Pi выполнит кернел на CPU или любом доступном ускорителе, давая измеримый прирост для данных-интенсивных рабочих нагрузок.
Следуя этому workflow, разработчики могут раскрыть полный потенциал Raspberry Pi 4B+ IoT плат для параллельных вычислений на краю, пользуясь растущей экосистемой SYCL библиотек и open-source тулчейнов.
Производственный процесс
- Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp
- Учебник для начинающих по IoT: стриминг данных температуры с Raspberry Pi
- Создание IoT с Java ME 8 на Raspberry Pi: Часть 1 — интеграция GPIO-датчиков
- Создание бюджетного детектора плача ребенка на Raspberry Pi — DIY-руководство
- Создайте свой первый IoT-проект с Raspberry Pi, DHT11 и ThingSpeak
- Начало работы с IoT и MQTT: урок без кода для ESP8266
- Подключение Raspberry Pi 3 к датчику DHT11 и загрузка данных в облако ThingsIo.ai
- Передача данных Adafruit 10DOF IMU с Raspberry Pi 2 в Azure Event Hubs на Windows 10 IoT Core
- Установка Windows 10 IoT Core на Raspberry Pi 3 Model B+: Пошаговое руководство
- ValentFX представляет открытые FPGA-аддоны для BeagleBone и Raspberry Pi