De enorme diversiteit aan systemen en de duidelijke verschillen tussen OpenCL-leveranciers en stuurprogrammaversies maken het onmogelijk om een uitgebreid overzicht te geven van hoe OpenCL moet worden ingesteld. We kunnen jou alleen een voorbeeld geven, in dit geval voor NVIDIA-stuurprogrammaversie 331.89 op Ubuntu 14.04. We hopen dat dit een basisintroductie zal zijn en jou zal helpen bij het oplossen van eventuele problemen die specifiek zijn voor jouw installatie.
Het principe van de OpenCL-functiestroom is als volgt:
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
.
Bij het opstarten van het systeem moeten de vereiste speciale apparaatbestanden (/dev/nvidia*
) worden aangemaakt. Als dit niet standaard op jouw systeem gebeurt, is de eenvoudigste manier om ze in te stellen en ervoor te zorgen dat alle modules zijn geladen, door het pakket nvidia-modprobe
te installeren.
Een gebruikersaccount dat gebruik moet maken van OpenCL vanuit Ansel, moet lees-/schrijftoegang hebben tot de speciale apparaatbestanden van NVIDIA. Op sommige systemen bieden deze bestanden standaard toegang tot lezen en schrijven over de hele wereld, waardoor problemen met de machtiging worden vermeden, maar het kan ter discussie zijn in termen van systeembeveiliging. Andere systemen beperken de toegang tot een gebruikersgroep, b.v. “video”. In dit geval moet jouw gebruikersaccount lid zijn van die groep.
Samenvattend waren de pakketten die in dit specifieke geval moesten worden geïnstalleerd:
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)
De lijst met NVIDIA-gerelateerde kernelmodules zoals gerapporteerd door lsmod was:
De lijst met speciale NVIDIA-gerelateerde apparaatbestanden (ls -l /dev/nvidia*
) zou er als volgt uit moeten zien:
Beware that the major/minor numbers (e.g. 250/0
for /dev/nvidia-uvm
in this example) may vary depending on your system.