Running on non-x86 platforms

For many years darktable would only run on x86 CPUs that also support at least SSE2. While that is nowadays almost everything looking like a PC it’s still limiting. Consequently Roman sat down and started work on dropping that hard requirement. While his work isn’t complete yet it’s definitely becoming useful. So with a little tweaking you can for example use the development versions on an ARM, like the Raspberry Pi.
This is a companion discussion topic for the original entry at https://www.darktable.org/2016/04/running-on-non-x86-platforms/

I would love for this to happen. There are a few programs that I use regularly that are targeted to the Raspberry, but that can also run on some of the other ARM platforms. For instance, there’s a binary package for the Vivaldi browser that’s compiled for the Pi, and distributed in a package for it, but that also runs just fine on my Odroid XU4 (2x memory, 2x speed compared to Pi). It is much more fluid on the Odroid than on the Pi.

I know that the Rawtherapee program is buildable on the Odroid and is also quite usable there. So, is there much difference between Rawtherapee and Darktable? If not, it seems that Darktable could target the new and improving set of ARM devices. The latest offering in the Odroid line (N2) has double the memory at 4GB.

Is this horse dead, or is there still a plan for ARM and Darktable?

2.6.2 builds as you can see here Build Log for Package darktable (Project graphics:darktable) - openSUSE Build Service

Thanks for the link. It turns out that the Odroid N2 is ARM v8 64 bit (which is same as the build target on Opensuse.org). So, I may be able to give this idea a twirl and see if it spins.

if you run opensuse you could just use our package :stuck_out_tongue:

Very old topic, I know. But if anybody still interested out there, here is the simple message:

dt on aarch64 (outside the Apple sandbox) lives and runs. Even with the OpenCL support!

I currently use dt 4.4.2 on the Radxa Rock Pi 5B SBC. It is not blazing fast, of course, but still decently useable.

tux@rock5b ~> darktable -d perf -d opencl -d tiling --conf resourcelevel="large"
[dt_detect_cpu_features] Not implemented for this architecture.
[dt_detect_cpu_features] Please contribute a patch.
     0.0001 [dt_init] SSE2 is unavailable, some functions will be noticeably slower.
[dt_detect_cpu_features] Not implemented for this architecture.
[dt_detect_cpu_features] Please contribute a patch.
     0,0635 [dt_get_sysresource_level] switched to 2 as `large'
     0,0635   total mem:       15967MB
     0,0635   mipmap cache:    1995MB
     0,0635   available mem:   10915MB
     0,0635   singlebuff:      249MB
     0,0635   OpenCL tune mem: WANTED
     0,0635   OpenCL pinned:   OFF
[opencl_init] opencl related configuration options:
[opencl_init] opencl: ON
[opencl_init] opencl_scheduling_profile: 'default'
[opencl_init] opencl_library: 'default path'
[opencl_init] opencl_device_priority: '*/!0,*/*/*/!0,*'
[opencl_init] opencl_mandatory_timeout: 400
     0.0663 [dt_dlopencl_init] could not find default opencl runtime library 'libOpenCL'
     0.0663 [dt_dlopencl_init] could not find default opencl runtime library 'libOpenCL.so'
[opencl_init] opencl library 'libOpenCL.so.1' found on your system and loaded
arm_release_ver: g13p0-01eac0, rk_so_ver: 3
[opencl_init] found 1 platform
[opencl_init] found 1 device

[dt_opencl_device_init]
   DEVICE:                   0: 'Mali-G610 r0p0'
   PLATFORM NAME & VENDOR:   ARM Platform, ARM
   CANONICAL NAME:           armplatformmalig610r0p0
   DRIVER VERSION:           3.0
   DEVICE VERSION:           OpenCL 3.0 v1.g13p0-01eac0.a8b6f0c7e1f83c654c60d1775112dbe4
   DEVICE_TYPE:              GPU
   GLOBAL MEM SIZE:          15960 MB
   MAX MEM ALLOC:            15960 MB
   MAX IMAGE SIZE:           65536 x 65536
   MAX WORK GROUP SIZE:      1024
   MAX WORK ITEM DIMENSIONS: 3
   MAX WORK ITEM SIZES:      [ 1024 1024 1024 ]
   ASYNC PIXELPIPE:          YES
   PINNED MEMORY TRANSFER:   NO
   MEMORY TUNING:            WANTED
   FORCED HEADROOM:          400
   AVOID ATOMICS:            NO
   MICRO NAP:                250
   ROUNDUP WIDTH:            16
   ROUNDUP HEIGHT:           16
   CHECK EVENT HANDLES:      1024
   PERFORMANCE:              4.130
   TILING ADVANTAGE:         0.000
   DEFAULT DEVICE:           NO
   KERNEL BUILD DIRECTORY:   /opt/darktable/share/darktable/kernels
   KERNEL DIRECTORY:         /home/tux/.cache/darktable/cached_v1_kernels_for_ARMPlatformMaliG610r0p0_30
   CL COMPILER OPTION:       
   KERNEL LOADING TIME:       0.0064 sec
[opencl_init] OpenCL successfully initialized. Internal numbers and names of available devices:
[opencl_init]           0       'ARM Platform Mali-G610 r0p0'
[opencl_init] FINALLY: opencl is AVAILABLE and ENABLED.
1 Like

FYI, there’s also a Windows on ARM64 build (tested on Surface Pro X I think) available though MSYS2 for a while now.

1 Like

Thx, but I don’t plan to run Windows on my SBC. Maybe someone else will find it interesting.

But the important thing is that dt already runs fine on aarch64/ARM64. Thx to all who contributed!