Accélération GPU

Activer l’accélération GPU pour les fonctionnalités d’IA de darktable est un processus en deux étapes :

  1. Installer un GPU compatible avec ONNX Runtime sur votre matériel (cette page).

  2. Indiquer à darktable la nouvelle bibliothèque via préférences AI – cliquez sur détecter pour analyser automatiquement les emplacements d’installation standard ou accédez au fichier à la main.

Sous Linux, l’environnement d’exécution fourni est uniquement CPU ; sous Windows, il utilise DirectML ; et sous macOS, il utilise CoreML. Ainsi, l’étape 1 ne s’applique que si vous souhaitez une accélération GPU NVIDIA, AMD ou Intel sous Linux ou Windows. L’étape 1 comporte trois chemins, abordés ci-dessous.

🔗requirements

Les fournisseurs groupés sur Windows (DirectML, n’importe quel GPU DirectX 12) et macOS (CoreML, Apple Silicon ou récent Intel Mac) n’ont pas d’exigences supplémentaires. Les fournisseurs de GPU Linux/Windows ci-dessous ont besoin de matériel pris en charge et de quelques bibliothèques système déjà en place.

NVIDIA (CUDA) : GPU Pascal ou plus récent (capacité de calcul 6.0+). Pilote NVIDIA 525 ou version ultérieure. Plus l’un des CUDA Toolkit 12.x ou CUDA Toolkit 13.x et cuDNN 9.x installés sur le système. Les deux branches CUDA ont des builds ONNX Runtime distinctes et vous avez besoin de celle qui correspond à la version de la boîte à outils installée sur votre machine.

Pour vérifier quel toolkit CUDA vous avez :

  • exécutez nvcc --version dans un terminal – la ligne release vous indique la boîte à outils installée (par exemple, release 12.6 signifie que CUDA 12 est installé).  : - nvidia-smi signale un champ CUDA Version: en haut, mais il s’agit de la version maximum que le pilote est capable d’exécuter, pas celle installée. Une machine avec le pilote 580+ peut afficher « Version CUDA : 13.2 » alors qu’en réalité seule CUDA 12 est installée via « nvcc ».

Si vous avez installé CUDA 12 et que vous souhaitez passer à 13, installez le toolkit CUDA 13 (en parallèle avec 12, c’est bien), puis re-exécutez le script d’installation ONNX Runtime – il choisit la build correspondant à la boîte à outils qu’il trouve.

AMD (MIGraphX) (Linux uniquement)
 : GPU pris en charge par ROCm (série Radeon RX 7700 ou plus récente, Instinct MI100 ou plus récente). ROCm 6.x ou plus récent avec MIGraphX installé sur le système.

Remarque : la première inférence de chaque modèle sur MIGraphX prend quelques minutes car le graphique du modèle est compilé pour votre GPU spécifique, puis mis en cache sur le disque – voir les notes de performance pour plus de détails. Une fois mises en cache, les exécutions suivantes sont rapides et persistent aux redémarrages de darktable.

Intel (OpenVINO)  : Intel iGPU (HD / UHD / Iris Xe) ou GPU discret Arc. Pilote GPU Intel avec OpenCL (intel-opencl-icd) et/ou Level Zero. OpenVINO lui-même est livré dans le package d’installation – rien d’autre à installer.

Si une bibliothèque système requise est manquante, le script d’installation vous indiquera laquelle et vous indiquera les documents d’installation du fournisseur. Le package s’installe toujours ; l’accélération ne démarre qu’une fois la bibliothèque manquante en place.

🔗utiliser les scripts d’installation (recommandé)

La méthode la plus simple : coller une ligne dans un terminal. Le script détermine quel GPU vous possédez, télécharge la version ONNX Runtime correspondante, la vérifie et l’installe sous votre compte utilisateur. Pas d’accès root, pas de vérification de source.

Linux :

curl -fsSL https://raw.githubusercontent.com/darktable-org/darktable/HEAD/tools/ai/install-ort-gpu.sh | bash

