Kyro CPU instruction set updates for kernel
-
Hi,
I'm curious if there is any ongoing work to update the native instruction sets into the kernel modalAI is building for the VOXL2.
Here is the current instruction set listed by the kernel. I'm having issue building newer projects that use the newer SIMD instruction sets provided by ARM. Here are most of the issues:
We are stuck with Ubuntu 18.04 - saw we are limited for the gcc version up to 8 (along side default gcc7.5) - there is a ppa that you can grab from to get up to the latest. I am able to run gcc-10 on the VOXL2, but the arm compiler march options aren't supported by the binutils 2.30 provided by Ubuntu 18.04. I maually built binutils to allow for assembly of those instruction sets.
The important ones are
flagm, i8mm, and blfoat16
- they've all been back-ported by ARM in the linux kernel to support up to armV8.3 supported chips, which should be the Kyro (8 Cortex78 cores)At the very least we should have the instruction sets available in the kernel, so that we can pass the
march=native
and get all of the cpu operations needed. This will go along way when trying to build latest and greatest AI frameworks like accelerated tensorflow lite, ONNX runtime, and pytorch.These are the native extensions available to gcc are:
cat /proc/cpuinfo Processor : AArch64 Processor rev 0 (aarch64) processor : 0 BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU implementer : 0x51 CPU architecture: 8 CPU variant : 0xd CPU part : 0x805 CPU revision : 14
If we could port some of the updates from the official linux arm64 kernel to the modalAI kernel
Is this even possible to start cherry-picking these updates? I also see that qualcomm is developing or releasing a newer versionof the kernel?
I see that the default is qrb5165-ubun1.0-14 but under the package manager and createpoint I saw development for qrb5165-ubun2.0 - was curious if there was a known difference.
If I get pointed in the right direction I'd be glad to help out. I want to make sure we can run all the latsest and greatest neural nets and these SIMD instructions are the key.
-
TLDR; we should likely try to collaborate on getting a bitbake recipe going that modifies what we need, and try to get this going in our next "Ubun2.0" update as I'm trying to gain momentum there.
I'm up to get on the phone with you if it makes sense! Maybe first it's worth us exploring how to best enable development for people on the kernel moving forward, and how to clean things up (e.g. branch names!)
Jumping around the questions a little right now, with likely what we need to do is have some working meetings together to figure out stuff.... Maybe a VOXL2 Kernel Steering Committee or something....
For the current active development for SDK 1.X releases, where system image is a 1.X version, and kernel is 4.19 based - I will continue to use qrb5165-ubun1.0-14.1a branches, eg.
- Chipcode Ubun1.0 / "UBUN1.0" / 4.19 kernel / Ubuntu 18.04
- kernel - https://gitlab.com/voxl-public/system-image-build/qrb5165-kernel/-/tree/qrb5165-ubun1.0-14.1a
----> note: I want to yank all custom 'commits' from the kernel source tree and put into recipes (slowly learning the ways of bitbake....) - meta-voxl2-bsp - https://gitlab.com/voxl-public/system-image-build/meta-voxl2-bsp/-/tree/qrb5165-ubun1.0-14.1a
- meta-voxl2- https://gitlab.com/voxl-public/system-image-build/meta-voxl2/-/tree/qrb5165-ubun1.0-14.1a
- Note: I don't plan on using anything besides r14.1 in the ubun1.0 release path (e.g. the
For next major SDK update (e.g. 2.X), we are targeting "Chipcode Ubun2.0":
- Chipcode Ubun2.0 / "UBUN2.0" / 5.4.233 kernel / Ubuntu 20.04
- In bring up (currently booting)
- kernel - I need to make this build public
- meta-voxl2 and meta-voxl2-bsp - these are WIP for Ubun2.0 but should follow similar pattern - basically I keep getting pulled into Ubun1.0 work and haven't made it over to Ubun2.0 for production but getting closer:
E.g.
sh-5.0$ uname -a Linux qrb5165-rb5 5.4.233 #1 SMP PREEMPT Tue Dec 5 17:56:30 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
sh-5.0$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focal
Here's info about the kernel we plan on moving to at this point:
kernel: https://git.codelinaro.org/clo/la/kernel/msm-5.4/-/tree/kernel.lnx.5.4.r47-rel
techpack/camera: https://git.codelinaro.org/clo/la/platform/vendor/opensource/camera-kernel/-/tree/camera-kernel-iot.lnx.2.0.r2-rel
If you want.... I can share rootfs and kernel to play with... zero warranties at this point
-
@mrawding was logged into wrong account for above, feel free to hit up email as well!