Domanda

Cosa ne pensi? Cosa sarebbe più veloce e quanto più veloce: fare moltiplicazione a matrice sparsa (CSR) (con un vettore) sulla GPU o sulla CPU (multithread)?

È stato utile?

Soluzione

Dipende dalle dimensioni della matrice e dal numero di iterazioni che devono essere eseguite. Questo perché è necessario copiare i dati della matrice dalla memoria della CPU alla memoria GPU e copiare i risultati dalla GPU alla CPU. Se eseguirai una sola iterazione sulla matrice, è sempre meglio farlo sulla CPU piuttosto che farlo su una GPU. Inoltre, la GPU soffre di tempo di avvio. Quindi, se hai più iterazioni da eseguire, scegli GPU, altrimenti la mia opzione sarà CPU. Allo stesso modo la dimensione della matrice influisce anche sulle prestazioni a causa della copia dei dati.

Altri suggerimenti

La mia ipotesi è che non ci sarebbe una grande vittoria con un'implementazione della GPU, dal momento che non hai il tipo di struttura di dati omogenei che si presta all'elaborazione embarletta.

Penso che Veda colpisca l'unghia in testa. Non sono affatto un esperto su questo, ma credo che ci sia un sovraccarico nel mettere il funzionamento della GPU e se la dimensione del calcolo non è abbastanza grande, le vincite dell'elaborazione della GPU vengono persa nel sovraccarico. Tuttavia, se hai qualcosa come uno scheletro di personaggi in cui hai molte matrici che vengono moltiplicate, questo sarebbe più adatto per la GPU. Attualmente sto anche cercando queste cose per un mio progetto.

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