Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancement request - AArch64 support #23

Open
brianlmerritt opened this issue Mar 28, 2023 · 14 comments
Open

Enhancement request - AArch64 support #23

brianlmerritt opened this issue Mar 28, 2023 · 14 comments

Comments

@brianlmerritt
Copy link

Any plans to support Nvidia Jetson Orin or Xavier systems on AArch64?

Would be from Jetpack 5.x

@ehfd
Copy link
Member

ehfd commented Mar 29, 2023

Possible. Just no hardware and time.

  1. Compiling GStreamer for AARCH64 (addons/gstreamer)
  2. Add nvv4l2h264enc/nvv4l2vp9enc and test
  3. Verify all the pipeline works
    Would be trivial for newbies.

https://docs.nvidia.com/jetson/archives/r35.2.1/DeveloperGuide/text/SD/Multimedia/AcceleratedGstreamer.html

Nicholas Dufresne (ndufresne) at #gstreamer IRC oftc.net should be experienced in this regard.

@ehfd
Copy link
Member

ehfd commented Mar 30, 2023

The above list is for https://github.com/selkies-project/selkies-gstreamer: selkies-project/selkies-gstreamer#50.

For the container itself, it needs to detect the architecture with TARGETPLATFORM (https://nielscautaerts.xyz/making-dockerfiles-architecture-independent.html) and do not install :i386 packages if so and install the ARM version of VirtualGL

apt-get update && apt-get install -y --no-install-recommends ./virtualgl_${VIRTUALGL_VERSION}_amd64.deb ./virtualgl32_${VIRTUALGL_VERSION}_amd64.deb && \
instead of amd64.
I also believe that aarch64-linux-gnu should be used in some paths instead of i386-linux-gnu or x86_64-linux-gnu with an if clause.

Everything I listed must be tested.

@brianlmerritt
Copy link
Author

Am thinking if we make this architecture independent that will have a knock on effect on your tags. Maybe multiple tags for i386?

FROM ghcr.io/selkies-project/nvidia-egl-desktop:22.04

The above should still work with the assumption it is i386

FROM ghcr.io/selkies-project/nvidia-egl-desktop:i386-22.04 or FROM ghcr.io/selkies-project/nvidia-egl-desktop:amd64-22.04

And maybe for arm8 we add

FROM ghcr.io/selkies-project/nvidia-egl-desktop:aarch64-20.04

But in nvidia jetson land there are different Jetpack releases and getting cuda to work is much better if the underlying platform matches so things could end up looking like

FROM ghcr.io/selkies-project/nvidia-egl-desktop:aarch64-l4t-r35.1.0-20.04

or as the jetpack sets the Ubuntu release maybe

FROM ghcr.io/selkies-project/nvidia-egl-desktop:aarch64-l4t-r35.1.0

Any thoughts or preferences?

@ehfd
Copy link
Member

ehfd commented Apr 11, 2023

I will make initial preparations to make aarch64 work trivially. I do need tests from actual aarch64 hardware and therefore your help by testing things.

@brianlmerritt
Copy link
Author

Cool - I can test on latest 20:04 Jetpack and 18:04 Jetson Nano if useful. 22:04 Jetpack is not due for release until autumn

@ehfd
Copy link
Member

ehfd commented Aug 4, 2023

I now have the hardware, at least for plain ARM64.

@brianlmerritt
Copy link
Author

👍

@ehfd
Copy link
Member

ehfd commented Aug 22, 2023

selkies-project/selkies-gstreamer#50

This is not a small work... Expect some time.

@ehfd
Copy link
Member

ehfd commented Nov 6, 2023

I am doing some initial cleanup so that the Dockerfile and the entrypoint scripts are not reliant on just the x86_64 architecture. However, this is just the start and there are a lot more hurdles remaining.

@ehfd
Copy link
Member

ehfd commented Mar 22, 2024

Preparing...

Note to self: (VirtualGL 3.1.1 arm64)

-rw-r--r-- root/root      4739 2022-11-22 19:21 ./usr/share/doc/virtualgl-3.0.90/somerights20.png
-rwxr-xr-x root/root   2398936 2022-11-22 19:47 ./usr/lib/libvglfaker-nodl.so
-rwxr-xr-x root/root     10312 2022-11-22 19:46 ./usr/lib/libgefaker.so
-rwxr-xr-x root/root   2403128 2022-11-22 19:47 ./usr/lib/libvglfaker.so
-rwxr-xr-x root/root     14528 2022-11-22 19:46 ./usr/lib/libdlfaker.so

@ehfd
Copy link
Member

ehfd commented Apr 4, 2024

I do not have a Jetson device. Thus, someone will need to provide an example that builds GStreamer 1.24.0 with NVIDIA Deepstream SDK V4L2 Video Encoder integrated.

Other than that, things are coming this way.

@brianlmerritt
Copy link
Author

@ehfd I am travelling for a few weeks, but will have a go when I get back.

Do you care which Ubuntu distro / jetpack version?

@ehfd
Copy link
Member

ehfd commented Apr 9, 2024

You should know better, so I won't comment. Perhaps look out for Ubuntu 24.04.

@ehfd
Copy link
Member

ehfd commented Jun 23, 2024

Theoretically, I removed all dependencies specific to x86_64, but regular builds for Selkies-GStreamer on aarch64 are too prohibitive because there is a 6-hour limit in GitHub Actions and emulated aarch64 builds take (at least) 8 times longer than x86_64, which the builds will be cut off by the limit. Thus people will need to self-build, starting from Selkies-GStreamer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants