Compiler Stable Diffusion avec CUDA sur Linux (Ancienne carte graphique 1080TI)

Avec les anciennes cartes graphiques NVIDIA, quelques subtilités sont à prendre en compte : versions de CUDA, architecture GPU, pilotes et options de compilation peuvent nécessiter des ajustements spécifiques.
Dans ce topic, nous allons voir quelles adaptations sont nécessaires pour faire fonctionner et compiler Stable Diffusion correctement sur les anciennes générations de cartes NVIDIA.
Prérequis :
- Driver nvidia 580xx
- CUDA 12.9
- GCC 14
mon sd-cli
sd-cli --version
stable-diffusion.cpp version master-929-3f8527a, commit 3f8527a4
Il est possible que cette méthode ne fonctionne pas totalement chez vous, mais je vais quand même partager mon retour d’expérience avec une NVIDIA GTX 1080 Ti.
il faut intaller CUDA 12.9 ou trouver le paquet içi https://developer.nvidia.com/cuda-12-9-0-download-archive
ou sur Arch Linux yay -S cuda-12.9
avec des export particulier à l'environnement mon driver nvidia est la 580.178.04
J’ai dû définir des variables d’environnement afin d’indiquer explicitement les versions des paquets GCC à utiliser. Je ne suis pas certain que ce soit réellement nécessaire, mais dans le doute, je préfère les préciser.
export CC=/usr/bin/gcc-14
export CXX=/usr/bin/g++-14
export CUDAHOSTCXX=/usr/bin/g++-14
Après cela, vous n’avez plus qu’à compiler Stable Diffusion normalement. et suivre ce tutoriel : https://infos.center/r/llm/comments/87/compiler-stable-diffusion-avec-cuda-sur-linux
Malheureusement, la GTX 1080 Ti reste limitée par son architecture Pascal (Compute Capability 6.1). CUDA 12.9 est donc une version particulièrement importante pour ce GPU : les versions plus récentes de CUDA abandonnent progressivement la compilation hors ligne pour les anciennes architectures.
Installer CUDA 13.x ou une version supérieure ne permettra donc pas de profiter automatiquement des dernières fonctionnalités. Le toolkit peut éventuellement être utilisé pour certaines parties du développement, mais le support de la GTX 1080 Ti reste limité par son architecture matérielle.
Cela a également un impact sur Stable Diffusion.cpp : certaines optimisations et fonctionnalités CUDA dépendent directement de la version du toolkit, de l'architecture GPU ciblée et du code utilisé par le backend CUDA. Les fonctionnalités développées pour des architectures plus récentes peuvent donc être indisponibles, moins optimisées, voire incompatibles avec une GTX 1080 Ti.
Pour une GTX 1080 Ti, il est donc préférable de rester sur une configuration CUDA adaptée à Pascal, notamment CUDA 12.9, et de compiler Stable Diffusion.cpp avec l'architecture 61 :
-DCMAKE_CUDA_ARCHITECTURES=61
La 1080 Ti reste parfaitement exploitable pour Stable Diffusion, mais il faut garder à l'esprit qu'elle ne bénéficiera pas des fonctionnalités et optimisations spécifiques aux architectures NVIDIA plus récentes.
En espérant que ce retour d’expérience vous aura été utile.
PS : petite recommandation, la GTX 1080 Ti dispose de seulement 11 Go de VRAM. Pour éviter les erreurs « out of memory », je vous conseille de faire tourner le VAE sur le CPU.
ce qui permet de generer des images plus grand si besoin
PROMPT="${1:- un astronaute sur la lune, \
combinaison spatiale blanche avec des accents dorés, \
tenant une pancarte jaune vif, \
texte noir en majuscules 'IGZOK EST LE ROI DU MONDE', \
police épaisse, \
logo doré 'IGZOK' gravé sur un rocher lunaire, \
ciel étoilé bleu profond, \
Terre visible au loin, \
éclairage orange dramatique}"
OUTPUT_NAME="${2:-output.png}"
sd-cli \
--diffusion-model models/{votre_df-model} \
--vae models/{votre_vae} \
--llm models/{votre_model} \
--backend "vae=cpu,diffusion=cuda,te=cuda" \
-p "$PROMPT" \
-n "blurry, low quality, artifacts" \
--cfg-scale 4.5 \
--steps 25 \
--diffusion-fa \
-H 640 -W 640 \
-o "output/${OUTPUT_NAME}"
