2013-05-04 7 views
12

Für eine Matrix A Transponieren der documentation besagt nur, daß die entsprechenden führenden Dimensionsparameter lda bezieht sich auf die:Klärung der führenden Dimension in CUBLAS wenn

führende Dimension der zweidimensionalen Anordnung verwendet, um die Matrix zu speichern, Ein

So nehme ich diese Spalte Hauptspeicherformat ‚nur die Anzahl der Zeilen von A gegeben CUBLAS ist. Wenn wir jedoch Op(A) betrachten, worauf bezieht sich die führende Dimension jetzt?

Antwort

10

Nichts ändert sich. Die führende Dimension immer bezieht sich auf die Länge der ersten Dimension des Arrays. Die Datenreihenfolgeflags (normal, transponieren, konjugiert) zeigen BLAS nur an, wie die Daten innerhalb des Arrays gespeichert sind. Sie haben keine Auswirkungen auf das Array selbst, das immer in der Spalte major geordnet ist und einen LDA-Wert für die Indizierung in 2D benötigt.

Ob also die Matrixdaten in transponierter Form gespeichert sind oder nicht, ein m x n Array hat immer LDA> = m.

+2

Von Ihrer Antwort war ich bereit zu schließen, dass LDA = m. Warum das> dort signieren? :/+1 BTW. Vielleicht beantwortet diese Frage doch die folgende Frage: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=217 – gsamaras

+1

@gsamaras: Denken Sie darüber nach, wann ein BLAS-Aufruf auf einer Submatrix ausgeführt wird oder wann Hardware funktioniert besser, wenn die * Tonhöhe * der Matrix einer Seitengröße eines Speicher-Controllers oder einer Cache-Zeilengröße oder was auch immer entspricht. Siehe http://stackoverflow.com/q/8206563/681865 – talonmies

+0

Danke! Ihre Antwort sollte die akzeptierte IMHO sein. "Der LDA-Parameter in BLAS ist effektiv der Schritt der Matrix, wie sie im linearen Speicher ausgelegt ist." ||| Nun möchte ich auf den verteilten Fall zu sprechen kommen, wenn Sie also etwas Zeit haben, können Sie vielleicht ein paar Fragen zu dieser Frage stellen: http://stackoverflow.com/questions/30937544/confused-with-pdpotrf-arguments – gsamaras