2013-05-04 3 views
12

Для матрицы A, то documentation только утверждает, что соответствующий ведущим параметром размерности lda относится к:Уточнение ведущего измерения в CUBLAS, когда транспонирования

ведущим размерность двумерного массива, используемого для хранения матрицы A

Таким образом, я предполагаю, что это всего лишь количество строк в A, учитывая формат хранения столбцов CUBLAS. Однако, когда мы рассматриваем Op(A), к чему теперь относится ведущий размер?

ответ

10

Ничего не меняется. Ведущий размер всегда относится к длине первого измерения массива. Флаги порядка данных (нормальные, транспонированные, сопряженные) только указывают BLAS, как хранятся данные в массиве. Они не влияют на сам массив, который всегда упорядочен по столбцам и требует значения LDA для индексирования в 2D.

Итак, независимо от того, хранятся ли данные матрицы в транспонированной форме или нет, массив m x n всегда имеет LDA> = m.

+2

С вашего ответа я был готов сделать вывод, что LDA = m. Почему знак> есть? :/+1 кстати. Может быть, это ответ на вопрос в конце концов: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=217 – gsamaras

+1

@gsamaras: Подумайте, когда вызов BLAS работает на подматрице или когда работает оборудование лучше, когда * шаг * матрицы соответствует размеру страницы контроллера памяти или размеру строки кеша или тому подобное. См. Http://stackoverflow.com/q/8206563/681865 – talonmies

+0

Спасибо! Ваш ответ должен быть принят там ИМХО. «Параметр LDA в BLAS эффективно является шагом матрицы, поскольку он выложен в линейной памяти». ||| Теперь я хочу перейти к распределенному корпусу, поэтому, если у вас есть время, возможно, вы можете взять looo на этот вопрос: http://stackoverflow.com/questions/30937544/confused-with-pdpotrf-arguments – gsamaras