Category Archives: Labs

[Linux] PaddlePaddle with GPU on DGX Spark

Abstract

One of the most powerful OCR engines available as open source is PaddlePaddle. Sadly, Paddle is only available on ARM64 (aarch64) with CPU support. No binaries are provided for ARM64 with GPU support. Thus, running PaddlePaddle on an NVIDIA DGX Spark won’t make use of its powerful Blackwell GPU.

The only way currently available is to compile PaddlePaddle for CUDA 13.0 on an NVIDIA DGX Spark manually. As manual compiling often comes with hurdles, I will try to briefly address the compiling process in the following article.

As of Q1/2026 the DGX Spark is preinstalled with an NVIDIA branded version of Ubuntu 24.04 for ARM64 dubbed DGX OS 7.

Recommendations

I. AI Support for help compiling process
While all LLMs have pro’s and con’s, I had best results in this specific case with Anthropic’s Claude. It guided me through some issues in Step 8 and Step 9. Support provided by ChatGPT or Gemini didn’t bring me on the right track.

II. Machine needs to have latest updates
Furthermore, have all updates installed and have had a fresh reboot. Have no kernel or firmware update pending. Just don’t.

Step 1. Check this

$ uname -m          # is aarch64, right?
$ nvcc --version    # CUDA 13.0 (or 12.9+)
$ nvidia-smi        # GB10, Compute Capability 12.1
$ python3 --version # 3.10–3.12 recommended

Step 2. Dependencies

$ sudo apt-get update
$ sudo apt-get install -y \
git cmake ninja-build \
python3-dev python3-pip python3-venv \
libopenblas-dev liblapack-dev \
gfortran patchelf swig \
wget curl unzip \
libssl-dev zlib1g-dev
$ pip3 install cython wheel setuptools numpy protobuf

Step3: Check for CUDA 13.0 Toolkit for SBSA/aarch64

$ dpkg -l | grep cuda-toolkit

If not installed, install via apt on DGX OS:
$ sudo apt-get install cuda-toolkit-13-0

Step 4. Python Venv for Paddle Compiling

Create a python virtual environment for the compilation process.

$ python3 -m venv paddle_env

Activate and start the virtual environment

$ source ~/paddle_env/bin/activate

Step 5: Install Build-Dependencies into Venv for Paddle Compiling

(paddle_env)$ pip install --upgrade pip
(paddle_env)$ pip install numpy protobuf cython wheel setuptools

Verify with:

(paddle_env)$ which python3 # must show ~/paddle_env/bin/python3                            # NOT /usr/bin/python3
(paddle_env)$ python3 --version    # 3.12.3(paddle_env)$ pip --version        # pip xx.x from ~/paddle_env/...

Step 6. Clone PaddlePaddle Source

(paddle_env)$ cd ~
(paddle_env)$ git clone https://github.com/PaddlePaddle/Paddle.git
(paddle_env)$ cd Paddle

Current Stable-Branch (3.x)
(paddle_env)$ git checkout develop # or git checkout v3.3.0

Submodules
(paddle_env)$ git submodule update --init --recursive

Verify

(paddle_env)$ ls ~/Paddle
(paddle_env)$ git log --oneline -3

Step 7. Install Packaging

(paddle_env)$ pip install -r ~/Paddle/python/requirements.txt

Step 8. This is nasty part A
It took many attempts, because “Eigen” gave errors during compilation. This flag eventually worked: DCMAKE_CUDA_FLAGS=”-U__ARM_NEON -DEIGEN_DONT_VECTORIZE=1″.

(paddle_env)$ cd ~/Paddle/build

As known, this cmake also creates a log file (“cmake_output.log”) that helps a lot when determining reasons for errors. Nowadays AI-LLMs are very helpful for analysing in case anything goes south.

(paddle_env)$ cmake .. \    -GNinja \
    -DCMAKE_BUILD_TYPE=Release \
    -DWITH_GPU=ON \
    -DWITH_TESTING=OFF \
    -DCUDA_ARCH_NAME=Manual \
    -DCUDA_ARCH_BIN="12.1" \
    -DWITH_ARM=ON \
    -DWITH_AVX=OFF \
    -DWITH_MKL=OFF \
    -DWITH_MKLDNN=OFF \
    -DWITH_TENSORRT=OFF \
    -DCMAKE_CUDA_FLAGS="-U__ARM_NEON -DEIGEN_DONT_VECTORIZE=1" \
    -DPYTHON_EXECUTABLE=$(which python3) \
    2>&1 | tee cmake_output.log

Step 9. This is nasty part II
in case everything went well, you can you start compiling:
(paddle_env)$ ninja -j$(nproc) 2>&1 | tee build_output.log

This compiling process took about 40mins on my DGX

Step 10. Install DGX compatible PaddlePaddle wheel to your working Venv

Leave the compilation Venv (deactivate) and activate your desired working Venv (!!!!) Don’t use the compilation Venv for working purposes and neither use your working Venv as a compilation Venv.

Deactivate your compiling Venv and start your working Venv
(paddle_env)$ deactivate
$ source /your_working_venv/bin/activate

Install PaddleOCR core library, dependencies and the CLI tool (paddleocr). PaddleOCR by default installs only the CPU version on a DGX-Spark as a GPU version (paddlepaddle-gpu) is not (yet) provided for ARM64.

