darktable page lede image
darktable page lede image

Configurare OpenCL sul vostro sistema

10.2.4. Configurare OpenCL sul vostro sistema

L'enorme diversità di sistemi e le differenze tra i produttori di OpenCL e le versioni dei drivers rendono impossibile dare una visione d'insieme di come configurare OpenCL. Possiamo solo fare un esempio: in questo caso utilizzeremo un driver NVIDIA versione 331.89 su una Ubuntu 14.04. Ci auguriamo che questo esempio pratico possa servire a darvi un'impressione generale e che possa quindi aiutarvi a risolvere eventuali problemi sul vostro sistema.

Il flusso principale di una funzione OpenCL è simile a questo:

darktable -> libOpenCL.so -> libnvidia-opencl.so.1 -> kernel driver module(s) -> GPU

  • darktable carica dinamicamente libOpenCL.so, una libreria di sistema che deve essere accessibile al caricatore dinamico del vostro sistema operativo (ld.so).

  • libOpenCL.so leggerà un file con le informazioni specifiche del produttore della scheda video (/etc/OpenCL/vendors/nvidia.icd) per trovare la libreria che contiene l'implementazione specifica di OpenCL relativa a quello specifico prodotto.

  • Queste specifiche sono fornite all'interno di una libreria libnvidia-opencl.so.1 (che nel nostro caso è un link simbolico a libnvidia-opencl.so.331.89).

  • libnvidia-opencl.so.1 ha bisogno di parlare con i moduli del kernel specifici per un certo prodotto nvidia e nvidia_uvm attraverso i files dei dispositivi /dev/nvidia0, /dev/nvidiactl, e /dev/nvidia-uvm.

Al momento dell'avvio del sistema i files dei dispositivi (/dev/nvidia*) devono essere creati. Questo non accade sul vostro sistema automaticamente: il modo più facile per assicurarsi che tutti i moduli vengano caricati e che quanto sopra accada è quello di installare il pacchetto nvidia-modprobe (che, al momento della stesura di questo manuale è disponibile solo per «utopic» ma funziona bene anche con «trusty» e «Mint 17»). Potete prelevarlo in questo sito.

Un account utente che vuole fare uso di OpenCL dall'interno di darktable dovrà anche avere i permessi di lettura/scrittura ai files speciali di dispositivo NVIDIA. Su alcuni sistemi questi files hanno i permessi di lettura/scrittura abilitati per tutti - il che evita problemi di autorizzazione - ma apre il dibattito per quanto riguarda l'argomento sicurezza. Altri sistemi restringono questi permessi solo ad un gruppo di utenti (generalmente «video»). In questo caso il vostro utente dovrà essere membro di quel gruppo.

Per concludere, i pacchetti che dovrete installare in questo caso preciso sono:

  • nvidia-331 (331.89-0ubuntu1~xedgers14.04.2)

  • nvidia-331-dev (331.89-0ubuntu1~xedgers14.04.2)

  • nvidia-331-uvm (331.89-0ubuntu1~xedgers14.04.2)

  • nvidia-libopencl1-331 (331.89-0ubuntu1~xedgers14.04.2)

  • nvidia-modprobe (340.24-1)

  • nvidia-opencl-dev:amd64 (5.5.22-3ubuntu1)

  • nvidia-opencl-icd-331 (331.89-0ubuntu1~xedgers14.04.2)

  • nvidia-settings (340.24-0ubuntu1~xedgers14.04.1)

  • nvidia-settings-304 (340.24-0ubuntu1~xedgers14.04.1)

  • nvidia-libopencl1-331 (331.89-0ubuntu1~xedgers14.04.2)

  • nvidia-opencl-dev:amd64 (5.5.22-3ubuntu1)

  • nvidia-opencl-icd-331 (331.89-0ubuntu1~xedgers14.04.2)

  • opencl-headers (1.2-2013.10.23-1)

La lista dei moduli del kernel relativi a NVIDIA così come riportati da lsmod è:

nvidia
nvidia_uvm

La lista dei files di dispositivo NVIDIA (ls -l /dev/nvidia*) dovrebbe essere la seguente:

crw-rw-rw- 1 root root 195,   0 Jul 28 21:13 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Jul 28 21:13 /dev/nvidiactl
crw-rw-rw- 1 root root 250,   0 Jul 28 21:13 /dev/nvidia-uvm

Ricordate che il major/minor number (in questo esempio 250/0 per /dev/nvidia-uvm) potrebbero essere diversi in base al vostro sistema.