问题标签 [half-precision-float]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
105 浏览

binary - 将数字编码为 IEEE754 半精度

我有一个关于我要解决的问题的快速问题。对于这个问题,我必须将 (0.0A)16 转换为 IEEE754 半精度浮点标准。我将其转换为二进制(0000.0000 1010),对其进行归一化(1.010 * 2^5),对指数进行编码(结果为 01010),但现在我不知道如何将其转换为实际形式。我应该如何处理小数部分?答案是 0 01010 01 0000 0000。

我知道添加省略 1 与此有关,但我也不完全确定会发生在哪里。

任何帮助表示赞赏!

0 投票
1 回答
184 浏览

c++ - 如何将一半传递给顶点着色器?

D3D11 Input Element Description有一个指定格式的字段。

当我们仅在 CPU 端有(即 32 位 fp)时,如何将halfs(例如)传递给 Input 汇编器?DXGI_FORMAT_R16_FLOATfloat

0 投票
1 回答
593 浏览

ios - 如何获取kCVPixelFormatType_DepthFloat16(半点浮点数)的值?

我正在使用 swift 处理 iOS 前置深度摄像头的项目。根据苹果文档,媒体类型为kCVPixelFormatType_DepthFloat16640*360 尺寸、30fps 的半点浮点数。我被困在如何逐个像素地进一步检索和处理值。

0 投票
0 回答
908 浏览

c++ - _Float16 的 C++ 支持

我想在原生支持半精度浮点的 Jetson AGX Xavier(使用 armv8.2 架构)上进行半精度浮点计算。由于 _Float16 数据类型是半精度浮点的算术数据类型,所以我编写了以下示例:

使用 gcc-7 我可以成功编译并运行它,但是使用 g++-7 我得到了错误:

根据this reference,C++似乎不支持_Float16。我想知道在 C++ 中使用 _Float16 数据类型是否有任何替代方法?

0 投票
0 回答
91 浏览

c++ - 有没有办法测试目标是否在 Clang 中具有本机半精度支持?

Clang 文档说:

_Float16 算术将在目标可用时使用本机半精度支持执行(例如,在 ARMv8.2a 上);否则它将以更高的精度执行(当前始终为浮点数),然后截断为 _Float16。

有没有办法说我只想_Float16在第一种情况下使用,float否则,避免在第二种情况下截断?即类似的东西

0 投票
1 回答
837 浏览

python - 不完全 Cholesky 分解非常慢

背景:我正在为我的数值线性代数课程做一个项目。对于这个项目,我决定尝试使用半精度算术进行不完全 Cholesky 分解,并将结果用作迭代方法的预处理器。我首先尝试实现这个 Matlab 2019b(它具有半精度数据类型),但它不支持半精度稀疏矩阵,所以我不得不使用全矩阵。但是半精度的算术在 Matlab 中要慢得多,我发现像 500 x 500 矩阵这样的因子需要 20 分钟(我想达到 1000 x 1000)。但是,在单精度/双精度中,500 x 500 矩阵花费了不到一秒的时间。

我想如果我能真正利用矩阵的稀疏性,我会更幸运地扩展到更高的矩阵。我记得 numpy/scipy 有一个 float 16 数据类型,所以我决定尝试在 python 中实现它。所以我写了这个

其中 'a' 将是具有 CSC 格式的 scipy 稀疏矩阵。(注释掉的代码只是完全写出的算法,而不是试图利用稀疏性)。我发现这大约需要 6 分钟才能运行,这比我使用半精度浮点数时的 MATLAB 代码快得多,但当我使用单/双精度浮点数时(耗时不到一秒),它仍然比 matlab 代码慢很多,即使 MATLAB 使用的是完整矩阵。

总是有可能我只是在某个地方的代码中犯了一个错误,而我实际上并没有获得正确的运行时间,所以我会再看一遍。但我想知道是否有人更习惯于 scipy / numpy 看到我选择实现上述代码的方式有什么不妥之处。

我确实有另一种理论来解释为什么 python 代码可能这么慢。我在我学校的高性能计算机上运行它,可能是 matlab 设置为自动利用并行性,但 python 不是。这看起来像是一个合理的假设吗?如果是这样,您对我如何正确并行化我的算法有什么建议吗?

0 投票
0 回答
419 浏览

tensorflow - 从 Tensorflow Mixed Precision Tutorial 开始使用 TensorCore

我遵循了 Tensorflow 的混合精度教程:https ://www.tensorflow.org/guide/keras/mixed_precision但显然我没有使用 TensorCore。我的设置:

  • 视窗 10
  • 英伟达驱动:441.87
  • 蟒蛇:3.7
  • 库达:10.2
  • Tensorflow:tf-nightly-gpu=2.2.0-dev20200504(由于 TensorBoard 分析工具:https ://www.tensorflow.org/tensorboard/tensorboard_profiling_keras )。

由于我没有得到任何加速(实际上通过添加混合精度甚至更慢的结果),我决定使用 tenbsorBoard 来查看我是否得到任何 16 位计算。因此,我稍微修改了我的代码以进行更多迭代并记录一些。我已经能够控制我确实得到了 0% 的 16 位计算。

从混合精度教程中使用这些张量核心似乎很简单,我想知道在我的情况下可能是什么问题。我在 Windows 上时有什么遗漏吗?欢迎任何帮助

我的代码(您可能需要以管理员身份运行它以获得访问写入权限):

和日志

0 投票
1 回答
596 浏览

c++ - 将 Float32 转换为 Float16

这更像是对https://stackoverflow.com/a/5587983/13586005的跟进。@sam hocevar 或其他任何了解这一点的人:您介意解释这里发生的事情吗:

我不确定我是否完全遵循它。我知道这(tmp - 0x70)是在纠正 127->15 偏差,但我不理解第二部分((unsigned int)((int)(0x70 - tmp) >> 4) >> 27),因此不理解 & 在最后一步中修正了偏差。谢谢!

0 投票
0 回答
185 浏览

pytorch - 如何在FP16模式下将pytorch模型转换为TensorRT时保持准确性

我想使用 TensorRT FP16 模式来加速我的 pytorch 模型,但是有精度损失。我的问题是如何使用 pytorch 的混合精度训练来避免转换为 TensorRT FP16 模型时的精度损失。我已经尝试过torch.cuda.amp.autocast训练模型,但它仍然失去了一些精度。

0 投票
1 回答
99 浏览

format - IEEE-754 标准

关于 IEEE-754 标准,我有一个非常简单的问题,其中数字被编码并保存在计算机上。

在 uni(考试)中,我遇到了 16 位 IEEE-754 格式(半精度)的以下定义:1 个符号位、6 个指数位和 9 个尾数位。

互联网搜索(或书籍)揭示了另一个定义:1 个符号位、5 个指数位和 10 个尾数位

我问的原因是我不敢相信 uni 可能犯了这么简单的错误,那么以 16 位 IEEE-754 格式给出的数字有多种定义吗?