2013-05-04 10 views
12

Per una matrice A, l'documentation solo che il parametro di dimensione corrispondente porta lda riferisce:chiarimento della dimensione principale in CUBLAS quando trasposizione

leader dimensione della matrice bidimensionale utilizzata per memorizzare la matrice A

Quindi presumo che questo sia solo il numero di righe di A dato il formato di archiviazione principale della colonna di CUBLAS. Tuttavia, quando si considera Op(A), a cosa si riferisce ora la dimensione principale?

risposta

10

Nessuna modifica. La dimensione iniziale sempre si riferisce alla lunghezza della prima dimensione della matrice. I flag di ordine dei dati (normale, trasposizione, coniugato) indicano solo a BLAS come vengono archiviati i dati all'interno dell'array. Non hanno alcun effetto sulla matrice stessa, che è sempre ordinata come colonna principale e richiede un valore LDA per l'indicizzazione in 2D.

Quindi, se i dati della matrice sono memorizzati in forma trasposta o meno, un array m x n ha sempre LDA> = m.

+2

Dalla tua risposta, ero pronto a concludere che LDA = m. Perché il> firmare lì? :/+1 btw. Forse questo risponde alla domanda dopotutto: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=217 – gsamaras

+1

@gsamaras: pensa a quando una chiamata BLAS opera su una sottomatrice o quando l'hardware funziona meglio quando il * passo * della matrice corrisponde a una dimensione della pagina del controller di memoria, o alla dimensione della linea della cache o altro. Vedi http://stackoverflow.com/q/8206563/681865 – talonmies

+0

Grazie! La tua risposta dovrebbe essere accettata lì IMHO. "Il parametro LDA in BLAS è effettivamente il passo della matrice così come è disposto nella memoria lineare." ||| Ora, voglio passare al caso distribuito, quindi se hai un po 'di tempo, forse puoi dare un'occhiata a questa domanda: http://stackoverflow.com/questions/30937544/confused-with-pdpotrf-arguments – gsamaras