(your_working_venv)$ pip install paddleocr #installs core library, dependencies and CLI tool.

Now install your freshly compiled PaddlePaddle wheel to your desired Venv.
(your_working_venv)$
pip install ~/Paddle/build/python/dist/paddlepaddle_gpu-3.4.0.dev20260405-cp312-cp312-linux_aarch64.whl

Lemme know, if it helps…

[OSX86] Building a Hackintosh with ProQ’s AnyOS Motherboard

motherboard back

Prolegomena

With all those different Apple Computers available like Mac Mini’s, Mac Book Air’s, Mac Pro’s, why the hell should we consider setting up a hackintosh these days, since a Mac Mini comes at a price tag of only 600€ here in Europe?

Well the answer to this is quite simple. Hackintoshs aim at people who are basically interested in understanding and tweeking. If you just wanna use you Mac for Mails and a bit of internet-surfing a hackintosh is most likely the wrong thing for you.

But if you are artist for instance, dealing with audio- or video-editing a hackintosh definitely comes a lot more handy than an original Mac. The reason is simple: original Macs have become a lot less flexible when it comes to manual hardware upgrading during the last eight years. Let’s take the latest Mac Pro for instance. The design is still outstanding, but this design comes at the price that Apple entirely dropped the PCIe Bus architecture. What means, that we cannot use dedicated DSP, soundcards or videocards in that device anymore and need to switch to Firewire or Thunderbolt solutions. Which is an additional economical strain. Continue reading

[MacOS] How To Uninstall Waves Entirely

Well, in case you just upgraded from Snow Leopard to Mavericks (like we did ;-) ) and your Waves plugins don’t behave as expected a new installation of Waves could make sense, but first things first. A proper uninstallation does not always work entirely well with Waves’ uninstaller. So in case something goes wrong, follow these steps for manual uninstallation:  Continue reading

[Bitwig] The Platform-Independent DAW Is Out NOW

bitwig-logo-screen2One of the most promising tools of the last view years – the platform independent DAW Bitwig Studio has eventually been released yesterday. It is available for MacOS, Windows and Linux. Bitwig is a Berlin based company, originally founded by former Ableton developers. The relation to Ableton is something that put the expectations of Bitwig to a comparative high level in the field of DAWs.

We’re gonna check out Bitwig in depth during the next few days and let you know what we think. In the meantime: get yourself a demo run for free. Since the save and export feature is disabled in the normal demo version, we recommend to go for a trial license, which requires registration. Head over to https://www.bitwig.com/en/account/register.html and give the next generation of platform independent DAWs a serious go.

[DVB-S2] Tips & Tricks for the Cloud IBox II

 

Abstract

The Cloud Ibox II is a cheap affordable satellite receiver running Linux. It is priced between 90 and 130€. It features:

  • 2 x USB (although the case shows otherwise, it seems this is 1x USB 1.0 and 1 x USB 2.0)
  • Ethernet connection
  • DVB-S2 tuner
  • 1 x card reader
  • linux based
  • dreambox plugin compatible
  • price tag is between 90 and 130€ (often including a USB Wi-Fi Antenna)

It mostly comes pre-installed with a special version of the OpenPli 4.0 frontend. This is due to the situation that OpenPLI at this moment not yet supports the Cloud Ibox II. But I strongly hope this will come soon.

After tinkering with this device the whole weekend, we have some tips and tricks for the other users of this device. Continue reading

[Ableton] Repairing Defective ALS Files Manually

abletonlogoneu2

 

What happened?

  • many avoidable (stupid) situations arise from hectic rush: we for instance accidentally deleted an ableton set (.ALS file extension) from a local NAS server
  • without going too deep into detail: since we don’t have a RAID based NAS we could recover (some parts of) the desired .als file by putting the NAS’ drive into an old PC and restored the found data with UFS/XFS-Explorer (absolute recommendation) to an external USB drive
  • after loading the recovered ALS file, we encountered the corrupt file error from Ableton

bildschirmfoto-2014-01-01-um-3-59-16-pm

The following article is written by a Mac user, but many (if not all) things should most likely be able to be applied to Windows aswell. Continue reading

[iOS] iPhone 4 and the iOS 6.x firmwares

iphone4-pwnedAbstract

You are using an iPhone 4 and you coincidentally updated to iOS 6.1.3, which cannot be jailbroken at the moment. Since you saved the SHSH blobs you think you can restore by doing a replay APTicket attack with TinyUmbrella or Cydia. Sadly iTunes shows errors like 1600, 1601, 1602, 1604 etc.

If you have an iPhone 4s or iPhone5 you can stop reading here. This article will not be able to help you. The iDevices with an A5 CPU or later cannot be downgraded with replay attacks at the moment. Continue reading

[MacOS] Determine Manufacturer of a Mac Book Pro Retina Display

There is a a lot of fuss going around the latest Retina equipped Mac Book Pro’s. Looks like the MBPs can be delivered with either a Samsung display or a Sharp/LG. The problem is: the Sharp/LG displays seems to produce ghosts on the screen. Apple says there might be “image persistance” in some rare cases, but did not admit that it is related to the type of display used. Anyway the Apple discussions forum provides a huge thread.

So if you wanna make sure that you don’t have a Sharp/LG display in your MBP just type this line: Continue reading