Logo Blogo

CUDA di nVidia può aiutare a rendere più “rapido” il kernel di Linux

Pubblicato: 08 mag 2011 da Federico Moretti

nVidia CUDAKGPU è un progetto per sfruttare nvcc, il compilatore di nVidia CUDA, come strumento di cross-compilazione per il kernel di Linux. Secondo gli sviluppatori è un metodo efficace per rendere davvero “parallelizzato” l’intero processo: la GPU concorrerebbe, così, alla compilazione all’esecuzione del kernel insieme alla GPU CPU. Rendendo tutto più veloce.

Per poter utilizzare KGPU è necessario disporre dei driver proprietari di nVidia e del SDK di Computed Unified Device Architecture (CUDA). Gli sviluppatori di KGPU hanno utilizzato, per il testing, una GeForce GTX480 con CUDA 3.2, sul kernel Linux 2.6.38. È sufficiente disporre di una scheda video che supporti CUDA 2.0 o superiore.

L’ultima release di CUDA è la 4.0: potete verificare la compatibilità con la scheda video in molti modi, ad esempio avviando il benchmark di python-opencl. La “parallelizzazione” dei processi con nVidia è un ambito sperimentato anche da Amazon su AWS ed EC2 con Tesla. KGPU è un progetto più accessibile agli utenti desktop di Linux.

Aggiornamento: Ho corretto la parte relativa alla compilazione in seguito ai feedback e a un controllo più attento del funzionamento di KGPU. Poi, c’era un refuso tra GPU/CPU.

Via | Phoronix

1 stelle2 stelle3 stelle4 stelle5 stelle (nessun voto)
condividi condividi
19 commenti

Commenti dei lettori

