« Open-gpu-kernel-modules » : différence entre les versions
Autres actions
Aucun résumé des modifications |
|||
| Ligne 1 : | Ligne 1 : | ||
[https://github.com/aikitoria/open-gpu-kernel-modules Source]. | [https://github.com/aikitoria/open-gpu-kernel-modules Source]. | ||
== Prérequis == | == Prérequis == | ||
* Un ou plusieurs GPU NVIDIA grand public dont la fonction P2P est désactivée par le pilote. | * Un ou plusieurs GPU NVIDIA grand public dont la fonction P2P est désactivée par le pilote (architecture Turing ou plus récente). | ||
* Recommandé : activer l’option <code>Above 4G Decoding</code> dans le BIOS de la carte mère, particulièrement avec plusieurs GPU. Activer également <code>Resizable BAR</code> si la plateforme le permet. | * Recommandé : activer l’option <code>Above 4G Decoding</code> dans le BIOS de la carte mère, particulièrement avec plusieurs GPU. Activer également <code>Resizable BAR</code> si la plateforme le permet. | ||
* Recommandé : utiliser un démarrage en mode <code>UEFI</code> et désactiver le <code>CSM</code>. Cette configuration facilite la gestion de plusieurs GPU, l’allocation des ressources PCIe au-dessus de 4 Gio via <code>Above 4G Decoding</code> et l’utilisation éventuelle de <code>Resizable BAR</code> | * Recommandé : utiliser un démarrage en mode <code>UEFI</code> et désactiver le <code>CSM</code>. Cette configuration facilite la gestion de plusieurs GPU, l’allocation des ressources PCIe au-dessus de 4 Gio via <code>Above 4G Decoding</code> et l’utilisation éventuelle de <code>Resizable BAR</code> | ||
| Ligne 102 : | Ligne 102 : | ||
Si ACS est présent, les indicateurs <code>ReqRedir</code> et <code>CmpltRedir</code> doivent désormais apparaître désactivés (<code>-</code>). | Si ACS est présent, les indicateurs <code>ReqRedir</code> et <code>CmpltRedir</code> doivent désormais apparaître désactivés (<code>-</code>). | ||
== Installation == | |||
=== Pilote NVIDIA === | |||
On installe la version du pilote NVIDIA utilisée par [https://github.com/aikitoria/open-gpu-kernel-modules open-gpu-kernel-modules], ici la version <code>610.43.03</code> : | |||
# apt update && apt upgrade | |||
# apt install linux-headers-$(uname -r) | |||
# mkdir -p /opt/nvidia | |||
# cd /opt/nvidia | |||
# wget <nowiki>https://</nowiki>us.download.nvidia.com/XFree86/Linux-x86_64/610.43.03/NVIDIA-Linux-x86_64-610.43.03.run | |||
# sh NVIDIA-Linux-x86_64-610.43.03.run | |||
Lors du choix du type de module noyau, sélectionner la version <code>MIT/GPL</code> (Open Kernel Modules). | |||
=== Installation du projet === | |||
On clone le dépôt dans <code>/opt</code> : | |||
# cd /opt | |||
# git clone https://github.com/aikitoria/open-gpu-kernel-modules.git | |||
# cd open-gpu-kernel-modules | |||
On lance ensuite le script d’installation fourni par le projet : | |||
# ./install.sh | |||
Une fois l’installation terminée, on redémarre la machine : | |||
# reboot | |||
Version du 7 août 2026 à 09:08
Prérequis
- Un ou plusieurs GPU NVIDIA grand public dont la fonction P2P est désactivée par le pilote (architecture Turing ou plus récente).
- Recommandé : activer l’option
Above 4G Decodingdans le BIOS de la carte mère, particulièrement avec plusieurs GPU. Activer égalementResizable BARsi la plateforme le permet. - Recommandé : utiliser un démarrage en mode
UEFIet désactiver leCSM. Cette configuration facilite la gestion de plusieurs GPU, l’allocation des ressources PCIe au-dessus de 4 Gio viaAbove 4G Decodinget l’utilisation éventuelle deResizable BAR
Activer le mode de passthrough DMA pour l’IOMMU
- On édite Grub :
# vi /etc/default/grub
On ajoute à la variable GRUB_CMDLINE_LINUX_DEFAULT les options suivantes :
- Sur plateforme Intel :
intel_iommu=on iommu=pt
... GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" ...
- Sur plateforme AMD :
amd_iommu=on iommu=pt
... GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt" ...
- On met à jour GRUB :
# update-grub
- On redémarre :
# reboot
- Après redémarrage, on vérifie que les paramètres sont bien appliqués :
# cat /proc/cmdline
Recommandé : vérifier et désactiver ACS sur les ports PCIe concernés
Lorsque l’ACS est activé sur les ports racine ou les bridges PCIe, le trafic GPU à GPU peut être redirigé vers le complexe racine du processeur, ce qui réduit fortement la bande passante P2P.
Tous les ports PCIe n’exposent cependant pas nécessairement ACS. Il faut donc commencer par identifier les ports utilisés par les GPU, puis vérifier si ACS est présent et actif sur ceux-ci.
Identifier les ports PCIe utilisés par les GPU
- On affiche la topologie PCIe :
# lspci -tv
Exemple de résultat :
...
-[0000:00]-+-00.0 Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers
+-01.0-[01]--+-00.0 NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate]
| \-00.1 NVIDIA Corporation GA106 High Definition Audio Controller
+-01.1-[02]--+-00.0 NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate]
| \-00.1 NVIDIA Corporation GA106 High Definition Audio Controller
...
Dans cet exemple, les deux GPU sont respectivement connectés aux ports PCIe 0000:00:01.0 et 0000:00:01.1.
Vérifier l’état d’ACS
- On vérifie si les ports concernés exposent ACS :
# lspci -s 0000:00:01.0 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl' # lspci -s 0000:00:01.1 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'
Si aucune ligne n’est retournée, le port concerné n’expose pas ACS et aucune modification n’est nécessaire.
Si ACS est présent, une sortie de ce type peut apparaître :
Capabilities: [140 v1] Access Control Services
ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd- EgressCtrl- DirectTrans-
Les indicateurs ReqRedir+ et CmpltRedir+ indiquent que les fonctions de redirection ACS sont activées.
Si ces indicateurs sont actifs sur un port situé sur le chemin entre les GPU, il est recommandé de désactiver la redirection ACS.
Via le BIOS
Certaines cartes mères permettent de désactiver directement ACS sur les ports PCIe depuis le BIOS. Lorsqu’elle est disponible, cette méthode est à privilégier.
Via le noyau Linux
Le noyau Linux permet de désactiver les fonctions de redirection ACS sur des ports PCIe précis avec l’option pci=disable_acs_redir=. Cette méthode est disponible avec le noyau Debian standard et ne nécessite pas de patch.
- On édite GRUB :
# vi /etc/default/grub
On ajoute à la variable GRUB_CMDLINE_LINUX_DEFAULT l’option pci=disable_acs_redir= suivie de l’adresse des ports PCIe concernés :
... GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pci=disable_acs_redir=0000:00:01.0;0000:00:01.1" ...
Plusieurs ports peuvent être indiqués en les séparant par un point-virgule.
- On met à jour GRUB :
# update-grub
- On redémarre :
# reboot
- Après redémarrage, on vérifie que l’option a bien été appliquée :
# cat /proc/cmdline
- On vérifie ensuite à nouveau l’état ACS des ports concernés :
# lspci -s 0000:00:01.0 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl' # lspci -s 0000:00:01.1 -vv | grep -E 'Access Control Services|ACSCap|ACSCtl'
Si ACS est présent, les indicateurs ReqRedir et CmpltRedir doivent désormais apparaître désactivés (-).
Installation
Pilote NVIDIA
On installe la version du pilote NVIDIA utilisée par open-gpu-kernel-modules, ici la version 610.43.03 :
# apt update && apt upgrade # apt install linux-headers-$(uname -r) # mkdir -p /opt/nvidia # cd /opt/nvidia # wget https://us.download.nvidia.com/XFree86/Linux-x86_64/610.43.03/NVIDIA-Linux-x86_64-610.43.03.run # sh NVIDIA-Linux-x86_64-610.43.03.run
Lors du choix du type de module noyau, sélectionner la version MIT/GPL (Open Kernel Modules).
Installation du projet
On clone le dépôt dans /opt :
# cd /opt # git clone https://github.com/aikitoria/open-gpu-kernel-modules.git # cd open-gpu-kernel-modules
On lance ensuite le script d’installation fourni par le projet :
# ./install.sh
Une fois l’installation terminée, on redémarre la machine :
# reboot