gpt4 book ai didi

Java 光线追踪 float 与 double

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:20:30 25 4
gpt4 key购买 nike

上学期我们不得不为学校的一门类(class)开发光线追踪器。学校快结束了,我试着摆弄一下。

我想看看如果我将所有浮点计算从 double 更改为 float(所有计算均使用 double 完成)会发生什么变化。所以我将每个变量都更改为 float 类型,并将 Math 方法返回的每个 double 简单地转换为 float。在几个场景上测试我的光线追踪器显示出相当不错的性能提升。

在网络上搜索后,我发现了 float 可以更快的各种原因,但也有人说 double 可以同样快,甚至在 64 位环境中更快。问题是,我在 64 位环境和 JVM 中运行。性能提高的原因是什么?

现在,我正在阅读 PBRT 书籍,并计划在此之后从头开始重写光线追踪器。为所有浮点计算选择 float 会带来任何问题吗?我在测试期间没有注意到任何东西,但也许对于某些场景,精度可能较低(交叉测试似乎可能会带来问题)?或者也许是一种权衡,比如对关键测试使用 double 而对不太关键的计算使用 float ?我将不得不使用其他数学库来摆脱转换,我会采用 float 方式吗?

最佳答案

计算的速度而言,float 和 double 之间几乎没有区别,因为平台是桌面处理器。差异只能来自增加的内存带宽要求,因为 double 需要两倍的空间。

它与基于 GPU 的计算不同,它们更适合 float ,例如Nvidia GPU 的故障显着增加一倍。

我会采用混合方法;以浮点精度存储多边形等数据,但以 double 进行所有计算。内存占用小,精度高 - 双赢。

关于Java 光线追踪 float 与 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31055373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com