(Inserisci un commento - Nascondi commenti anonimi)
  • Mah566656

    08 mag 2011 - 11:01 - #1
    0 punti
    Up Down

    Ma più veloce in esecuzione o in compilazione? Non è chiaro.

    Credo che sia solo in compilazione, e chissenefrega di questo gran vantaggio..

  • Profilo di romfladef

    romfladef

    08 mag 2011 - 11:30 - #2
    0 punti
    Up Down

    Da ciò che dicono, in esecuzione: per quanto mi riguarda, ed è quanto ho scritto nell’articolo, in compilazione. Non vedo come sia possibile renderlo più veloce, altrimenti. A meno che poi non sia eseguito anche dalla GPU, con una perdita di prestazioni su video, ecc. (e non lo vedrei come un vantaggio per il desktop).

  • kiber

    08 mag 2011 - 12:07 - #3
    0 punti
    Up Down

    se ho capito bene questo strumento permette di inoltrare l’esecuzione di determinate funzioni di sistema verso la GPU. Se fosse così si avrebbe il vantaggio di sfruttare la potenza delle GPU senza che il programma sia scritto specificatamente per la CPU quindi non mi sembra un progetto malvagio.
    Se fosse solo per la compilazione non ritengo porterebbe un grosso vantaggio visto che il kernel non si compila ogni giorno

  • Profilo di billy-belial

    billy-belial

    08 mag 2011 - 12:18 - #4
    0 punti
    Up Down

    Ma che fine hanno fatto tutti quei progetti sui micro kernel che avrebbero dovuto sostituire quelli monolitici?

  • MicheleR

    08 mag 2011 - 12:34 - #5
    0 punti
    Up Down

    http://code.google.com/p/kgpu/ parla di E-SE-CU-ZIO-NE

  • Profilo di romfladef

    romfladef

    08 mag 2011 - 12:44 - #6
    0 punti
    Up Down

    Sì, come ho ribadito nel commento precedente, parlano d’esecuzione: il che è plausibile, ma per un utilizzo come desktop andrebbe a scapito d’altri processi (IMHO). Comunque lo proverò, tanto per… resta il fatto che, se occupi parte della GPU per il kernel, questa non sarà disponibile per altri utilizzi molto comuni.

  • maddaix

    08 mag 2011 - 15:20 - #7
    0 punti
    Up Down

    insomma sfrutta la GPU come un “coprocessore programmabile”, in questo caso la potenza viene dalla moltitudine di piccole ALU presenti nella GPU. L’idea e’ buona, ma serve sviluppare le varie librerie soft da caricare di volta in volta sulla GPU per poterla sfruttare. Ovvio che ammazzerebbe la graqfica ma si potrebbe decidere da software se, come e quanta GPU dedicare alla grafica e quanta al calcolo non-grafico, oppure inglobare un core gpu all’interno della cpu come core di calcolo o inglobarlo nel chipset o saldato sulla piastramadre.

  • PD

    08 mag 2011 - 15:45 - #8
    0 punti
    Up Down

    Che gran brutta idea.

  • Profilo di giuseppe_dandrea

    giuseppe_dandrea

    08 mag 2011 - 15:56 - #9
    0 punti
    Up Down

    L’articolo di Phoronix parla di fare eseguire parti del kernel alla GPU. L’idea sarebbe non solo eseguire molti più processi contemporaneamente, ma anche “suddividere” alcuni processi fra i CUDA cores della scheda video per rendere il kernel veramente parallelizzato. L’impatto sulla performance grafica non è necessariamente penalizzante, pensate a quanto tempo i processori grafici utilizzano fra 5 ed il 10 % della propria potenza fra l’altro non sarebbe tutto il kernel ad essere eseguito dalla GPU ma solo alcune porzioni, dunque l’influsso sulla grafica dovrebbe essere limitato. Tutto molto bello, ma ci sono un paio di problemi:

    1) I driver open-source al momento non supportano il GPGPU e dubito che lo faranno molto presto.

    2) Non sono una cima nel SMP ma ci potrebbe essere un problema di eccessivo overhead e soprattutto quanto parte del kernel dovrebbe essere riscritta per sfruttare adeguatamente i cores della GPU?

    3) Il progetto usa CUDA e questo limita l’utilizzo di questa soluzione alle schede grafiche Nvidia. Non sarebbe meglio utilizzare OpenCl che è uno standard comune? Fra l’altro gli sviluppatori del kernel consigliano di non essere troppo dipendenti dalle architetture e dalle tecnologie “brandizzate”, e questa, mi sembra essere proprio una tecnologia di settore.

    Insomma la notizia è interessante ma niente di più.

    @billy

    I micro-kernel sono finiti nel dimenticatoio.

  • Profilo di sydneyblue120d

    sydneyblue120d

    08 mag 2011 - 22:51 - #10
    0 punti
    Up Down

    Non c’è motivo perché ci siano “rallentamenti” nella grafica… Piuttosto concordo che l’idea è potenzialmente mooolto interessante ma avrebbe molto più senso portarla avanti basandosi su OpenCL, pensate alle APU AMD Fusion di prossima uscita :)

  • Profilo di romfladef

    romfladef

    09 mag 2011 - 03:52 - #11
    0 punti
    Up Down

    Sì, Phoronix auspica a buon diritto l’uso di uno strumento diverso da CUDA: OpenCL, ad esempio, per cui comunque si dovrebbe attendere l’esito della GSoC 2011 riguardo l’integrazione con l’infrastruttura Gallium 3D di Mesa. Ho citato il benchmark di python-opencl perché il pannello di controllo dei driver proprietari nVidia riporta il numero di core per CUDA ma non la versione compatibile con la scheda video. KGPU in sostanza farebbe eseguire parti del kernel al processore grafico “limitandosi” a inserire un modulo nel kernel: non si occupa perciò della compilazione (modificherò quella parte nell’articolo). Aspetto però di provarlo.

  • an0n1m0

    09 mag 2011 - 08:40 - #12
    0 punti
    Up Down

    da possessore di una nvidia non posso che appoggiare pienamente il progetto…svilupparlo usando opencl diminuirebbe ovviamente le prestazioni…il progetto qui è per chi vuole sfruttare al massimo (quasi) le schede nvidia sul pinguino…ed è ammirevole…cioè…era ora :-)

  • maddaix

    09 mag 2011 - 10:47 - #13
    0 punti
    Up Down

    a leggere tomshw salta fuori che ’sti tizi siano stati corrot… foragg… pagat… si, insomma, “sponsorizzati” da NVIDIA: ecco perche’ niente openCL ma solo CUDA….

  • maddaix

    09 mag 2011 - 12:39 - #14
    0 punti
    Up Down

    @an0n1m0
    “svilupparlo usando opencl diminuirebbe ovviamente le prestazioni…”

    Perche’?

  • Profilo di guiodic

    guiodic

    09 mag 2011 - 14:43 - #15
    0 punti
    Up Down

    questo è un modo astuto per far dipendere Linux da un driver proprietario. E francamente sulla sua utilità nutro diversi dubbi: il kernel non esegue calcoli in virgola mobile, quale vantaggio ci sarebbe?

  • electricsheeps.com

    09 mag 2011 - 17:34 - #16
    0 punti
    Up Down

    Finalmente qualcosa di utile basato su CUDA, finora è stato sfruttato solo per estrapolare le chiavi delle reti wf-fi in termini di applicazioni pratiche…

  • maddaix

    09 mag 2011 - 17:41 - #17
    0 punti
    Up Down

    @electricsheeps.com
    “Finalmente qualcosa di utile basato su CUDA, finora è stato sfruttato solo per estrapolare le chiavi delle reti wf-fi in termini di applicazioni pratiche…”

    Prego?
    http://www.nvidia.it/object/cuda_apps_flash_new_it.html#

    http://fastra.ua.ac.be/en/index.html

    http://www.hwupgrade.it/news/sistemi/fastra-ii-un-supercomputer-con-6-geforce-gtx-295_31069.html

    etc etc

    Informarsi prima di postare, altrimenti si rischia di sparare cazzate….

  • darkcg

    10 mag 2011 - 01:30 - #18
    0 punti
    Up Down

    @maddaix: OpenCL attualmente su nVidia è implementato “sopra” CUDA. Eseguendo codice OpenCL in realtà stai comunque eseguendo codice CUDA (su nVidia). Stesso dicasi per PhysX.

  • Profilo di giuseppe_dandrea

    giuseppe_dandrea

    10 mag 2011 - 08:33 - #19
    0 punti
    Up Down

    @darkg:

    Ma utilizzando OpenCL i programmi funzionerebbero su qualsiasi piattaforma ; usando CUDA o usi Nvidia o ti attacchi.

L'email è richiesta ma non verrà mostrata ai visitatori.
Commenta questo articolo

Registrati per riservare il tuo nickname preferito su tutti i blog di Blogo e per caricare il tuo avatar. Se sei già registrato, effettua il login per usare il tuo nickname.

Si No
I commenti sono sottoposti alle linee guida per la moderazione.

Anteprima del commento