Исследование вычислительных возможностей встроенного GPU PowerVR BXM-4-64 MC1 в SoC Allwinner A733. Основная задача — понять, можно ли ускорить GEMM и Whisper Base относительно восьмиядерного CPU платы через Vulkan, OpenCL и vendor GLES.
Итог: лучший воспроизводимый результат GEMM составил около 37 GFLOP/s на
gemm_i8x8h_direct, однако полный GPU-encoder Whisper Base оказался медленнее
CPU. Для этой платы GPU лучше подходит для длительных регулярных задач над
изображениями и видео, чем для чувствительного к задержкам transformer
inference.
| Тест | Результат |
|---|---|
| Лучший GEMM | ~37 GFLOP/s |
| GEMM с fp32-аккумуляцией | 26.5–27 GFLOP/s |
| Буферный GEMM | 24.9 GFLOP/s |
| Пик ALU fp32 | 60.6 GFLOP/s |
| Пик ALU fp16 | 111.5 GFLOP/s |
| Память GPU, device-resident | 5.8–6.1 GB/s |
| Whisper Base, полный GPU-encoder | ~5.48 с |
| Whisper Base, полный запуск с GPU-encoder | ~13.32 с |
Чистая fp16-арифметика ускоряется только с
-cl-unsafe-math-optimizations. Лучший GEMM использует RGBA16F image2d,
sampler-конверсию, тайл 8×8 на поток и fp16-аккумуляторы. Подробнее — в
русском обзоре и полном лабораторном журнале на
английском.
| Путь | Содержимое |
|---|---|
src/opencl/ |
OpenCL GEMM, ALU и memory-bandwidth тесты |
src/vulkan/ |
Vulkan GEMM и pipeline probes |
src/gles/ |
vendor GLES compute и texture-format probes |
kernels/vulkan/ |
GLSL compute kernels |
profiling/ |
OpenCL kernels, UniFlex/USC disassembly и профили |
experiments/ |
проверки binary API и перехвата UniFlex |
data/ |
сырые CSV и краткие сводки HWPerf |
config/apphints/ |
исследованные настройки PowerVR DDK |
scripts/ |
сбор HWPerf на плате |
docs/ |
выводы, план и исходный журнал экспериментов |
- Orange Pi 4 Pro, Allwinner A733;
- PowerVR BXM-4-64 MC1;
- PowerVR DDK
24.2@6603887; - ядро
6.6.98-ftrace-sun60iw2; - максимальная проверенная частота GPU — 1.008 GHz.
Исходники рассчитаны на vendor OpenCL/Vulkan/GLES userspace. Библиотеки DDK,
прошивки, модели Whisper и аудиофайлы в репозиторий не входят. Пути
/home/orangepi/... в скриптах являются значениями по умолчанию и при
необходимости меняются через переменные окружения или непосредственно в
скрипте.
- Результаты относятся именно к указанной плате и версии DDK.
- Сгенерированные BEXEL/HW
.binне публикуются: в контейнеры попадают строки сборочного окружения vendor-компилятора, включая внутренние служебные адреса. Исходники для воспроизведения дифференциального теста сохранены. - CSV в
data/сохранены как первичные замеры для повторного анализа. - Лицензия пока не указана; до её добавления стандартные права на код сохраняются за автором.