问题标签 [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.
binary - 将数字编码为 IEEE754 半精度
我有一个关于我要解决的问题的快速问题。对于这个问题,我必须将 (0.0A)16 转换为 IEEE754 半精度浮点标准。我将其转换为二进制(0000.0000 1010),对其进行归一化(1.010 * 2^5),对指数进行编码(结果为 01010),但现在我不知道如何将其转换为实际形式。我应该如何处理小数部分?答案是 0 01010 01 0000 0000。
我知道添加省略 1 与此有关,但我也不完全确定会发生在哪里。
任何帮助表示赞赏!
c++ - 如何将一半传递给顶点着色器?
D3D11 Input Element Description
有一个指定格式的字段。
当我们仅在 CPU 端有(即 32 位 fp)时,如何将half
s(例如)传递给 Input 汇编器?DXGI_FORMAT_R16_FLOAT
float
ios - 如何获取kCVPixelFormatType_DepthFloat16(半点浮点数)的值?
我正在使用 swift 处理 iOS 前置深度摄像头的项目。根据苹果文档,媒体类型为kCVPixelFormatType_DepthFloat16
640*360 尺寸、30fps 的半点浮点数。我被困在如何逐个像素地进一步检索和处理值。
c++ - _Float16 的 C++ 支持
我想在原生支持半精度浮点的 Jetson AGX Xavier(使用 armv8.2 架构)上进行半精度浮点计算。由于 _Float16 数据类型是半精度浮点的算术数据类型,所以我编写了以下示例:
使用 gcc-7 我可以成功编译并运行它,但是使用 g++-7 我得到了错误:
根据this reference,C++似乎不支持_Float16。我想知道在 C++ 中使用 _Float16 数据类型是否有任何替代方法?
c++ - 有没有办法测试目标是否在 Clang 中具有本机半精度支持?
Clang 文档说:
_Float16 算术将在目标可用时使用本机半精度支持执行(例如,在 ARMv8.2a 上);否则它将以更高的精度执行(当前始终为浮点数),然后截断为 _Float16。
有没有办法说我只想_Float16
在第一种情况下使用,float
否则,避免在第二种情况下截断?即类似的东西
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 不是。这看起来像是一个合理的假设吗?如果是这样,您对我如何正确并行化我的算法有什么建议吗?
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 上时有什么遗漏吗?欢迎任何帮助
我的代码(您可能需要以管理员身份运行它以获得访问写入权限):
和日志
c++ - 将 Float32 转换为 Float16
这更像是对https://stackoverflow.com/a/5587983/13586005的跟进。@sam hocevar 或其他任何了解这一点的人:您介意解释这里发生的事情吗:
我不确定我是否完全遵循它。我知道这(tmp - 0x70)
是在纠正 127->15 偏差,但我不理解第二部分((unsigned int)((int)(0x70 - tmp) >> 4) >> 27
),因此不理解 & 在最后一步中修正了偏差。谢谢!
pytorch - 如何在FP16模式下将pytorch模型转换为TensorRT时保持准确性
我想使用 TensorRT FP16 模式来加速我的 pytorch 模型,但是有精度损失。我的问题是如何使用 pytorch 的混合精度训练来避免转换为 TensorRT FP16 模型时的精度损失。我已经尝试过torch.cuda.amp.autocast
训练模型,但它仍然失去了一些精度。
format - IEEE-754 标准
关于 IEEE-754 标准,我有一个非常简单的问题,其中数字被编码并保存在计算机上。
在 uni(考试)中,我遇到了 16 位 IEEE-754 格式(半精度)的以下定义:1 个符号位、6 个指数位和 9 个尾数位。
互联网搜索(或书籍)揭示了另一个定义:1 个符号位、5 个指数位和 10 个尾数位
我问的原因是我不敢相信 uni 可能犯了这么简单的错误,那么以 16 位 IEEE-754 格式给出的数字有多种定义吗?