-
Notifications
You must be signed in to change notification settings - Fork 503
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FX 支持使用 FP16 #1049
base: dev
Are you sure you want to change the base?
FX 支持使用 FP16 #1049
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 寄存器。
|
@Blinue 謝謝,快速找了款視覺小說遊戲、使用Magpie-dev-13b0ecb-x64進行測試,有開啟性能测试模式。 粗略觀察結果為 作者頁面的舊CuNNy-8x32 57ms 18FPS |
@soi8391 谢谢测试。在开发者选项里禁用 FP16 之后,优化后的 CuNNy 性能如何?测试的时候请使用同一个游戏和同样的窗口尺寸。 |
@Blinue 謝謝。粗略觀察渲染用時與FPS結果基本完全相同。 未勾選禁用 FP16 已勾選禁用 FP16 同款視覺小說遊戲與同尺寸、使用Magpie-dev-57d0962-x64進行測試,有開啟性能测试模式。 |
@soi8391 麻烦提供日志 |
@Blinue 再麻煩您查看 |
总结一下 Intel Arc A750 的测试结果
mad 比 dp4 稍慢,fp16 没什么收益。Intel Arc A750 发布于 2022 年,性能和 2070 相当。 |
@Blinue 很抱歉、我重新安裝了舊款的Intel Arc驅動(32.0.101.5972)後再次嘗試。 同款視覺小說遊戲與同尺寸、使用Magpie-dev-57d0962-x64進行測試,有開啟性能测试模式。 以下為新的結果與截圖與log 未勾選禁用 FP16 註:在此前的測試結果是使用Intel Arc驅動(32.0.101.6449),2者安裝時都有使用DDU清除驅動並全新安裝,我不確定是否為安裝或驅動問題。 |
@soi8391 你好,请问可以提供57d0962版本编译文件吗,我a750可以测试 |
@soi8391 我的结果和你测试的一样,5972有很大的性能提升,6319版本和6449基本相同,请问是怎么知道这个版本的性能优势的? 禁用fp16 magpie.log |
@plainround 實際上我也沒有預料到會造成如此多性能差距。會使用5972測試的原因單純只是我在遊玩其他遊戲時發現6449的FPS似乎沒有上個使用的驅動5972穩定才決定退回、趁此機會就重測了一下。 |
@soi8391 我也觉得老版本游戏更稳定 |
总结一下 @plainround 的测试结果 驱动版本 32.0.101.5972:
驱动版本 32.0.101.6319:
看来 6319 版本的 fp16 性能大幅下降了。 |
效果可以使用 //!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,性能对比如下:
其他更改:
//!MAGPIE EFFECT
块包含 StubDefs.hlsli 以减少 IDE 中的错误,不影响编译结果。