@@ -77,6 +77,13 @@ def check(payload, recv_ids, recv_weights, handle):
7777 def dispatch (borrow , value = x ):
7878 result = buffer .dispatch (value , borrow_recv = borrow , ** kwargs )
7979 if asynchronous :
80+ if borrow :
81+ # A failed early release must leave the lease usable after waiting.
82+ pending_view = result [0 ]
83+ rejected (pending_view .wait , RuntimeError )
84+ rejected (lambda : pending_view .slab , RuntimeError )
85+ rejected (lambda : pending_view .row_indices , RuntimeError )
86+ rejected (pending_view .release , RuntimeError )
8087 result [- 1 ].current_stream_wait ()
8188 return result [:4 ]
8289
@@ -89,6 +96,9 @@ def dispatch(borrow, value=x):
8996 rejected (buffer .destroy , RuntimeError )
9097 view .release ()
9198 rejected (lambda : view .slab , RuntimeError )
99+ rejected (lambda : view .row_indices , RuntimeError )
100+ rejected (view .wait , RuntimeError )
101+ rejected (view .release , RuntimeError )
92102
93103 replay , _ , _ , _ , event = buffer .dispatch (x , handle = handle , num_sms = 8 , async_with_compute_stream = True )
94104 event .current_stream_wait ()
@@ -124,6 +134,8 @@ def dispatch(borrow, value=x):
124134 for extra in [dict (do_expand = True ), dict (defer_epilogue = True ), dict (do_cpu_sync = False ), dict (handle = handle )]:
125135 rejected (lambda extra = extra : buffer .dispatch (x , borrow_recv = True , ** (kwargs | extra )), ValueError )
126136 rejected (lambda : buffer .dispatch (x .float (), borrow_recv = True , ** kwargs ), ValueError )
137+ fp8 = (x .to (torch .float8_e4m3fn ), torch .ones ((tokens , hidden // 128 ), device = x .device ))
138+ rejected (lambda : buffer .dispatch (fp8 , borrow_recv = True , ** kwargs ), ValueError )
127139 dist .barrier ()
128140 buffer .destroy ()
129141
0 commit comments