Подскажите открытую библиотеку для матричных вычислений

durka82

Нужна библиотека (язык не принципиален - лучше C++ ну или Fortran с которой можно было бы работать из Фортрана.
Чтобы она распространялась в кодах и можно было без проблем дописать что-то своё (а можно потом и включить в библиотеку).
Собственно нужны ленточные матрицы и метод сопряженных/бисопряженных градиентов с предобусловливанием.
Но можно и просто матричные вычисления (просто чем больше надо писать самому, тем меньше смысла в такой библиотеке).
Желательно с поддержкой OpenMP и MPI.
Основная цель: избежать/минимизировать написание своего инфраструктурного "велосипеда".

8rik8

посмотри пакеты решателей PETSC, SuperLU, MUMPS, WSMP
чем занимаешься если не секрет?
на чем считаешься?

olega

Посоветовал бы взглянуть на Eigen, это вроде самое толковое, что на чистом cxx есть на тему матриц.

durka82

Спасибо, интересный вариант, надо будет попробовать :)
Я правильно понимаю, что стоит сразу ориентироваться на 3-ю версию, не смотря на то, что она бета?
Но к сожалению для текущей задачи похоже не очень подходит, так как ни ленточных матриц, ни сопряжённых градиентов там нет. А значит всё равно предполагается большой объём работы по встраиванию.

olega

Ну они вроде обещают почти полную совместимость со второй версией, хотя я уже где-то полгода не наблюдал за ними. Ленточных матриц полгода назад не было действительно, но уже были разреженные. В принципе, я мог бы туда запилить и ленточные, но сейчас со временем напряги.
А алгоритмы типа сопр. градиентов там пишутся очень легко, просто переписываешь твой любимый учебник по ЧМам на cxx практически дословно.
Если будут вопросы — обращайся, помогу чем смогу.

durka82

PETSC, SuperLU, MUMPS, WSMP

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

Да мы тут пытаемся использовать схемы неполной факторизации типа Булеева/Холецкого для предобусловливания
методов сопряженных/бисопряженных градиентов.
И на этом считать свои задачи.
Например популярностью пользуется рост кристаллов.

на чем считаешься?

Пока на РС (тут как раз OpenMP не помешает - ядер всё дольше и больше).
Но в принципе говорят, что когда "плавать научусь", может и "воды нальют".

durka82

Ленточных матриц полгода назад не было действительно, но уже были разреженные. В принципе, я мог бы туда запилить и ленточные, но сейчас со временем напряги.
А алгоритмы типа сопр. градиентов там пишутся очень легко, просто переписываешь твой любимый учебник по ЧМам на cxx практически дословно.

То есть это без использования механизма плагинов?
Если будут вопросы — обращайся, помогу чем смогу.

Спасибо, учту :)

olega

То есть это без использования механизма плагинов?
Не понял, что имеется в виду. Eigen, если что, template-based, там кроме хедеров ничегог и нет.

durka82

Там есть механизм расширения .
Его надо использовать? Или просто править код библиотеки под себя?

olega

A typical use case is, for instance, to make Eigen compatible with another API.
Зачем тебе это?
Или просто править код библиотеки под себя?
Желательно не просто править, а слать патчи разрабам, если сделаешь что-нибудь толковое.

durka82

Ну вот я я подумал, что не надо.
Но решил уточнить.
Будут патчи - конечно вышлю.
Оставить комментарий
Имя или ник:
Комментарий: