Commit ac84d6f
committed
[perf] matrixgame2 causal: cut per-forward recompute (blockmask cache, skip unused RoPE, on-device timestep)
matrixgame2 causal inference repeated constant work on every DiT forward:
- 4 flex-attention BlockMasks were rebuilt via create_block_mask each forward
(compile + a GPU-tensor python loop). They depend only on
(num_frames, frame_seqlen, block size, local_attn_size, device), so cache
them per param-tuple (device included in the key).
- get_rotary_pos_embed ran a float64 CPU compute + H2D copy each forward to
build freqs_cis — which CausalMatrixGame2SelfAttention.forward never reads
(it computes its own RoPE via self._freqs_cache). Set freqs_cis = None and
skip the computation entirely.
- the sinusoidal timestep table was built on CPU then copied H2D; build it on
the target device instead.
- the action-module RoPE freqs were cached as CPU tensors, forcing an H2D copy
every forward inside _apply_rotary_emb_qk; cache them device-resident (with a
device check) so the per-call .to is a no-op.
All numerically identical. Removes per-forward CPU compute + H2D copies that
also blocked CUDA-graph capture.
Measured (H100, 117 frames = 30 DiT forwards): isolated DiT forward
194 ms -> 95 ms; end-to-end inference 12.6 s -> 10.6 s (-16%); denoise-stage
GPU-active 23% -> 33.5%.1 parent d6119c1 commit ac84d6f
3 files changed
Lines changed: 60 additions & 50 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 | | - | |
775 | | - | |
776 | | - | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
777 | 781 | | |
778 | 782 | | |
779 | 783 | | |
780 | 784 | | |
781 | 785 | | |
782 | 786 | | |
783 | 787 | | |
| 788 | + | |
| 789 | + | |
784 | 790 | | |
785 | 791 | | |
786 | 792 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
975 | 975 | | |
976 | 976 | | |
977 | 977 | | |
978 | | - | |
979 | | - | |
980 | | - | |
981 | | - | |
982 | | - | |
983 | | - | |
984 | | - | |
985 | | - | |
986 | | - | |
987 | | - | |
988 | | - | |
989 | | - | |
990 | | - | |
991 | | - | |
992 | | - | |
993 | | - | |
994 | | - | |
995 | | - | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
996 | 985 | | |
997 | 986 | | |
998 | 987 | | |
| |||
1030 | 1019 | | |
1031 | 1020 | | |
1032 | 1021 | | |
1033 | | - | |
1034 | | - | |
1035 | | - | |
1036 | | - | |
1037 | | - | |
1038 | | - | |
1039 | | - | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
1040 | 1042 | | |
1041 | | - | |
1042 | | - | |
1043 | | - | |
1044 | | - | |
1045 | | - | |
1046 | | - | |
1047 | | - | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
1048 | 1049 | | |
1049 | | - | |
1050 | | - | |
1051 | | - | |
1052 | | - | |
1053 | | - | |
1054 | | - | |
1055 | | - | |
1056 | | - | |
1057 | | - | |
1058 | | - | |
1059 | | - | |
1060 | | - | |
1061 | | - | |
1062 | | - | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
1063 | 1063 | | |
1064 | 1064 | | |
1065 | 1065 | | |
| |||
0 commit comments