Windows (PowerShell) :

irm https://raw.githubusercontent.com/darktable-org/darktable/HEAD/tools/ai/install-ort-gpu.ps1 | iex

Le script Linux nécessite bash, curl, jq, tar et unzip accessibles via le PATH – s’il en manque, il vous indique lesquels à l’avance afin que l’installation n’échoue pas en cours. Le script Windows a besoin de PowerShell 5.1 ou plus récent (préinstallé sur Windows 10+).

Si vous avez plus d’un GPU, le script demande lequel cibler. Si votre GPU a besoin de bibliothèques système qui ne sont pas installées (cuDNN sur NVIDIA, MIGraphX sur AMD), le script vous indique ce qui manque et où l’obtenir – l’installation est toujours terminée, mais l’accélération ne démarre qu’une fois ces bibliothèques système en place.

Pour forcer un fournisseur d’exécution spécifique au lieu de laisser le script détecter automatiquement, passez --ep (bash) ou -Ep (PowerShell). Valeurs : cuda12, cuda13, rocm, migraphx, openvino. Cela peut être utile lorsque les GPU NVIDIA et Intel sont présents et que vous en souhaitez un spécifique, ou lorsque « nvcc » n’est pas installé et que le script ne peut pas savoir si vous avez CUDA 12 ou CUDA 13 sur le système.

Lorsque le script se termine, redémarrez darktable, ouvrez préférences AI, et cliquez sur détecter pour que darktable récupère le runtime nouvellement installé. Choisissez ensuite votre fournisseur (CUDA, MIGraphX, OpenVINO) sous accélération IA.

🔗détecter un runtime ONNX installé sur le système

Si votre distribution est déjà livrée avec un runtime ONNX compatible GPU (commun sur Arch, parfois sur Ubuntu/Debian via des dépôts tiers), cliquez simplement sur détecter dans l’onglet Préférences de l’IA – darktable recherche les emplacements système standard et s’auto-configure.

🔗Installer manuellement

Lorsque les options automatiques ne conviennent pas (environnement verrouillé, audit personnalisé, débit d’API GitHub limité – voir ci-dessous), vous pouvez récupérer et placer les fichiers vous-même. L’objectif est d’avoir libonnxruntime.so.* / onnxruntime.dll sur le disque vers lequel darktable peut être pointé via le champ ONNX Runtime library dans les préférences de l’IA.

🔗où télécharger

Vendor Source
NVIDIA CUDA 12 GitHub Releasesonnxruntime-{linux|win}-x64-gpu-X.Y.Z.{tgz|zip}
NVIDIA CUDA 13 GitHub Releasesonnxruntime-{linux|win}-x64-gpu_cuda13-X.Y.Z.{tgz|zip}
AMD ROCm 6.x PyPI onnxruntime-rocmcp312 manylinux wheel
AMD ROCm 7.x PyPI onnxruntime-migraphxcp312 manylinux wheel
Intel OpenVINO (Linux) PyPI onnxruntime-openvinocp312 manylinux_2_28_x86_64 wheel
Intel OpenVINO (Windows) PyPI onnxruntime-openvino + PyPI openvino – both cp312 win_amd64

Les archives tar/zips NVIDIA sont les plus simples à extraire : la bibliothèque se trouve sous lib/. Les roues PyPI (les fichiers .whl sont renommés zips) transportent la bibliothèque sous <package>/capi/ avec les fichiers LICENSE et ThirdPartyNotices.txt que vous devez conserver à côté. AMD Wheels peut également expédier un répertoire voisin <package>.libs/ de bibliothèques ROCm regroupées avec auditwheel – lorsqu’il est présent, ce répertoire doit rester à côté de libonnxruntime.so.* après la copie, car le RPATH des fournisseurs se résout via une référence $ORIGIN relative. Intel sous Windows a besoin de DLL provenant d’une deuxième roue (openvino) copiées à côté de onnxruntime.dll.

