2009-12-24 4 views
5

Ho un'intervista in arrivo tra una settimana per una posizione entry level che prevede la programmazione in CUDA (si spera con C).Domande di intervista sulla programmazione CUDA?

Mi chiedevo se qualcuno può suggerire alcune domande di intervista che posso aspettarmi durante l'intervista.

Ho seguito la guida di programmazione ufficiale, ma non sono così comodo in questo momento.

Grazie.

+0

Hai provato a scrivere qualcosa di non banale? Simulazione N-body o qualcosa del genere? CUDA richiede di pianificare attentamente l'accesso alla memoria cooperativa al fine di ottenere qualsiasi tipo di performance da esso. Senza alcuna esperienza pratica verrai sconfitto. – drxzcl

+0

Purtroppo, no. La simulazione N-body e il fenomeno sono troppo complessi per me! ma sono stato dilettarsi in giro con CUDA per circa 4-5 mesi.Ho scritto una serie di programmi per capire bene la routine e l'architettura. – Gitmo

+0

Non intendo specificamente N-body, solo qualsiasi programma che sfrutti la cooperazione tra thread sarebbe un bonus. In caso contrario, non si otterrà alcun aumento significativo delle prestazioni dalla GPU. N-body è solo un (semplice) esempio, ma anche gli altri vanno bene. La moltiplicazione della matrice, la valutazione delle matrici di distanza, quel tipo di cosa. Se si tenta di imparare CUDA memorizzando la guida dell'utente, si bloccherà e si brucerà. – drxzcl

risposta

16

Alcune domande Penso che si dovrebbe preparare sono:

  • Come molti diversi tipi di memorie sono in una GPU?
  • Che cosa significa coalesced/uncoalesced?
  • È possibile implementare un kernel di trasposizione matrix?
  • Che cos'è un ordito?
  • Quanti orditi possono essere eseguiti contemporaneamente all'interno di un multiprocessore?
  • Qual è la differenza tra un blocco e un thread?
  • Il thread può comunicare tra di loro? e blocchi?
  • Puoi descrivere come funziona una cache?
  • Qual è la differenza tra memoria condivisa e registri?
  • Quali algoritmi hanno prestazioni migliori sulla gpu? dati vincolati o cpu vincolati?
  • Quali passi eseguirai per port di un'applicazione su cuda?
  • Che cos'è una barriera?
  • Che cos'è un flusso?
  • Può descrivere che cosa significa occupazione di un kernel?
  • Cosa significa struttura di matrice contro matrice di strutture?
+0

@fabrizioM Grazie mille! Questo è stato davvero molto utile. Posso rispondere a molti di questi :) Mi sento un po 'fiducioso ora. – Gitmo

+7

Dovrebbe essere un'intervista, non un quiz show. Vuoi chiedere qualcosa che richiede loro di mostrare come girano le ruote nella loro testa, non verificare di aver letto la guida dell'utente. – drxzcl

3

Se si tratta di un ruolo scientifico poi si aspettano domande sul virgola mobile e precisione numerica, in particolare si dovrebbe guardare il campione riduzione della NVIDIA SDK dal momento che illustra un intero carico di punti nel post di Fabrizio troppo.

5

"Bisogna N vettori di lunghezza M (N >> M). Dimmi come si dovrebbe andare sulla progettazione di un kernel per valutare la matrice di distanza. Prestare particolare attenzione al modo in cui il problema è suddivisa e al modo in cui la cooperazione thread può essere utilizzato per migliorare occupazione.

Come sarebbe la tua risposta a questa domanda se il cambiamento M >> N?"

L'idea qui è di non farti scrivere codice, ma di farti pensare ad alta voce. Questo dimostra che sai davvero come usare la tecnologia GPGPU e non stai semplicemente rigurgitando la guida per l'utente.