2011-06-28 21 views
3

我希望反覆錘擊X = B(A^-1)的問題。也就是說,解決一個線性系統。對於C++,哪些數值求解器支持128位長雙精度(四邊形)?最喜歡的/最好的A.X = B解算器支持長時間雙倍?

使用C風格的數組是一個主要優點,因爲我所有的2D數據都存儲爲一個std :: vector。

我一直希望能用GCC或ICC編譯Linux上的代碼。

+1

我認爲128位方面可能是一個問題。最有效的線程包(即lapack和它的親屬)通過調用blas庫(如intel mkl或amd acml等)來實現其高性能。我只看到支持單精度和雙精度的blas庫,而不支持quad。另外,你的硬件是否支持四倍精度? –

+0

好吧,編譯器似乎能夠將它們用於簡單的算術運算。 xmm有128位的權利?我在家使用的是Q6600英特爾處理器,並且從不期望早些時候支持任何東西。 – Mikhail

+3

如果你正在談論來自sse2指令集的xmm寄存器,那麼它們是128位寬,但不是它們不是四位精度的,它們提供了「向量化」浮點運算,即在4個單個或2個雙精度操作一個單一的asm指令。好的blas庫使用sse2/sse3/sse4等。 –

回答

4

許多C++線性代數庫都基於模板,包括NT2,Boost.uBLAS,Eigen(鏈接參見What are the most widely used C++ vector/matrix math/linear algebra libraries, and their cost and benefit tradeoffs?)。因此,如果你的編譯器/庫可以用四邊形做數學,他們應該能夠支持四邊形。例如,在Eigen中,類型Eigen::Matrix<long double, Dynamic, Dynamic>表示包含長雙精度的任意大小的矩陣,您可以使用標準函數來求解這些矩陣。

+0

好吧,這些似乎是稀疏矩陣求解器。所以它不是我想要的。無論如何感謝您的幫助! – Mikhail