Conversation
|
我分别使用 N 卡(RTX 4070 Laptop)和 I 卡(Intel UHD)在同样的条件下测试结果如下:
N 卡只有 ACNet 有较大的性能提升,其他效果反而下降;I 卡 ACNet 和 FSRCNNX 提升,其他则下降,而且性能变化幅度非常大。看来不同显卡的 FP16 性能差别很大,正确配置时可以大幅提高性能,反之则会大幅降低。这与我预想的不同,看来不能简单的全局启用或禁用。 |
This comment was marked as outdated.
This comment was marked as outdated.
因为这几个效果还没做适配,现在都适配了。 |
|
鉴于不同显卡 fp16 能力不同,我们应该支持针对单个效果启用或禁用 fp16。我想到两个方案:
我更喜欢第二个方案,虽然它很复杂,但优势很大
|
|
我略作搜索好像确实只能算一点误差和显卡工作时频率影响的区别
|
|
计算速度上 fp16 和 fp32 是一样的,fp16 的主要优势是驱动可以将 2 个 fp16 打包到一个 32 位 VGPR 寄存器。
|
|
@soi8391 我也觉得老版本游戏更稳定 |
|
总结一下 @plainround 的测试结果 驱动版本 32.0.101.5972:
驱动版本 32.0.101.6319:
看来 6319 版本的 fp16 性能大幅下降了。 |
也添加了 FP16 支持,性能有很小的下降,但显存占用大幅下降
|
这个功能完成了,感谢你们的测试!
如果某些设备上 mad 比 dp4 更慢,这个功能还是有必要的,目前只发现 I 系独立显卡是这样,而且可能是驱动 bug。需要更多测试。 |







效果可以使用 //!USE FP16 声明对半精度浮点数的支持,条件满足时会有以下变化:
Texture2D<min16float4>,输出定义变为RWTexture2D<min16float4>;R16G16_UNORM 格式的输入定义变为Texture2D<min16float2>,输出定义变为RWTexture2D<unorm min16float2>。包含 32 位浮点数的格式仍使用 float 类型。即使效果声明支持 FP16,也不意味着一定使用,有两种例外情况:GPU 不支持 FP16 或通过开发者选项禁用了 FP16。
添加了新的内置函数 MulAdd,等效于矩阵乘然后加上向量,让我们可以在 dp4 或 mad 之间灵活切换。目前大部分基于机器学习的效果大量使用 dp4,根据我的测试,切换为 mad 后性能提升相当可观。如果使用 FP16,mad 的性能可以进一步提升,而 dp4 的性能不升反降。
所有合适的效果都会适配 FP16 和 MulAdd,性能对比如下:
NIS 的性能提升是因为更新到了 v1.0.3,FP16 会使性能稍微下降,但显存占用更低。
其他更改:
//!MAGPIE EFFECT块包含 StubDefs.hlsli 以减少 IDE 中的错误,不影响编译结果。