|
阅读:6回复:0
关于桌面平台的浮点计算
1. 对于浮点数的加法,结合律是不适用的,否则你不会看到那些避免"大数吃小数"的做法
2. Intel有一套x87指令集,支持80位扩展双精度浮点数,但是在现代x64 CPU上的支持度存疑。 感兴趣者可以阅读下面的讨论: Did any compiler fully use Intel x87 80-bit floating point? - Retrocomputing Stack Exchange 这里有一个精确奇异值分解的C语言实现,有考虑到80位浮点,可以拿去测试一下: C code implementing Singular Value Decomposition in Extended Double Precision Arithmetic 3. NVCC之类的编译器,在为GPU准备汇编指令时偏好使用FMA(混合乘加), 所以如果你把相同的逻辑分别喂给CPU和GPU,看到不一样的浮点数计算结果,是完全正常的。 对于N卡,除了架构白皮书里能见到的内容,还可补充阅读"某科学の黄仁勋公司"撰写的说明: Introduction — Floating Point and IEEE 754 13.2 documentation 4. 一个有趣的项目,专注于提供浮点舍入模式"正确"的数学函数: The CORE-MATH project |
|