2015-10-14 11 views
15

Ho una macchina con diverse GPU. La mia idea è di collegarli a diverse istanze di finestra mobile per utilizzare tali istanze nei calcoli CUDA (o OpenCL).Come eseguire GPGPU nell'immagine della finestra mobile con diversi dal kernel host e dalla versione del driver della GPU

Il mio obiettivo è impostare l'immagine di una finestra mobile con i vecchi driver video AMD piuttosto vecchi (13.04). La ragione è semplice: l'aggiornamento alla versione più recente del driver ha rotto il mio programma OpenCL (a causa di driver AMD linux buggy).

Quindi la domanda è seguente. È possibile eseguire l'immagine docker con vecchi Ubuntu, vecchi kernel (3.14 per esempio) e vecchi AMD (fglrx) su una nuova installazione di Arch Linux con nuovi kernel 4.2 e nuovi driver AMD (fglrx) nel repository?

P.S. Ho provato this answer (con schede Nvidia) e sfortunatamente deviceQuery nell'immagine finestra mobile non vedo alcun dispositivo CUDA (come è successo con alcuni commentatori della risposta originale) ...

P.P.S. La mia configurazione:

  1. CPU: Intel Xeon E5-2670
  2. GPU:

    • 1 x Radeon HD 7970

      $ lspci -nn | grep Rad 
          83:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM/R9 280X] [1002:6798] 
          83:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT HDMI Audio [Radeon HD 7970 Series] [1002:aaa0] 
      
    • 2 x GeForce GTX Titan Nero

+3

Sono quasi sicuro che tutti i contenitori docker su una macchina specifica [devono utilizzare lo stesso kernel] (http://stackoverflow.com/questions/25444099/why-docker-has-ability-to-run-different-linux -distribuzione) come l'host. È possibile eseguire una "immagine" di Ubuntu su un setup di Arch Linux, ma devono usare lo stesso kernel (il kernel host). Penso che la tua domanda su deviceQuery all'interno di un'immagine docker sia un problema a parte. Non è chiaro per me che questa è una domanda di programmazione. –

+0

Alcune app dipendono fortemente dalla versione del kernel (e quindi dalle capacità). Quindi, come è possibile condividere il kernel (se sono molto diversi)? È vero che dovrei eseguire lo stesso sistema operativo "immagine" come sistema operativo host? Penso che sia piuttosto una domanda di programmazione almeno nel senso DevOps. – petRUShka

risposta

2

Con docker ci si basa sulla virtualizzazione a livello di sistema operativo. Ciò significa che usi lo stesso kernel in tutti i contenitori. Se desideri eseguire diversi kernel per ciascun contenitore, probabilmente dovrai utilizzare la virtualizzazione a livello di sistema, ad esempio KVM, VirtualBox. Se il tuo setup supporta il VT-d di Intel, puoi passare la GPU come dispositivo PCIe al contenitore (una terminologia migliore in questo caso è Virtual Machine).

+0

Quindi la tua risposta è: "è impossibile", è vero? – petRUShka

+0

In base al tuo requisito di voler eseguire diversi kernel; sì – hbogert

Problemi correlati