Domanda

Sto tentando di ottimizzare un'applicazione nella modellazione 3D in tempo reale. La parte di calcolo dell'applicazione viene visualizzata quasi interamente sulla GPU in CUDA. L'applicazione richiede la soluzione di una piccola (6x6) Doppia precisione Symmetric Positive Symmetrica Symmear System Ax= B 500+ volte al secondo. Attualmente questo viene fatto con una biblioteca algebra lineare basata sulla CPU efficiente che utilizza Cholesky ma richiede la copia dei dati dalla CPU - GPU e torna alla GPU centinaia di volte al secondo e il sovraccarico del kernel lancia ogni volta ecc.

Come posso calcolare la soluzione al sistema lineare sulla GPU esclusivamente senza dover prendere i dati sulla CPU? Ho letto un po 'della biblioteca del magma, ma sembra usare algoritmi ibridi piuttosto che gli algoritmi della GPU.

Sono preparato per il fatto che la soluzione di un singolo sistema lineare sulla GPU sarà molto più lento che con la libreria basata sulla CPU esistente, ma voglio vedere se ciò può essere compensato rimuovendo il Comunicazione dei dati tra l'host e il dispositivo e il sovraccarico di lanci del kernel, ecc. Centinaia di volte al secondo. Se non c'è la GPU solo un'alternativa di lapack là fuori, come dovrei implementare qualcosa per risolvere questo particolare caso 6x6 solo sulla GPU? Potrebbe essere fatto senza un grande investimento tempo con le librerie GPU Blas ad esempio?

È stato utile?

Soluzione

NVIDIA Codice Pubblicato per un'ascia batched= B SOLVER al sito Web Sviluppatore registrato Last caduta. Questo codice funziona per matrici generiche e dovrebbe funzionare abbastanza bene per le vostre esigenze fornite è possibile espandere le matrici simmetriche a matrici complete (che non dovrebbe essere un problema per un 6x6?). Poiché il codice esegue il pivoting, che non è necessario per le matrici precise positive, non è ottimale per il tuo caso, ma potresti essere in grado di modificarlo ai propri scopi poiché il codice è in una licenza BSD.

Il sito Web dello sviluppatore standard di NVIDIA sta vivendo alcuni problemi al momento. Ecco come è possibile scaricare il codice del risolutore bitched in questo momento:

(1) Vai a http://www.nvidia.com/content /cuda/cuda-toolkit.html

(2) Se si dispone di un account NVDeveloper esistente (ad esempio tramite partner.nvidia.com) clicca sul link "Login to NvDeveloper" verde sulla metà destra dello schermo. Altrimenti fare clic su "Iscriviti NvDeveloper" per richiedere un nuovo account; Le richieste di nuovi account sono tipicamente approvate entro un giorno lavorativo.

(3) Accedi al prompt con il tuo indirizzo email e password

(4) C'è una sezione sul lato destro intitolato "Download più recenti". Il quinto oggetto dall'alto è "Solver bitched". Clicca su questo e ti porterà alla pagina di download per il codice.

(5) Fare clic sul link "Download", quindi fai clic su "Accetta" per accettare i termini della licenza. Il tuo download dovrebbe iniziare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top