Par convention, placez les fichiers extraits sous ~/.local/lib/onnxruntime-<ep>/ sous Linux ou %LOCALAPPDATA%\onnxruntime-<ep>\ sous Windows (<ep> = cuda, rocm, migraphx ou openvino). Le bouton détecter dans les préférences de l’IA recherche n’importe quel répertoire onnxruntime-* sous ces racines.

🔗AMD : source alternative lorsque la couverture GPU de PyPI n’est pas suffisante

Les roues onnxruntime-rocm / onnxruntime-migraphx de PyPI fournissent des binaires de noyau HIP pour un ensemble fixe d’architectures GPU. Si l’ID gfx* de votre carte n’est pas couvert, ONNX Runtime se charge mais la compilation du modèle échoue au moment de l’exécution :

migraphx_program_compile : Erreur : ... aucune image du noyau n'est disponible
pour exécution sur l'appareil

Cela impacte généralement certains iGPU RDNA 3 (par exemple Radeon 780M / gfx1103). Deux solutions de contournement moins chères avant de réinstaller :

  • masquer le GPU non pris en charge de MIGraphX afin qu’il se lie à une carte prise en charge (trouver les indices avec rocminfo | grep -E "Marketing Name|gfx") :

    HIP_VISIBLE_DEVICES=0 darktable
    
  • remplacer la version gfx – RDNA 3 est principalement compatible binaire avec gfx1100, donc les noyaux groupés fonctionnent souvent :

    HSA_OVERRIDE_GFX_VERSION=11.0.0 darktable
    

Si rien de tout cela n’aide, le référentiel ROCm d’AMD fournit des builds avec une couverture par architecture plus large. Parcourez https://repo.radeon.com/rocm/manylinux/, trouvez le répertoire rocm-rel-XYZ/ correspondant à votre version ROCm installée, téléchargez le répertoire cp312 onnxruntime_rocm-*.whl et extrayez-le de la même manière que la roue PyPI.

🔗construire AMD à partir de la source

Lorsque même les binaires du référentiel AMD ne correspondent pas à votre système (ROCm personnalisé, une distribution inhabituelle), compilez ONNX Runtime sur votre ROCm installé. À partir d’une source darktable :

./tools/ai/install-ort-amd-build.sh

Nécessite cmake 3.26+, un compilateur C++, python3 et git. Cela prend 10–20 minutes.

🔗Limite de débit de l’API GitHub

Pour CUDA 13, le script d’installation interroge api.github.com pour connaître la version la plus récente. GitHub limite les appelants non authentifiés à 60 requêtes par heure par IP source. Sur les NAT partagés (réseaux d’entreprise, VPN, machines virtuelles cloud), cette limite est rapidement épuisée par d’autres utilisateurs sur la même IP, et le script échoue avec un message clair pointant ici.

Deux solutions :

  • définissez GITHUB_TOKEN avec n’importe quel jeton d’accès personnel (aucune portée requise pour les dépôts publics) avant de le re-exécuter – augmente la limite à 5 000 requêtes/heure authentifiées.

  • installer manuellement – pour l’archive tar CUDA 13, il s’agit de tar xzf plus une copie. Le script d’installation affiche les mêmes instructions en cas d’échec.

Les sources PyPI (AMD, Intel, NVIDIA CUDA 12) n’ont pas de limite de débit publiée et ne sont pas affectées.

🔗après avoir installé un nouveau ONNX Runtime

Lorsque darktable démarre avec une nouvelle bibliothèque ONNX Runtime, la liste déroulante accélération IA dans les préférences IA se remplit à nouveau uniquement avec les fournisseurs que la bibliothèque annonce réellement. Les sélections plus anciennes qui ne sont plus prises en charge sont automatiquement commutées vers un autre fournisseur GPU disponible ou vers auto s’il ne reste plus de GPU.

Entre l’installation et le redémarrage, la liste déroulante affiche un indice redémarrer pour appliquer à côté du nom du fournisseur – un rappel que l’environnement d’exécution actuellement chargé est obsolète.

translations