2011-03-25 98 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,因为它们非常适合做他们已经做的事情,并且很难适应其他任何事情。