2012-09-08 30 views
13

我正在尋找一個處理fortran 90/95稀疏矩陣的庫。我只需要非常基本的操作,如矩陣向量乘法。你建議我用什麼?用於稀疏矩陣的Fortran 90/95庫?

找遍四周,延伸到BLAS稱爲 「稀疏BLAS」,在爆炸技術論壇規範的第3章記錄(?):

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

似乎理想。根據該文件,圖書館應該有一個Fortran 95接口。但是,我無法在任何可以下載的地方找到該規範的實際實現。我有一種印象,那就是fortran95稀疏blas規範在任何地方都沒有實現?無論如何,還不如開源。

我還發現了被稱爲sparsekit庫:

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

任何人得到這兩個中的任何一個,或FORTRAN 90/95任何其他稀疏矩陣庫的經驗嗎?我希望得到關於使用哪一個的建議,以及在哪裏獲得它(在sparsekit的情況下,源代碼可通過上述鏈接獲得)。是否有像稀疏矩陣的「標準」,就像BLAS是密集矩陣?

乾杯,

阿恩

+0

F95,它是該語言的小修訂版,通常在F90下。這是一段時間,因爲我已經做了大型矩陣的任何事情,但這似乎是http://people.sc.fsu.edu/~jburkardt/f_src/blas2/blas2.html F90版本。 – Rook

+0

謝謝Idigas,但我不認爲就是這樣。在我看來,你鏈接到的是BLAS庫,而「稀疏的blas」不是其中的一部分。例如,應該有一個稱爲「duscr_begin」(或可能是「blas_duscr_begin」)的子程序(根據規範),它是用於初始化稀疏矩陣的子程序,我在BLAS庫中找不到任何地方。我甚至從http://www.netlib.org/sparse-blas/index.html下載了所有文件,並且沒有任何運氣就做了「grep -i duscr_begin * .f」。我發現非常混亂。 – arne

+0

啊,可以。我只是上次匆匆看過它。 – Rook

回答

12

OK,我會部分回答我的問題:

在哪裏可以找到稀疏BLAS的f95的全面實施是由@alexurba上面提供

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

就是這樣!這個腳本創建了運行它的文件夾中的所有源代碼(我從來沒有見過以這種方式提供的軟件)。

要使INSTALL腳本正常工作,我需要做一些更改:安裝說明會告訴您編輯INSTALL腳本並選擇適當的「拱形」。您的選擇是:AIX,ALPHA,CRAY,HP,NAG,SGI和SUN。這些對我來說都不合適,因爲我使用的是linux,而我在這臺計算機上使用的唯一Fortran編譯器就是gfortran。我不太明白這個選項的目的,但我卻認爲是工作如下:

1)在安裝,構成了一個新的「拱」我叫GNU通過設置變量SB_ARCH =「GNU」 。 2)在SOFTWARE/Makefile中將FC = f90更改爲FC = gfortran,3)在TESTER /將Makefile.NAG文件複製到Makefile.GNU,將FC = f90更改爲FC = gfortran,並更改單詞'NAG '到'GNU'。 (你可能也想更改Makefiles中的FFLAGS選項。)

之後,我運行了INSTALL,然後TESTER/test_all,並且測試吐出了​​「0.000 ...」作爲錯誤,我假設意味着一切正在發揮作用。

我必須說我發現發現這個源代碼異常困難。幸運的是,現在在搜索「fortran 90稀疏矩陣庫」時,這個線程在谷歌上顯得相當高。我最終的解決方案:最終找到Sparse BLAS的完整實現之後,我決定對於我的問題,最好使用更直接的方法,因爲我可能需要的只是矩陣向量乘法:Figure (壓縮稀疏行(CSR)似乎適合我的問題),從稀疏BLAS源代碼中挖出相應的矩陣向量乘法例程,看看它是如何輸入的,然後使用它直接在我的代碼中。

+0

我正處於測試吐出「0.000 ...」錯誤的地步,我認爲這意味着一切都在工作。現在,如何在需要它們的地方使用這個庫(或庫?)?我應該將哪些文件複製到包含我自己的程序的目錄中? –