Подтвердить что ты не робот

Библиотека Fortran 90/95 для разреженных матриц?

Я ищу библиотеку для работы с разреженными матрицами в fortran 90/95. Мне нужны только основные операции, такие как умножение матричных векторов. Что вы предлагаете использовать?

Я обыскал и расширил (?) до BLAS под названием "редкий блас", задокументированный в главе 3 спецификации технического форума:

http://www.netlib.org/blas/blast-forum/,

кажется идеальным. Согласно этому документу, в библиотеке должен быть интерфейс fortran 95. Тем не менее, я не смог найти фактическую реализацию этой спецификации где бы я ни был загружен. Я вроде как создаю впечатление, что спецификация брезента fortran 95 на самом деле не реализована нигде? В любом случае, не как открытый источник.

Я также нашел библиотеку под названием sparsekit:

http://people.sc.fsu.edu/~jburkardt/f_src/sparsekit/sparsekit.html

Кто-нибудь получил какой-либо опыт либо с одной из этих двух, либо с любой другой разреженной матричной библиотекой fortran 90/95? Я бы хотел получить совет, по которому можно использовать, а также где его получить (в случае sparsekit исходный код доступен по вышеуказанной ссылке). Есть ли что-то вроде "стандартного" для разреженных матриц, например BLAS для плотных?

Приветствия,

Арне

4b9b3361

Ответ 1

Хорошо, я частично отвечу на свои вопросы:

Где найти полную реализацию F95 Sparse BLAS, было предоставлено @alexurba выше:

http://www.netlib.org/toms/818

Вот и все! Этот script создает весь исходный код в папке, в которой вы его запускаете (я никогда раньше не видел программное обеспечение, предоставленное таким образом).

Чтобы выполнить работу INSTALL script, мне нужно было внести некоторые изменения. Инструкции по установке говорят вам отредактировать INSTALL script и выбрать соответствующую "арку". Ваши варианты: AIX, ALPHA, CRAY, HP, NAG, SGI и SUN. Ни один из них не казался мне подходящим, поскольку я использую linux, и единственный компилятор fortran, который у меня есть на этом компьютере, - gfortran. Я не совсем понял цель этого варианта, но я работал так:

1) В INSTALL создайте новую "арку", которую я назвал GNU, установив переменную SB_ARCH = 'GNU'. 2) В SOFTWARE/Makefile измените FC = f90 на FC = gfortran, 3) В TESTER/скопируйте файл Makefile.NAG в Makefile.GNU, измените FC = f90 на FC = gfortran и измените все экземпляры слова "NAG" 'to' GNU '. (Вероятно, вы также захотите изменить параметр FFLAGS в Make файлах.)

После этого я запустил INSTALL, а затем TESTER/test_all, и тесты выплюнули "0.000..." как ошибки, которые, как я полагаю, означает, что все работает.

Я должен сказать, что найти этот исходный код необычно сложно. К счастью, эта тема довольно быстро поднимается на google при поиске "forran 90 редкой матричной библиотеки".

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