首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPU上的高精度数学运算

GPU上的高精度数学运算
EN

Stack Overflow用户
提问于 2009-09-18 15:29:45
回答 4查看 4.9K关注 0票数 7

我对使用HLSL在GPU上实现算法很感兴趣,但我主要关心的问题之一是我想要一个可变的精度级别。有没有技术可以在GPU上模拟64位精度或更高的精度。

谢谢!

EN

回答 4

Stack Overflow用户

发布于 2009-09-18 15:39:13

GPU刚刚开始在硬件上支持双精度,尽管在不久的将来它将继续比单精度慢得多。多年来,已经开发了各种各样的技术来使用由多个浮点组成的表示法来合成更高精度的浮点,但开销相当大。IIRC,crlibm手册对其中的一些技术进行了很好的讨论,包括错误分析和伪代码(CRLIBM使用它们将数字表示为一个以上的双精度值,但同样的技术也可以用于single)

如果不了解更多你想要做的事情,就很难给出更好的答案。对于某些算法,只有一小部分计算需要高精度;如果您遇到这样的情况,您可能会在GPU上获得不错的性能,尽管代码不一定非常美观或易于使用。如果你在算法中普遍需要高精度,那么GPU目前对你来说可能不是一个有吸引力的选择。

最后,为什么是HLSL而不是像CUDA或OpenCL这样的面向计算的语言呢?

票数 10
EN

Stack Overflow用户

发布于 2009-09-28 10:27:29

使用两个浮点数(即单精度值),您可以获得大约56位的精度。这接近double的精度,但是您可以为这种"double single“数据类型实现的许多操作都很慢,而且比使用double的精度要低。但是,对于简单的算术运算,它们通常就足够了。

这个paper讨论了一下这个想法,并描述了如何实现乘法运算。有关可以执行的操作以及如何实现这些操作的更完整列表,请查看DSFUN90包here。该程序包是用Fortran 90编写的,但可以转换为具有单精度数字的任何内容。但请注意,您必须从他们那里许可库,才能将其用于商业目的。我相信Mersenne-Twister CUDA演示应用程序也有加法和乘法运算的实现。

票数 5
EN

Stack Overflow用户

发布于 2009-11-30 17:05:06

这是一个稍微离题的答案,但如果您想了解将一些运算切换到单精度算术将如何影响您的问题,您应该考虑使用interval arithmetic在以各种方式混合精度时根据经验测量不确定性边界。Boost有一个区间算术库,我曾经用它来检测现有的C++科学代码:它非常容易使用。

但请注意:区间算术是出了名的悲观:即它有时夸大了界限。仿射算术应该更好,但我从来没有找到一个可用的库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1445282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档