Вопрос по fortran, sparse-matrix, fortran95, fortran90, blas – Фортран 90/95 библиотека для разреженных матриц?

14

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

Я искал и расширение (?) Для BLAS под названием «sparse blas», задокументированное в главе 3 спецификации технического форума взрыва:

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

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

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

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

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

Ура,

Arne

Ах, может быть. Я только поспешно посмотрел в прошлый раз. Rook
На самом деле я думаю, что интерфейс F90 для разреженного BLAS находится именно на той странице, на которую вы ссылаетесь. Просто скачайте пакет сценариев оболочки:http://www.netlib.org/toms/818 и запустить его через / bin / sh. Файлы * .f90 будут созданы. Дайте мне знать, если у вас нет доступной оболочки Bourne (например, если вы работаете под Windows). alexurba
F95, будучи незначительным пересмотром языка, часто идет под F90. Прошло много времени с тех пор, как я сделал что-то с большими матрицами, но, похоже, этоpeople.sc.fsu.edu/~jburkardt/f_src/blas2/blas2.html версия F90. Rook
Спасибо, Idigas, но я не думаю, что это так. Мне кажется, что вы ссылаетесь на библиотеку BLAS, и это "разреженный бласт" не является частью этого. Например, должна быть подпрограмма (в соответствии со спецификацией) под названием «duscr_begin» (или, возможно, «blas_duscr_begin»), который является подпрограммой, которую вы используете для инициализации разреженной матрицы, которую я не нашел нигде в библиотеке BLAS. Я даже скачал все файлы сnetlib.org/sparse-blas/index.htmlи сделал & quot; grep -i duscr_begin * .f & quot; без удачи. Я нашел это очень запутанным. arne

Ваш Ответ

1   ответ
13

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

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

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

Чтобы заставить скрипт INSTALL работать, мне нужно было внести некоторые изменения: в инструкциях по установке вам нужно отредактировать скрипт INSTALL и выбрать подходящий & quot; arch & quot ;. Вы можете выбрать: AIX, ALPHA, CRAY, HP, NAG, SGI и SUN. Ничто из этого не показалось мне подходящим, так как я использую Linux, и единственный компилятор фортрана, который у меня есть на этом компьютере, - это gfortran. Я не совсем понимал цель этого варианта, но я работал следующим образом:

1) В INSTALL создайте новую & quot; арку & quot; Я вызвал GNU, установив переменную SB_ARCH = «GNU». 2) В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ / Makefile измените FC = f90 на FC = gfortran, 3) В TESTER / скопируйте файл Makefile.NAG в Makefile.GNU, измените FC = f90 на FC = gfortran и измените все вхождения слова & apos; NAG & APOS; к "GNU". (Возможно, вы также захотите изменить опцию FFLAGS в файлах Makefile.)

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

Должен сказать, что мне было трудно найти этот исходный код. К счастью, эта тема очень популярна в Google при поиске "библиотеки разреженных матриц Фортран 90" сейчас.

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

Я нахожусь в точке, гдеand the tests spit out "0.000..." as errors, which I assume to mean everything is working, Теперь, как использовать эту библиотеку (или библиотеки?), Где они мне нужны? Какие файлы я должен скопировать в каталог, содержащий мои собственные программы?

Похожие вопросы