Unlocking GPU Compute in Android Chroot

Bypassing Android Framework for Native Adreno 616 Performance

Executive Summary: Penelitian ini mematahkan asumsi bahwa GPU Compute di lingkungan Chroot Linux (di atas Android) membutuhkan *full Android Framework* (Binder, HAL, SurfaceFlinger). Hasil riset membuktikan bahwa eksekusi *headless compute* via OpenCL dapat berkomunikasi langsung ke kernel (KGSL) secara native.

1. The Hardware & Environment

Riset ini dilakukan dengan target spesifik pada arsitektur Qualcomm Snapdragon 712. Lingkungan chroot di-setup menggunakan Ubuntu 26.04 (Resolute) di atas LineageOS host.

  • SoC: Qualcomm SDM712
  • GPU: Adreno 616v1 @ 180MHz
  • DSP: Hexagon 685

2. Benchmark Results: CPU vs GPU

Pengujian dilakukan menggunakan algoritma perkalian matriks (Matrix Multiplication 1024x1024). Perbandingan dilakukan antara eksekusi 8-Core CPU (Parallel pthreads) melawan Adreno 616 GPU (OpenCL).

20.88s

8-Core CPU Time

0.87s

Adreno GPU Time

~ 24.1x

Total Speedup

3. How it Works (The Root Cause Analysis)

Sebelumnya sering diasumsikan bahwa driver akan masuk ke mode "Null Submission" (menerima command tapi tidak dieksekusi hardware) jika ServiceManager dan Binder tidak merespons. Kami menemukan bahwa ini SALAH untuk *headless compute*.

Jalur komunikasi sebenarnya sangat *direct* (App -> libOpenCL.so -> libgsl.so -> /dev/kgsl-3d0). Selama permission device di-set ke rw-rw-rw-, kernel KGSL akan mengeksekusi Ioctl KGSL_IOCTL_SUBMIT_COMMANDS (0x46) tanpa memerlukan perantara IPC Binder ke SurfaceFlinger.

Prerequisite Libraries (APEX Linker)

Kunci keberhasilan adalah menggunakan Linker dari APEX Android untuk menjalankan binary di dalam Chroot agar ABI *matching* dengan library proprietary Qualcomm:

export ANDROID_RUNTIME_ROOT=/apex/com.android.runtime
export LD_LIBRARY_PATH=/vendor/lib64:/system/lib64

/apex/com.android.runtime/bin/linker64 ./opencl_test_binary

4. Hexagon DSP: The Final Frontier

Berbeda dengan GPU, DSP FastRPC (/dev/adsprpc-smd) memiliki proteksi *domain* yang ketat oleh daemon kernel.

Domain / Component Status Keterangan
ADSP (Audio / Domain 0) ✅ Berhasil Akses berhasil menggunakan remote_handle_open API.
CDSP (Compute / Domain 3) ❌ Gagal Ioctl INIT_ATTACH mengembalikan ECHRNG (Out of Range).
SNPE Runtime ⚠️ Pending Ketergantungan skrip Python dan framework.

5. Conclusion & Next Steps

GPU hardware compute sangat mungkin dilakukan di *chroot environment* dengan performa mendekati *bare-metal* (Native). Untuk riset selanjutnya, fokus akan dialihkan ke pembedahan data *Ioctl* FastRPC Qualcomm untuk menembus limitasi koneksi ke Compute DSP (CDSP) dan menguji kapabilitas inferensi Machine Learning dengan SNPE.