Commit 82c320b
committed
fix(§24): fp8 e2e backward OOM CLEARED — torch set_per_process_memory_fraction poisoned the ALREADY-shared cudaMallocAsync pool (no MLX rebuild)
MEASURED root cause (refutes §22 'two pools double-reserve'): on this
MLX 0.32.0.dev+6680d75a + torch build, the device CURRENT cudaMallocAsync
pool ALREADY EQUALS the device DEFAULT pool and BOTH MLX and torch/TE draw
from it (2GB torch + 2GB MLX -> same pool reserved 2->4GB; 40GB MLX + 10GB
torch -> 50GB on ONE pool, no double-count). cudaDeviceSetMemPool is a no-op
repoint here. The real blocker was torch.cuda.set_per_process_memory_fraction
flipping the SHARED pool ReleaseThreshold 0->UINT64_MAX (retain-everything) +
a hard per-process ceiling that MLX's mx.eval growth (same pool) tripped,
OOMing at fp8_te_linear.py:321 even at seq128/frac0.95. torch ALSO re-poisons
the threshold to UINT64_MAX on its first alloc after we zero it.
FIX (Python-only, no rebuild):
- bench: drop set_per_process_memory_fraction when the shared pool is active
(cap only valid in the dual-pool fallback CPPMEGA_FP8_SHARED_POOL=0).
- _cuda_zerocopy: re-assert ReleaseThreshold=0 on EVERY bridge-boundary trim
(not once) so torch's re-poisoning is undone before each backward and
cudaMemPoolTrimTo can reclaim idle reserved memory.
MEASURED (gb10 sm_121, bs1 floor0, GRAPH_CACHE=4000): the fp8 backward now
COMPLETES (EXIT 0) — all 271 per-Linear crossings + final eval + AdamW.
fp8 e2e 7.4 tok/s no-opt / 5.4 tok/s +AdamW vs bf16 ref 117.6 tok/s @SEQ64;
MLX peak 40.75GB no-opt / 54.43GB +opt with mlx_active==torch_reserved==
pool_reserved (ONE reservation, no double-count); loss parity fp8 11.256 vs
bf16 11.345 (delta -0.089), +AdamW loss 11.25->7.398 (grads flowed).
Zero-copy PRESERVED: native kDLCUDA export path, torch-view write -> MLX sum
224.0 proves shared storage; no host-copy fallback (RULE #1). Residual: fp8
is 16x slower at floor0 (bridge-crossing-bound, not GEMM); §24 documents it.1 parent b4fb0bd commit 82c320b
3 files changed
Lines changed: 158 additions & 38 deletions
File tree
- cppmega_mlx/nn/_tilelang
- docs
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
155 | | - | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
156 | 168 | | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
| 169 | + | |
164 | 170 | | |
165 | 171 | | |
166 | 172 | | |
| |||
314 | 320 | | |
315 | 321 | | |
316 | 322 | | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
321 | | - | |
322 | | - | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
323 | 337 | | |
324 | | - | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | 338 | | |
330 | 339 | | |
331 | 340 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1885 | 1885 | | |
1886 | 1886 | | |
1887 | 1887 | | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
| 1897 | + | |
| 1898 | + | |
| 1899 | + | |
| 1900 | + | |
| 1901 | + | |
| 1902 | + | |
| 1903 | + | |
| 1904 | + | |
| 1905 | + | |
| 1906 | + | |
| 1907 | + | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
| 1916 | + | |
| 1917 | + | |
| 1918 | + | |
| 1919 | + | |
| 1920 | + | |
| 1921 | + | |
| 1922 | + | |
| 1923 | + | |
| 1924 | + | |
| 1925 | + | |
| 1926 | + | |
| 1927 | + | |
| 1928 | + | |
| 1929 | + | |
| 1930 | + | |
| 1931 | + | |
| 1932 | + | |
| 1933 | + | |
| 1934 | + | |
| 1935 | + | |
| 1936 | + | |
| 1937 | + | |
| 1938 | + | |
| 1939 | + | |
| 1940 | + | |
| 1941 | + | |
| 1942 | + | |
| 1943 | + | |
| 1944 | + | |
| 1945 | + | |
| 1946 | + | |
| 1947 | + | |
| 1948 | + | |
| 1949 | + | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + | |
| 1955 | + | |
| 1956 | + | |
| 1957 | + | |
| 1958 | + | |
| 1959 | + | |
| 1960 | + | |
| 1961 | + | |
| 1962 | + | |
| 1963 | + | |
| 1964 | + | |
| 1965 | + | |
| 1966 | + | |
| 1967 | + | |
| 1968 | + | |
| 1969 | + | |
| 1970 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
144 | 144 | | |
145 | 145 | | |
146 | 146 | | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
147 | 172 | | |
148 | 173 | | |
149 | 174 | | |
150 | 175 | | |
151 | 176 | | |
152 | | - | |
| 177 | + | |
153 | 178 | | |
154 | | - | |
155 | | - | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
156 | 185 | | |
157 | 186 | | |
158 | | - | |
159 | | - | |
160 | | - | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
161 | 190 | | |
162 | 191 | | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
167 | | - | |
168 | | - | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
169 | 197 | | |
170 | 198 | | |
171 | 199 | | |
| |||
0 commit comments