La grande diversité des systèmes, les différences marquées entre les vendeurs OpenCL et les versions de pilotes, ne permettent pas de donner une vue d’ensemble de la manière de configurer OpenCL. Nous ne pouvons que vous donner un exemple pour la version du pilote NVIDIA 331.89 sur Ubuntu 14.04. Nous espérons que cela servira d’introduction de base et vous aidera à résoudre tous les problèmes spécifiques à votre configuration.
Le principe de fonctionnement d’OpenCL ressemble à ceci :
Ansel > libOpenCL.so > libnvidia-opencl.so.1 > kernel driver module(s) > GPU
Ansel dynamically loads
libOpenCL.so
– a system library that must be accessible to the system’s dynamic loader (ld.so
).libOpenCL.so
reads the vendor-specific information file (/etc/OpenCL/vendors/nvidia.icd
) to find the library that contains the vendor-specific OpenCL implementation.The vendor-specific OpenCL implementation comes as a library
libnvidia-opencl.so.1
(which in our case is a symbolic link tolibnvidia-opencl.so.331.89
).libnvidia-opencl.so.1
needs to talk to the vendor-specific kernel modulesnvidia
andnvidia_uvm
via device special files/dev/nvidia0
,/dev/nvidiactl
, and/dev/nvidia-uvm
.
Au démarrage du système les fichiers spéciaux de périphériques requis (/dev/nvidia*
) doivent être créés. Si cela ne se produit pas par défaut sur votre système, le moyen le plus simple pour les définir et pour être sûr que tous les modules seront chargés est d’installer le paquet nvidia-modprobe
.
Un compte utilisateur qui souhaite faire usage d’OpenCL à partir de Ansel doit avoir des droits en lecture et en écriture sur les fichiers spéciaux de périphériques de NVIDIA. Sur certains systèmes ces fichiers autorisent par défaut un accès universel en lecture et écriture, ce qui évite les problèmes de permission mais peut être discutable en termes de sécurité du système. D’autres systèmes restreignent l’accès aux utilisateurs d’un groupe, par exemple «video». Dans ce cas votre compte utilisateur doit appartenir à ce groupe.
En résumé, les paquets qui doivent être installés dans ce cas particulier sont :
1nvidia-331 (331.89-0ubuntu1~xedgers14.04.2)
2nvidia-331-dev (331.89-0ubuntu1~xedgers14.04.2)
3nvidia-331-uvm (331.89-0ubuntu1~xedgers14.04.2)
4nvidia-libopencl1-331 (331.89-0ubuntu1~xedgers14.04.2)
5nvidia-modprobe (340.24-1)
6nvidia-opencl-dev:amd64 (5.5.22-3ubuntu1)
7nvidia-opencl-icd-331 (331.89-0ubuntu1~xedgers14.04.2)
8nvidia-settings (340.24-0ubuntu1~xedgers14.04.1)
9nvidia-settings-304 (340.24-0ubuntu1~xedgers14.04.1)
10nvidia-libopencl1-331 (331.89-0ubuntu1~xedgers14.04.2)
11nvidia-opencl-dev:amd64 (5.5.22-3ubuntu1)
12nvidia-opencl-icd-331 (331.89-0ubuntu1~xedgers14.04.2)
13opencl-headers (1.2-2013.10.23-1)
La liste des modules du noyau concernant NVIDIA affichée par la commande lsmod est :
La liste des fichiers spéciaux de périphériques liés à NVIDIA (obtenue par la commande ls -l /dev/nvidia*
) devrait ressembler à ceci :
Beware that the major/minor numbers (e.g. 250/0
for /dev/nvidia-uvm
in this example) may vary depending on your system.