单精度浮点数占用了一半的内存,并且在现代机器上(甚至在 GPU 上似乎)可以用它们以几乎两倍于双精度的速度完成操作。我发现的许多 FDTD 代码专门使用单精度算术和存储。是否有经验法则表明何时可以使用单精度来求解大规模稀疏方程组?我认为它必须在很大程度上取决于矩阵条件数。
此外,是否有任何有效的技术在必要时使用双精度,在不需要双精度的情况下使用单精度。例如,我认为对于矩阵向量乘法或向量点积,将结果累积在双精度变量中可能是个好主意(以避免取消错误),但是各个条目要相互相乘可以使用单精度相乘。
现代 FPU 是否允许从单精度 (float) 无缝转换为双精度 (double),反之亦然?还是这些昂贵的操作?