我正在寻找一个库,用于处理fortran 90/95中的稀疏矩阵。我只需要非常基本的操作,如矩阵向量乘法。你建议我用什么?
我已经搜索过了一个名为“稀疏blas”的BLAS扩展名(?),在爆炸技术论坛规范的第3章中有记录:
http://www.netlib.org/blas/blast-forum/,
似乎很理想。根据该文档,库应该有一个fortran 95接口。但是,我无法在任何可以下载的地方找到该规范的实际实现。我有点认为fortran 95稀疏blas规范并没有在任何地方真正实现?反正不是开源。
我还找到了一个名为sparsekit的库:
http://people.sc.fsu.edu/~jburkardt/f_src/sparsekit/sparsekit.html
对于fortran 90/95,任何人都有这两个中的任何一个或任何其他稀疏矩阵库的经验吗?我想建议使用哪一个,以及从哪里获取它(在sparsekit的情况下,源代码可通过上面的链接获得)。对于稀疏矩阵,有没有类似“标准”的东西,比如BLAS用于密集矩阵?
干杯,
·阿尔
答案 0 :(得分:13)
好的,我会部分回答我自己的问题:
上面的@alexurba在哪里可以找到完整的f95稀疏BLAS实现:
http://www.netlib.org/toms/818
就是这样!此脚本在您运行它的文件夹中创建所有源代码(我以前从未见过以这种方式提供的软件)。
要使INSTALL脚本正常工作,我需要做一些更改:安装说明会告诉您编辑INSTALL脚本并选择适当的“arch”。您的选择是:AIX,ALPHA,CRAY,HP,NAG,SGI和SUN。这些似乎都不适合我,因为我使用的是linux,而且我在这台计算机上使用的唯一的fortran编译器是gfortran。我不太明白这个选项的目的,但我所做的工作如下:
1)在INSTALL中,通过设置变量SB_ARCH ='GNU'来组成一个名为GNU的新“arch”。 2)在SOFTWARE / Makefile中将FC = f90更改为FC = gfortran,3)在TESTER中/将文件Makefile.NAG复制到Makefile.GNU,将FC = f90更改为FC = gfortran,并更改单词'NAG'的所有实例'到'GNU'。 (您可能还想更改Makefile中的FFLAGS选项。)
在此之后我运行INSTALL,然后运行TESTER / test_all,并且测试吐出“0.000 ......”作为错误,我认为这意味着一切正常。
我必须说我发现这个源代码异常困难。幸运的是,现在搜索“fortran 90稀疏矩阵库”时,谷歌上的这个帖子相当高。
我的最终解决方案:具有讽刺意味的是,在最终找到Sparse BLAS的完整实现后,我已经决定使用更直接的方法来解决我的问题,因为我可能需要的是矩阵向量乘法:使用什么稀疏矩阵表示(Compressed Sparse Row(CSR)似乎适合我的问题),从稀疏BLAS源代码中挖出相应的矩阵向量乘法例程,看看它是如何输入的,直接使用它在我的代码中。