12k 带符号的 16 位整数)。浮点运算太慢了,所以我一直在寻找一种方法来使用整数类型执-6ren">
gpt4 book ai didi

java - "Simulating"一个 64 位整数和两个 32 位整数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:31 25 4
gpt4 key购买 nike

我正在为移动设备编写一个计算量非常大的程序,并且仅限于 32 位 CPU。本质上,我正在执行大量数据的点积(>12k 带符号的 16 位整数)。浮点运算太慢了,所以我一直在寻找一种方法来使用整数类型执行相同的计算。我偶然发现了一个叫做 Block Floating Point 的东西算术(链接论文中的第 17 页)。它做得很好,但现在我面临一个问题,即 32 位不足以以足够的精度存储我的计算输出。

澄清一下,精度不够的原因是我必须大幅降低每个数组元素的精度,以便最终得到适合 32 位整数的数字。这是 ~16000 件事的总和,使我的结果如此巨大。

有没有办法(我喜欢引用一篇文章或教程)使用两个 32 位整数作为最高有效字和最低有效字定义它们的算术(+ , -, *,/) 来高效地处理数据?另外,是否有更好的方法来做这些事情?这种方法有问题吗?我对我使用的编程语言相当灵活。我更喜欢 C/C++,但 java 也可以。我敢肯定以前有人这样做过。

最佳答案

我很确定 JVM 必须支持 64 位算术 long 类型,如果平台不支持它,那么 VM 必须模拟它。但是,如果您无法承受使用 float 来解决性能问题,那么 JVM 可能会毁了您。

大多数 C 和 C++ 实现将提供针对 32 位目标模拟的 64 位算术 - 我知道 MSVC 和 GCC 会这样做。但是,您应该知道,您可以谈论许多 整数指令来保存单个浮点指令。你应该考虑这个程序的规范是不合理的,或者你可以从其他地方释放性能。

关于java - "Simulating"一个 64 位整数和两个 32 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6307984/

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