2011-03-25 64 views
0

我想做的真的很大的浮點計算。應該足夠快。C++真的很大的浮點計算

如何使用圖形處理器?如果沒有GPU可用,那麼我想使用主CPU。

感謝

+0

大意味着數字 - 數字應該是可擴展的。例如最大素數2 ^(43112609-1)個數字。 – Vijay 2011-03-25 06:35:45

+2

這是一般的方法。請你能更專注。 – 2011-03-25 06:35:47

+2

有效位數的上限是多少?或者你真的在談論[任意精度算術](http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic),其中數字的數量僅限於可用的計算機內存? – 2011-03-25 06:36:35

回答

2

根據這些數字的「大小」,您可以嘗試MPFR,儘管它不是GPU解決方案,但它可以處理大數字,並且應該可以很快速地運行,由幾個開源編譯器(GCC & LLVM)使用做靜態不斷摺疊,所以其設計旨在保持準確性。

要在GPU上工作(真的是GPGPU),您需要編寫一個類似OpenCLDirectCompute的內核,並在其中進行編號處理。

您可能也有興趣國際新AVX extensions以及。

2

浮點計算可以處理非常大的數字,非常小的數字,和數字介於兩者之間。問題在於有效數字的數量是有限的,而且不完全符合基本兩個表示(數字類似於1/3或1/7的數字)的數字將被錯誤轉換爲最接近的基數2同行。

如果GPU可用,幾乎所有的計算機都帶有視頻,那麼像GPGPU這樣的libarary應該可以幫助您在不編寫大量彙編語言的情況下訪問它。這就是說,除非你確定你的計算涉及與已經由GPU執行的操作相似的操作,否則最好避免使用GPU,因爲它們非常適合做他們已經做的事情,並且很難適應其他任何事情。