2014 dxdy logo

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

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




 
 связь blas и lapack
Сообщение23.06.2014, 09:15 
Допустим имеем обёртку вокруг BLAS на python (т.е. имеем numpy), можем ли руками написать ф-ии из LAPACK?(по минимуму мне надо eig, svd.)
я знаю про numpy.linalg.svd и numpy.linalg.eig так же там можно посмотреть сорцы, которые показывают в случае svd

Цитата:
The decomposition is performed using LAPACK routine _gesdd


, а в случае eig

Цитата:
implemented using the _geev LAPACK routines




но там правда есть ссылка на

Цитата:
References
----------
G. Strang, *Linear Algebra and Its Applications*, 2nd Ed., Orlando, FL,
Academic Press, Inc., 1980, Various pp.



Для чего всё это нужно:

переписать стандартные функции из numpy (svd и eig) с использованием numpy.memmap и cudamat (тот же blas обертка вокруг cublas как я понимаю).
Так же для поддержки больших матриц можно использовать блочное перемножение матриц (хотя может еще какие то ф-ии blas придется переделать? и я чего то не учёл?)

Что точнее нужно:

может быть есть lapack собранный только из вызовов blas? (так ли это и возможно ли это?)
возможно есть примеры на других языках? (т.к. нет никакого желания разбираться в фортран коде и ф-иях с названиями типа dgemm)
какие книги по линейной алгебре(для инженеров скорее, а не для математиков) лучше читать, которые более близки к реальности и рассказывают о подводных камнях(например вырожденные случаи (типа сингулярная матрица) или там потеря точности (типа таким методом никто не считает, а вот более точный) и т.д.), опять же учитывая, что blas и обёртки у нас уже есть и требуется написать только высокоуровневые алгоритмы.

 
 
 
 Re: связь blas и lapack
Сообщение24.06.2014, 19:22 
(сам не читал! просто попадалась рекомендация, как очень хорошей книги)
Деммель, Вычислительная линейная алгебра.
Ну и для практиков еще полезна, кажется, вот эта книга:
Numerical Recipes in C (есть вариации для других языков; лиц. соглашение на код очень неприятное --- лучше самому переписать, а не копировать из книжки).

 
 
 
 Re: связь blas и lapack
Сообщение26.06.2014, 21:04 
mrgloom_ в сообщении #878543 писал(а):
Для чего всё это нужно:

переписать стандартные функции из numpy (svd и eig) с использованием numpy.memmap и cudamat (тот же blas обертка вокруг cublas как я понимаю).

Про http://www.culatools.com/ или хотя бы http://icl.cs.utk.edu/magma/ в курсе?
Судя по вопросам которые возникают, самописный вариант быстрее готового не получится.

 
 
 
 Re: связь blas и lapack
Сообщение07.07.2014, 13:09 
вкурсе, но первое не подходит т.к. закрытое и скорее всего не рассчитано на работу с данными больше объема памяти на видеокарте, а второе т.к. сложное для настройки и у меня нету кластера.


почитав немного, я склоняюсь к тому, что мне надо реализовать SVD, т.к. он более полезный, т.к. на базе его можно получить и собственные значения\векторы.
Но похоже там существует несколько методов я нашел: QR method, Jacobi rotations, divide-and-conquer.
но как то всё очень запутанно.
http://en.wikipedia.org/wiki/Singular_v ... ng_the_SVD

Цитата:
The routine dgesdd uses a divide and conquer algorithm for the bidiagonal SVD, whereas dgesvd uses a QR algorithm.
In summary, I recommend always calling the dgesdd if the memory is available, otherwise dgesvd.


тут много по eig адгоритмов
http://en.wikipedia.org/wiki/Eigenvalue_algorithm

 
 
 [ Сообщений: 4 ] 


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