Commit 4decf50
committed
[perf] matrixgame2 causal: cache per-forward RoPE/timestep/blockmask recompute on-device
matrixgame2 causal inference rebuilt several constant tables on EVERY DiT
forward, on CPU + H2D copy each time:
- main RoPE tables (causal_model, float64 on CPU -> .to(device))
- sinusoidal timestep embedding (visual_embedding, arange on CPU -> .to)
- action-module RoPE freqs (cached but as CPU tensors -> .to every call)
- 4x flex-attention BlockMasks via create_block_mask (compile + a
GPU-tensor python loop) every forward
All of these depend only on constants (grid, start_frame, block params)
that are fixed within an AR block (and mostly across the whole gen), so
they are now memoized on-device keyed by their varying args. Numerically
identical to before (pure memoization of deterministic functions); the
sinusoid table is simply built on the target device instead of CPU+H2D.
Measured (Modal H100x1, num_frames=117 = 10 AR blocks x 3 DMD steps,
under nsys, vs the prior .item() fix):
isolated DiT forward (microbench): 194 ms -> 95 ms (~2.04x)
end-to-end inference wall: 17.2 s -> 13.1 s (-24%)
denoising stage wall: 10.56 s -> 7.16 s (-32%)
GPU active share (denoise): 23.0% -> 33.5%
The biggest single contributor is the BlockMask cache (create_block_mask
is expensive). Remaining GPU idle is now dominated by per-kernel Python
dispatch of the ~150k small kernels, which only CUDA Graph / persistent
kernel can address.1 parent d6119c1 commit 4decf50
3 files changed
Lines changed: 81 additions & 46 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
153 | | - | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
154 | 158 | | |
155 | 159 | | |
156 | 160 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
771 | 771 | | |
772 | 772 | | |
773 | 773 | | |
774 | | - | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
775 | 778 | | |
776 | | - | |
| 779 | + | |
777 | 780 | | |
778 | 781 | | |
779 | 782 | | |
780 | 783 | | |
781 | 784 | | |
782 | 785 | | |
783 | 786 | | |
| 787 | + | |
| 788 | + | |
784 | 789 | | |
785 | 790 | | |
786 | 791 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
977 | 977 | | |
978 | 978 | | |
979 | 979 | | |
980 | | - | |
981 | | - | |
982 | | - | |
983 | | - | |
984 | | - | |
985 | | - | |
986 | | - | |
987 | | - | |
988 | | - | |
989 | | - | |
990 | | - | |
991 | | - | |
992 | | - | |
993 | | - | |
994 | | - | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
995 | 1010 | | |
996 | 1011 | | |
997 | 1012 | | |
| |||
1030 | 1045 | | |
1031 | 1046 | | |
1032 | 1047 | | |
1033 | | - | |
1034 | | - | |
1035 | | - | |
1036 | | - | |
1037 | | - | |
1038 | | - | |
1039 | | - | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
1040 | 1068 | | |
1041 | | - | |
1042 | | - | |
1043 | | - | |
1044 | | - | |
1045 | | - | |
1046 | | - | |
1047 | | - | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
1048 | 1075 | | |
1049 | | - | |
1050 | | - | |
1051 | | - | |
1052 | | - | |
1053 | | - | |
1054 | | - | |
1055 | | - | |
1056 | | - | |
1057 | | - | |
1058 | | - | |
1059 | | - | |
1060 | | - | |
1061 | | - | |
1062 | | - | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
1063 | 1089 | | |
1064 | 1090 | | |
1065 | 1091 | | |
| |||
0 commit comments