2010-01-14 18 views
10

Il mio programma OpenCL può trovare il dispositivo GPU quando sono connesso alla console, ma non quando sono connesso in remoto con ssh. Inoltre, se eseguo il programma come root nella sessione ssh, il programma può trovare la GPU.Come si esegue il test di OpenCL su GPU quando si accede da remoto su Mac?

Il computer è un Mac Snow Leopard con una GPU GeForce 9400.

Se eseguo il programma (vedi sotto) dalla console o come utente root, l'uscita è la seguente (si noti la linea "GeForce 9400"):

2 devices found 
Device #0 name = GeForce 9400 
Device #1 name = Intel(R) Core(TM)2 Duo CPU  P8700 @ 2.53GHz 

ma se si tratta solo di me, nel corso ssh, non v'è alcuna GeForce 9400 entrata:

1 devices found 
Device #0 name = Intel(R) Core(TM)2 Duo CPU  P8700 @ 2.53GHz 

vorrei testare il mio codice sulla GPU senza dover essere root. È possibile? Semplificata programma ritrovamento GPU di seguito:

#include <stdio.h> 
#include <OpenCL/opencl.h> 

int main(int argc, char** argv) { 
    char dname[500]; 
    size_t namesize; 
    cl_device_id devices[10]; 
    cl_uint num_devices; 
    int d; 

    clGetDeviceIDs(0, CL_DEVICE_TYPE_ALL, 10, devices, &num_devices); 
    printf("%d devices found\n", num_devices); 
    for (d = 0; d < num_devices; ++d) { 
     clGetDeviceInfo(devices[d], CL_DEVICE_NAME, 500, dname, &namesize); 
     printf("Device #%d name = %s\n", d, dname); 
    } 
    return 0; 
} 

EDIT: Ho trovato essenzialmente la stessa domanda che si pone sul nvidia's forums. Sfortunatamente, l'unica risposta era della forma "questo è il forum sbagliato".

risposta

2

Su Windows, sembra che l'accesso remoto alla GPU potrebbe non essere possibile, secondo this forum thread.

Quel post riguarda Windows e non Mac, quindi non risponde direttamente a questa domanda. Poiché nessuno ha ancora fornito alcuna risposta, questa è l'informazione più pertinente che ho trovato finora.

-2

OK, non so Jack su Snow Leopard o OpenCL, ma ...

Ho sentito dire che il desktop di Mac è basi su una versione di XWindows. In questo caso, questo articolo: http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=19 che discute "come modificare le impostazioni di sicurezza per consentire l'accesso alla sessione remota al server X in esecuzione sul sistema". potrebbe essere utile.

Poiché questo articolo riguarda le applicazioni ATI Stream (anziché OpenCL) e Linux (anziché MacOS) potrebbe non essere utile, ma date un'occhiata e giudicate voi stessi.

+0

Grazie per il suggerimento. Non avevo mai visto quel documento prima. Le soluzioni presentate per Linux riguardano la modifica delle autorizzazioni su/dev/nvidiactl. Sfortunatamente non sono riuscito a trovare quel dispositivo né altre cose suggestive sul Mac. Le soluzioni per Windows si riducono all'utilizzo di VNC, che suona come un grande suggerimento. Sfortunatamente ho provato VNC al Mac, e comunque non ha aiutato. Lo stesso desktop sulla console trova la GPU. Oltre VNC, nessuna GPU trovata. A meno che non sia root. Presumibilmente c'è un permesso da qualche parte ... –

+1

Il desktop del Mac non è basato su XWindows - il design e l'architettura sono piuttosto diversi. C'è in realtà un pacchetto separato sul disco di sistema chiamato X11 che puoi installare per supportare le applicazioni X (ad esempio molte app Unix tradizionali), che sono ospitate all'interno del sistema di finestre Mac nativo. – gavinb

2

Mi aspetto che la risorsa GPU sia di proprietà della sessione desktop (che è sempre presente, anche se per mostrare la schermata di accesso), motivo per cui non è disponibile per le sessioni remote. Forzare il problema cambiando le autorizzazioni sta sovvertendo il sistema ed è destinato a causare problemi.

Hai provato a eseguire Condivisione schermo per accedere in remoto al Mac anziché a ssh? In questo modo è possibile eseguire l'app sul desktop normalmente e visualizzare i risultati (potenzialmente con una certa latenza, a seconda della connessione di rete).

1

Qual è lo stato della macchina quando si sta tentando di eseguire l'ssh su di esso? Con i miei Mac, se viene visualizzata solo la schermata di accesso, non posso ssh, e se il mio account utente è connesso al desktop, allora un programma richiamato da ssh può accedere alla gpu. Non ho ancora provato a creare un nuovo account utente sul mio computer. Potresti voler configurare l'accesso automatico per il tuo account e quindi richiedere semplicemente una password per riattivare lo screensaver. Questo dovrebbe darti sicurezza accettabile e comunque assicurarti che il tuo account utente abbia accesso alla GPU.

0

Hai provato ad accedere localmente E remotamente, allo stesso tempo?Se il problema è che la proprietà della GPU è legata all'utente della GUI della console locale e devi accedere in remoto tramite ssh, questo dovrebbe funzionare; a condizione che il computer non venga utilizzato da un altro utente, spostando il login locale.

0

Provare a utilizzare sudo. La GPU è solo un altro dispositivo per il sistema operativo.

1

Hai provato VNC? So che ho bisogno di usare VNC per usare la GPU su macchine Windows in passato. Il desktop remoto su Windows non funzionerà in quanto utilizza la scheda grafica locale.

0

Proprio ieri ho effettuato l'accesso al mio computer di lavoro (OS X 10.8.2) tramite SSH e il programma opencl ha funzionato bene con la GPU. Penso che ci sia solo una delle ragioni del tuo problema: diritti insufficienti per accedere all'hardware della GPU. Prova ad accedere come utente con i diritti di amministratore o eseguire il programma tramite sudo.

+0

Quando ho detto "se eseguo il programma come root nella sessione ssh, il programma può trovare la GPU" nella mia domanda, intendevo che l'amministratore può di fatto accedere alla GPU. Volevo una soluzione che non richieda privilegi elevati. –

Problemi correlati