2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3
 
 
Сообщение10.12.2007, 13:44 
Аватара пользователя
Еще один ламерский вопрос по MKL. Что такое workspace array и зачем он нужен? Например лапаковская функция:

Код:
?getrf(n,a,lda,ipiv,work,lwork,info)


Непонятно предназначение массива
Код:
work
, в мануале написано, что это workspace array, он вроде входной, как его задавать?

Спасибо

 
 
 
 
Сообщение10.12.2007, 15:27 
Freude писал(а):
Еще один ламерский вопрос по MKL. Что такое workspace array и зачем он нужен? Например лапаковская функция:

$?getrf(n,a,lda,ipiv,work,lwork,info)$

Непонятно предназначение массива $work$, в мануале написано, что это workspace array, он вроде входной, как его задавать?

Спасибо

Какой язык программирования Вы собираетесь изучать?

 
 
 
 
Сообщение10.12.2007, 15:39 
Аватара пользователя
Прогу пишу на Fortran90.

 
 
 
 
Сообщение10.12.2007, 15:42 
Freude писал(а):
Прогу пишу на Fortran90.

А я на C.

 
 
 
 
Сообщение10.12.2007, 15:46 
Аватара пользователя
По-моему никакой разницы :) Я имею в виду по отношению к вопросу. С лучше, привильно делаете.

Добавлено спустя 3 минуты 48 секунд:

Кажется разобрался, его можно задать любым, потом прописать
Код:
lwork=-1
, и subroutine сам его переопределит как надо, правильно?

 
 
 
 
Сообщение11.12.2007, 00:09 
Freude писал(а):
Что такое workspace array и зачем он нужен?... как его задавать?

work - это рабочий массив, используемый внутри подпрограмы. Такая техника типична для Фортрана и берет начало в глубокой древности, когда в Фортране еще не было динамического распределения памяти. Поэтому рабочие массивы обеспечивались именно вызывающей программой.
Если задать lwork = -1, то подпрограмма НЕ вычисляет ничего, кроме требуемого размера work:
Цитата:
If lwork = -1, then a workspace query is assumed; the routine only calculates the optimal size of the work array, returns this value as the first entry of the work array, and no error message related to lwork is issued by xerbla.
See Application Notes below for the suggested value of lwork
Получив требуемое lwork в work(1), нужно повторно обратиться к подпрограмме, задав рабочий массив и его длину (>0).
Посмотрите Application Notes в http://www.intel.com/software/products/mkl/docs/WebHelp/lle/functn_getri.html.

 
 
 
 
Сообщение11.12.2007, 12:01 
Аватара пользователя
Спасибо за информацию.

 
 
 [ Сообщений: 37 ]  На страницу Пред.  1, 2, 3


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group