Membangun Kode Parallel C++17 SYCL pada Papan IoT Raspberry Pi 4B+
Temukan cara mengembangkan, mengompilasi, dan menjalankan kode C++17 parallel modern pada papan IoT Raspberry Pi 4B+ menggunakan model pemrograman Khronos CL/SYCL, hipSYCL, dan toolchain GCC/Clang.
Tujuan Kami
Panduan ini menawarkan instruksi langkah demi langkah, tips praktis, dan praktik terbaik untuk membuat aplikasi parallel yang efisien dalam C++17/20 dengan CL/SYCL pada papan IoT Raspberry Pi 4B+, yang didorong oleh arsitektur ARM Cortex-A72 quad-core 64-bit.
Tinjauan Papan IoT Raspberry Pi 4B+
Papan Raspberry Pi 4B+ terbaru menampilkan SoC Broadcom BCM2711B0, Quad-Core ARM Cortex-A72 @ 1,5 GHz, dan hingga 8 GiB memori LPDDR4-3200. Spesifikasi ini memberikan performa tinggi dan skalabilitas untuk komputasi parallel sisi edge, memungkinkan pengumpulan data real-time, pra-pemrosesan, dan off-loading yang efisien ke pusat data.
Keuntungan utama meliputi:
- Dukungan DSP, SIMD, VFPv4, dan virtualisasi hardware untuk beban kerja yang dipercepat.
- GPU VideoCore-VI cepat @ 500 MHz dan Ethernet Gigabit PCI-Express untuk konektivitas bandwidth tinggi.
- Memori LPDDR4 rendah profil yang meningkatkan throughput parallel.
Untuk penambangan data dan beban kerja parallel berat, konfigurasi 4 GiB atau 8 GiB sangat direkomendasikan.
Menyiapkan Papan IoT Raspberry Pi 4B
Mulai dengan memflash Raspbian Buster 10.6.0 ke kartu micro-SD 16 GB menggunakan Raspberry Pi Imager 1.4. Setelah diflash, masukkan kartu, sambungkan micro-HDMI, Ethernet, dan pasokan daya USB-C 5 V/3 A, lalu nyalakan papan.
Lakukan langkah awal setelah instalasi:
- Tetapkan kata sandi root:
sudo passwd root
- Beralih ke root:
sudo -s
- Perbarui sistem dan firmware:
sudo apt update && sudo apt upgrade -y sudo rpi-update
- Reboot:
sudo shutdown -r now
- Instal bootloader terbaru:
sudo rpi-eeprom-update -d sudo shutdown -r now
- Jalankan
raspi-config dan: - Perbarui alat.
- Nonaktifkan desktop GUI (Boot → Console Autologin).
- Perluas partisi root.
Setelah reboot akhir, login sebagai root. Instal alat jaringan dan OpenSSH untuk mengaktifkan akses jarak jauh:
sudo apt install -y net-tools openssh-server
Konfigurasikan IP statis untuk eth0 di /etc/network/interfaces dan aktifkan login root SSH di /etc/ssh/sshd_config (hapus komentar baris yang relevan). Restart layanan SSH dan sambungkan menggunakan klien SSH seperti MobaXterm.
Mengembangkan Kode Parallel C++17 dengan Model CL/SYCL
Khronos Group memperkenalkan CL/SYCL sebagai abstraksi modern atas OpenCL, memungkinkan paralelisme heterogen di seluruh CPU, GPU, dan FPGA. Di bawah ini adalah kernel SYCL minimal yang berjalan pada CPU host:
#include <CL/sycl.hpp> using namespace cl::sycl; constexpr std::uint32_t N = 1000; int main(){ queue q{}; q.submit([&](handler &cgh){ cgh.parallel_for<class Kernel>( range<1>{N}, [=](id<1> idx){ // Parallel work here }); }); q.wait(); }
Untuk menargetkan arsitektur ARM AArch64 Raspberry Pi, Anda memerlukan implementasi SYCL yang mendukungnya. Proyek triSYCL menawarkan dukungan eksperimental untuk build lintas platform, sementara perpustakaan hipSYCL yang lebih matang memberikan dukungan stabil untuk ARM. Instal toolchain yang sesuai:
- GCC/G++ 10.x.x cross-compiler untuk ARM.
- LLVM/Clang 9.x.x toolchain native untuk AArch64.
Bangun aplikasi SYCL Anda dengan hipSYCL, menautkan ke backend ARM, dan deploy executable langsung ke Raspberry Pi. Menjalankan biner pada Pi akan mengeksekusi kernel pada CPU atau akselerator yang tersedia, memberikan percepatan yang terukur untuk beban kerja intensif data.
Dengan mengikuti alur kerja ini, pengembang dapat memanfaatkan potensi penuh papan IoT Raspberry Pi 4B+ untuk komputasi parallel sisi edge, mendapat manfaat dari ekosistem perpustakaan SYCL dan toolchain open-source yang berkembang.