ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Kyro CPU instruction set updates for kernel

    VOXL 2
    3
    3
    296
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mrawding
      last edited by

      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.

      1 Reply Last reply Reply Quote 0
      • adminA
        admin admin
        last edited by modaltb

        @mrawding ,

        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 😉

        1 Reply Last reply Reply Quote 0
        • modaltbM
          modaltb ModalAI Team
          last edited by

          @mrawding was logged into wrong account for above, feel free to hit up email as well!

          1 Reply Last reply Reply Quote 0
          • First post
            Last post
          Powered by NodeBB | Contributors