
    9jHq                        d dl Z d dlZd dlmc mZ d dlmZ d dlm	Z	 ddl
mZmZ ddlmZ  e j                  e      Zdej$                  dej&                  d	efd
Zdej$                  dej&                  ddd	dfdZdej$                  d	ej.                  fdZ e	eeef             Zdej.                  d	dfdZdej.                  d	efdZdej$                  deddfdZdej$                  fdZ d Z!d Z"y)    N)is_symbolic)
OrderedSet   )configir)Vxcomm_buffer_typereturnc                    t        |       }t        |t        j                        ryt        |t        j                        r|j                         sy|j                         }t        |t        j                        ryt        |t        j                        ryt        |t        j                        rt        |j                               syy)ze
    Check if an input can be realized as a comm buffer of the specified
    `comm_buffer_type`.
    TF)	_get_data
isinstancer   LoopsBuffershould_allocateget_output_specCommBufferLayoutFixedLayoutFlexibleLayoutr   	get_numel)r	   r
   datalayouts       ]/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/_inductor/comm_lowering.pycan_realize_as_comm_bufferr   7   s     Q<D$! $		"4+?+?+A!!#F&"--.&"..)&"++,[AQ5R    
group_name,torch.distributed.distributed_c10d.GroupNamec                    | j                          t        |       }t        |t        j                        sJ |j                         }t        |t        j                        ryt        |t        j                  t        j                  f      st        d| d      t        |j                               rt        d| d      t        j                  |||      |_        y)z
    Realize an input as a comm buffer of the specified `comm_buffer_type`.

    Specifically, this realizes the underlying buffer if it's still unrealized
    and changes the layout of the buffer to `ir.CommBufferLayout`.
    Nz`A buffer can only be realized as a comm buffer if it has `FlexibleLayout` or `FixedLayout` (got ).zGA buffer with symbolic shape cannot be converted to a comm buffer (got )r   r
   r   )realizer   r   r   r   r   r   r   r   AssertionErrorr   r   r   )r	   r
   r   bufferr   s        r   realize_as_comm_bufferr#   U   s     IIKq\Ffbii(((##%F&"--. fr00"..AB::@E
 	

 6##%&""(-
 	

 '')FMr   c                    t        | j                  t        j                        rR| j                  j	                         }t        |t        j                  t        j
                  f      sJ |j                  S t        | j                  t        j                        r| j                  j                  S t        d| j                   d      )Nz\Expect the data attr of a `TensorBox` to be either an `ir.BaseView` or `ir.StorageBox` (got r   )r   r   r   BaseViewunwrap_view
MutableBox
StorageBoxr!   )r	   nodes     r   r   r   }   s    !&&"++&vv!!#$bmm <===yy	AFFBMM	*vv{{889xrC
 	
r   c                 |    t         j                  t        t        j                        | j                         f       y)z
    If a non-blocking collective is lowered as a blocking collective, the wait
    node in the original graph becomes useless and we can skip the lowering it.
    N)_bufs_to_skip_waitaddidr   graphget_namer	   s    r   mark_as_skip_waitr1      s%    
 BqwwK67r   c                 `    t        t        j                        | j                         ft        v S N)r-   r   r.   r/   r+   r0   s    r   should_skip_waitr4      s!    qwwK&*<<<r   inp	reduce_opc                 D   ddl m} | j                         | j                         j                  z  }t
        j                  j                  xrT  ||      xrJ t        | t        j                  j                        xr$ |dk(  xr |t
        j                  j                  k  S )Nr   )is_symm_mem_enabled_for_groupsum)#torch.distributed._symmetric_memoryr8   r   	get_dtypeitemsizer   _collectiveauto_selectr   r   CommBufferTypeSYMM_MEM#one_shot_all_reduce_threshold_bytes)r5   r6   r   r8   inp_sizes        r   $_should_lower_as_one_shot_all_reducerC      s    
 R}}!9!99H&& 	O)*5	O&sB,=,=,F,FG	O 	O **NNNr   c           	      @   t        | t        j                  j                  |       t	        j
                  t        j                  j                  t        j                  j                  t        j                  j                  j                  j                  | ||            S r3   )r#   r   r?   r@   pytreetree_map	TensorBoxcreateFallbackKerneltorchopssymm_memone_shot_all_reducedefault)r5   r6   r   s      r   _one_shot_all_reducerO      sn    3 1 1 : :JG??

  II22::		
 r   c            	         	 t         j                  j                  j                   ddlmm	m
mm fd} t         j                  j                   | j                        dt        j                  dt        dd	d
t        j                  ffd       } | j                         dt        j                  dt        dd	d
t        j                  ffd       } | j"                        fd       } | j$                        fd       }d
t        j&                  fd | j(                        fd       } | j*                        fd       } | j,                        fd       } | j.                        fd       } | j0                        fd       }	 | j2                        fd       }
 | j4                        fd       } | j6                        fd       } | j8                        fd       } | t         j                  j:                  j<                        fd       } | j>                        fd       } | j@                        fd       } | jB                        fd       } | jD                        fd       }y# t        $ r t
        j                  d       Y yw xY w)z4
    Register lowerings for the comm subsystem.
    zRInductor support for distributed collectives depends on building torch.distributedNr   )add_layout_constraintcloneconstrain_to_fx_stridescopy_register_loweringc                 &     |         |       S r3    )fnrQ   rS   rU   s    r   register_comm_loweringz7register_comm_lowerings.<locals>.register_comm_lowering   s    b"9: $$r   r5   r6   r   r   r   c                    t        | ||      rt        | ||      S  |       } t        j                  rG| j	                          t
        j                  j                  j                  | j                                t        j                  j                  |       } t        j                  j                  j                  j                   | ||       | S r3   )rC   rO   r    reorder_for_compute_comm_overlapr    r   r.   no_fuse_buffer_namesr,   r/   r   ExternKernelrequire_contiguous_AllReduce_Kernelcreate_inplaceall_reduce_rN   )r5   r6   r   c10drR   s      r   _all_reducez,register_comm_lowerings.<locals>._all_reduce   s     0Y
K'Y
CC Cj22 KKMGG((,,S\\^<oo005 	++$$		
 
r   c                    t        | ||      r! | t        | ||            }t        |       | S t        j                  j                  |       } t        j                  j                  j                  j                  | ||       | S r3   )
rC   rO   r1   r   r]   r^   r_   r`   ra   rN   )r5   r6   r   retrb   rT   s       r   _all_reduce_z-register_comm_lowerings.<locals>._all_reduce_   s     0Y
K$S)Z@C c"J oo005
++$$		
 
r   c                     | D cg c]
  } |       } }t         j                  j                  j                  j                  | ||       | S c c}w r3   r   _CollectiveKernelr`   all_reduce_coalesced_rN   )inputsr6   r   r5   rb   rR   s       r   _all_reduce_coalescedz6register_comm_lowerings.<locals>._all_reduce_coalesced  sR    (./%*//
++&&..		
  0s   Ac                 t    t         j                  j                  j                  j                  | ||       | S r3   rh   )rk   r6   r   rb   s      r   _all_reduce_coalesced_z7register_comm_lowerings.<locals>._all_reduce_coalesced_  s6    
++&&..		
 r   c                     t        j                  j                  | |g| }t        |t         j                        sJ t         j
                  j                  |      S r3   )r   ri   create_out_of_placer   IRNoderG   rH   )kernelrk   argsr)   s       r   _create_out_of_placez5register_comm_lowerings.<locals>._create_out_of_place"  sH    ##77NN$		***||""4((r   c                 B     j                   j                  | ||      S r3   )all_gather_into_tensorrN   )r5   
group_sizer   rt   rb   s      r   _all_gather_into_tensorz8register_comm_lowerings.<locals>._all_gather_into_tensor'  s(    #''//	
 	
r   c           	          t        j                  t        j                  j                  t        j
                  j                  j                  j                  | ||            S r3   )	rE   rF   r   rG   rH   ri   rp    all_gather_into_tensor_coalescedrN   )rk   rw   r   rb   s      r   !_all_gather_into_tensor_coalescedzBregister_comm_lowerings.<locals>._all_gather_into_tensor_coalesced0  sM    LL  4455==	
 	
r   c                x    t         j                  j                  j                  j                  | |||       |S N)out)r   ri   r`   all_gather_into_tensor_outrN   )r5   rw   r   r~   rb   s       r   _all_gather_into_tensor_outz<register_comm_lowerings.<locals>._all_gather_into_tensor_out<  s>    
++++33 	, 	
 
r   c                 D     j                   j                  | |||      S r3   )reduce_scatter_tensorrN   )r5   r6   rw   r   rt   rb   s       r   _reduce_scatter_tensorz7register_comm_lowerings.<locals>._reduce_scatter_tensorG  s+    #&&..
 	
r   c                z    t         j                  j                  j                  j                  | ||||       |S r}   )r   ri   r`   reduce_scatter_tensor_outrN   )r5   r6   rw   r   r~   rb   s        r   _reduce_scatter_tensor_outz;register_comm_lowerings.<locals>._reduce_scatter_tensor_outQ  sA    
++**22 	, 	
 
r   c           
          t        j                  t        j                  j                  t        j
                  j                  j                  j                  | |||            S r3   )	rE   rF   r   rG   rH   ri   rp   reduce_scatter_tensor_coalescedrN   )rk   r6   rw   r   rb   s       r    _reduce_scatter_tensor_coalescedzAregister_comm_lowerings.<locals>._reduce_scatter_tensor_coalesced]  sP    LL  4444<<	
 		
r   c                 D     j                   j                  | |||      S r3   )all_to_all_singlerN   )r5   output_split_sizesinput_split_sizesr   rt   rb   s       r   _all_to_all_singlez3register_comm_lowerings.<locals>._all_to_all_singlej  s+    #""**
 	
r   c                      |       } t         j                  j                  j                  j                  | ||       | S r3   r   ri   r`   
broadcast_rN   )r5   srcr   rb   rR   s      r   
_broadcastz+register_comm_lowerings.<locals>._broadcastt  s:    Cj
++OO##S#z	
 
r   c                 t    t         j                  j                  j                  j                  | ||       | S r3   r   )r5   r   r   rb   s      r   _broadcast_z,register_comm_lowerings.<locals>._broadcast_|  s1    
++OO##S#z	
 
r   c                 t     t         j                  j                  j                  j                  | |||      S r3   )rJ   rK   _dtensorshard_dim_alltoallrN   )r5   
gather_dim	shard_dimr   rt   s       r   _shard_dim_alltoallz4register_comm_lowerings.<locals>._shard_dim_alltoall  s5    #II1199
 	
r   c                     t        |       r| S t        j                  j                  j                  j
                  |        | S r3   )r4   r   _WaitKernelcreate_waitwait_tensorrN   )r5   rb   s    r   _wait_tensorz-register_comm_lowerings.<locals>._wait_tensor  s5    C J
""4#3#3#;#;SA
r   c                     t         j                  j                  |       }  j                  j                  | |||      S r3   )r   r]   r^   isendrN   )r5   dsttagr   rt   rb   s       r   _isendz'register_comm_lowerings.<locals>._isend  s4    oo005#DJJ$6$6S#zRRr   c                     t         j                  j                  |       } t         j                  j	                  j
                  j                  | |||       | S r3   )r   r]   r^   ri   r`   irecvrN   )r5   r   r   r   rb   s       r   _irecvz'register_comm_lowerings.<locals>._irecv  sG    oo005
++JJS#z	
 
r   c           	         |D cg c]!  }t         j                  j                  |      # }}j                  j                  }t
        j                  j                  5  t         j                  j                  || ||||      \  }}}	}
}d d d        rJ | d|        t        |       D ]H  \  }}|j                          |dk(  st
        j                  j                  |j                                J |d   j                         }t        j                  t        j                  |      ||	
      }g }t!        t        | |            D ]  \  }\  }}}|dk(  r|j"                  j%                  t        j&                  t        j(                  |      ||             |j*                  j%                  |j                                |j%                  |       t        j,                  t         j                  j/                  |      |t0        |fg      }|j%                  t         j2                  j5                  |              |S c c}w # 1 sw Y   xY w)N r   r   )device)r   r]   r^   batch_p2p_opsrN   r   r.   	fake_moderi   process_kernelzipr    mark_buffer_mutatedr/   
get_deviceMultiOutputLayout	enumeratemutation_outputsappendMutationOutput
NoneLayoutalias_namesMultiOutputtensor_to_layoutlistrG   rH   )op_list	peer_listtag_listtensorsr   trr   example_outputtensor_argsnon_tensor_argsunflatten_argsunbacked_bindingsop
tensor_argr   packedresultsiex_outplaceholderrb   s                       r   _batch_p2p_opsz/register_comm_lowerings.<locals>._batch_p2p_ops  s#   BIJQ2??55a8JJ##++WW 	 $$33!	 %E2C1D&EE$!';7 	CNB
 W}++J,?,?,AB	C
 Q**,%%  /
 "+C.,Q"R 	AAAvW}''..%%bmm6&BAvN ""))!**,7q! !nn((99&AAYK
 r||22;?@	A a K	 	s   &I	+II)#rJ   rK   _c10d_functional
all_reduceAttributeErrorloginfoloweringrQ   rR   rS   rT   rU   r   rG   strra   all_reduce_coalescedrj   rq   rv   rz   r   r   r   r   r   	broadcastr   r   r   r   r   r   r   )rY   rc   rf   rl   rn   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   rt   rQ   rb   rR   rS   rT   rU   s                      @@@@@@@r   register_comm_loweringsr      s   		""-- % 99%%DDOO,\\ C 
	 -< D,,-\\ C 
	 .0 D556 7 D667 8)ryy )
 D778
 9
 DAAB	
 C	
 D;;< = D667
 8
 D::;	 <	 D@@A

 B

 D223
 4
 DNN+ , DOO, - EII..AAB
 C
 D,,- . DJJ'S (S DJJ' ( D../1 01G   	
 	s   $J7 7KKc                     	 t         j                  j                  j                   ddlm}   | j                  j                  j                  j                          | j                  j                  j                  j                         ddlm} dt        j                   dt        j"                  d	d
dt        j                   fddt        j                   d	t$        dt        j                   ffd |j                        dt        j                   dt$        d	t$        ffd       } |j                        dt        j                   dt$        d	t$        dt        j                   ffd       } |j                        dt        j                   dt        j                   dt$        d	t$        ffd       } |j                        dt        j                   dt        j                   dt$        d	t$        dt        j                   f
fd       } |j&                        dt        j                   dt$        d	t$        ffd       } |j(                        dt        j                   dt$        d	t$        dt        j                   ffd       } |j*                        dt        j                   dt$        d	t$        ffd       } |j,                        dt        j                   dt$        d	t$        ffd       }	 |j.                        dt        j                   dt$        d	t$        dt        j                   ffd       }
 |j0                        dt        j                   dt$        dt2        d	t$        dt        j                   f
fd       } |j4                        dt        j                   d	t$        dt        j                   ffd       } |j6                        dt        j                   d	t$        dt8        dt        j                   ffd        } |j:                        dt        j                   dt        j                   d!t        j                   d"t        j                   d	t$        f
fd#       } |j<                        	 d+dt        j                   dt        j                   d!t        j                   d"t        j                   d	t$        f
fd$       } |j>                        dt        j                   dt        j                   d%t        j                   d"t        j                   d	t$        f
fd&       } |j@                        	 d,d't        j                   d(t        j                   dt2        d	t$        dt$        f
fd)       } |jB                        	 d,d(t        j                   d	t$        dt$        ffd*       }y# t        $ r t
        j                  d       Y yw xY w)-zH
    Register lowerings for symmetric memory (symm_mem) operations.
    z7symm_mem ops not available, skipping symm_mem loweringsNr   )register_out_variantr   )rU   r5   r
   r   r   r   c                     | j                          t        j                  j                  | j	                         | j                         | j                         | j                               }t        |||       |S )z
        Fallback: insert a Pointwise identity copy allocated in P2P via
        CommBufferLayout.  Used when we don't control the input's allocation.
        )r   dtypeinner_fnranges)	r    r   	PointwiserH   r   r;   make_loaderget_sizer#   )r5   r
   r   copys       r   _copy_input_to_comm_bufferz?register_symm_mem_lowerings.<locals>._copy_input_to_comm_buffer  s`     	||"">>#--/__&<<>	 # 
 	t%5zBr   c                     t        | t        j                  j                        r't	        | t        j                  j                  |       | S  | t        j                  j                  |      S )a  
        Ensure inp is in P2P memory for a symm_mem collective.

        If inductor controls the buffer's allocation (ComputedBuffer,
        or any buffer with FlexibleLayout/FixedLayout), switch its
        layout to CommBufferLayout in-place, zero-copy.

        If inductor does not control allocation (e.g. InputBuffer),
        insert a Pointwise identity copy into a new CommBufferLayout buffer.
        This adds an extra Triton kernel. Returns the possibly new TensorBox.

        TODO(tianrengao): eliminate the extra kernel for static-shape
        InputBuffers by pre-allocating P2P memory in the wrapper and DMA .copy_()
        )r   r   r?   r@   r#   )r5   r   r   s     r   _maybe_realize_symm_memz<register_symm_mem_lowerings.<locals>._maybe_realize_symm_mem  sZ    $ &c2+<+<+E+EF"3(9(9(B(BJOJ-!!** r   r6   c           	           | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | ||            S r3   )rE   rF   r   rG   rH   rI   rM   rN   r5   r6   r   r   rL   s      r   _symm_mem_one_shot_all_reducezBregister_symm_mem_lowerings.<locals>._symm_mem_one_shot_all_reduce#  s[     &c:6LL$$,,44	
 	
r   r~   c           
           | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | |||            S r3   )rE   rF   r   rG   rH   rI   one_shot_all_reduce_outrN   r5   r6   r   r~   r   rL   s       r   !_symm_mem_one_shot_all_reduce_outzFregister_symm_mem_lowerings.<locals>._symm_mem_one_shot_all_reduce_out4  s^     &c:6LL$$0088	
 		
r   symm_bufferlocal_inputc           
           | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | |||            S r3   )rE   rF   r   rG   rH   rI   one_shot_all_reduce_copyrN   )r   r   r6   r   r   rL   s       r   "_symm_mem_one_shot_all_reduce_copyzGregister_symm_mem_lowerings.<locals>._symm_mem_one_shot_all_reduce_copyG  s^     .k:FLL$$1199	
 		
r   c                      | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | ||||            S r3   )rE   rF   r   rG   rH   rI   one_shot_all_reduce_copy_outrN   )r   r   r6   r   r~   r   rL   s        r   &_symm_mem_one_shot_all_reduce_copy_outzKregister_symm_mem_lowerings.<locals>._symm_mem_one_shot_all_reduce_copy_outZ  sa     .k:FLL$$55==

 
	
r   c                      | |      } t         j                  j                  j                  j                  | ||       | S r3   )r   rI   rH   two_shot_all_reduce_rN   r   s      r   _symm_mem_two_shot_all_reduce_zCregister_symm_mem_lowerings.<locals>._symm_mem_two_shot_all_reduce_o  D     &c:6
  ))11		
 
r   outputc           
           | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | |||            S r3   )rE   rF   r   rG   rH   rI   two_shot_all_reduce_outrN   )r5   r6   r   r   r   rL   s       r   !_symm_mem_two_shot_all_reduce_outzFregister_symm_mem_lowerings.<locals>._symm_mem_two_shot_all_reduce_out~  s^     &c:6LL$$0088	
 		
r   c                      | |      } t         j                  j                  j                  j                  | ||       | S r3   )r   rI   rH   multimem_all_reduce_rN   r   s      r   _symm_mem_multimem_all_reduce_zCregister_symm_mem_lowerings.<locals>._symm_mem_multimem_all_reduce_  r   r   c           	           | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | ||            S r3   )rE   rF   r   rG   rH   rI   multimem_one_shot_all_reducerN   r   s      r   &_symm_mem_multimem_one_shot_all_reducezKregister_symm_mem_lowerings.<locals>._symm_mem_multimem_one_shot_all_reduce  s[     &c:6LL$$55==	
 	
r   c           
           | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | |||            S r3   )rE   rF   r   rG   rH   rI    multimem_one_shot_all_reduce_outrN   r   s       r   *_symm_mem_multimem_one_shot_all_reduce_outzOregister_symm_mem_lowerings.<locals>._symm_mem_multimem_one_shot_all_reduce_out  s^     &c:6LL$$99AA	
 		
r   rootc                      | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | ||||            S r3   )rE   rF   r   rG   rH   rI   multimem_one_shot_reduce_outrN   )r5   r6   r  r   r~   r   rL   s        r   &_symm_mem_multimem_one_shot_reduce_outzKregister_symm_mem_lowerings.<locals>._symm_mem_multimem_one_shot_reduce_out  sa     &c:6LL$$55==

 
	
r   c           	           | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | ||            S r3   )rE   rF   r   rG   rH   rI   multimem_all_gather_outrN   )r5   r   r~   r   rL   s      r   !_symm_mem_multimem_all_gather_outzFregister_symm_mem_lowerings.<locals>._symm_mem_multimem_all_gather_out  s[     &c:6LL$$0088	
 	
r   split_last_dimc           
           | |      } t        j                  t        j                  j                  t        j
                  j	                  j                  j                  | |||            S r3   )rE   rF   r   rG   rH   rI   reduce_scatter_outrN   )r5   r   r  r   r   rL   s       r   _symm_mem_reduce_scatter_outzAregister_symm_mem_lowerings.<locals>._symm_mem_reduce_scatter_out  s^     &c:6LL$$++33	
 		
r   	in_splitsout_splits_offsetsc                      | |      }  ||      }t         j                  j                  j                  j                  | ||||       y r3   )r   rI   rH   all_to_all_vdevrN   )r5   r~   r  r  r   r   rL   s        r   _symm_mem_all_to_all_vdevz>register_symm_mem_lowerings.<locals>._symm_mem_all_to_all_vdev  sT     &c:6%c:6
  $$,,	
 r   c           	           | |      }  ||      }t         j                  j                  j                  j                  | |||||       y r3   )r   rI   rH   all_to_all_vdev_2drN   )r5   r~   r  r  r   major_alignr   rL   s         r   _symm_mem_all_to_all_vdev_2dzAregister_symm_mem_lowerings.<locals>._symm_mem_all_to_all_vdev_2d  sW     &c:6%c:6
  ''//	
 r   in_splits_offsetsc                      | |      }  ||      }t         j                  j                  j                  j                  | ||||       y r3   )r   rI   rH   all_to_all_vdev_2d_offsetrN   )r5   r~   r  r  r   r   rL   s        r   #_symm_mem_all_to_all_vdev_2d_offsetzHregister_symm_mem_lowerings.<locals>._symm_mem_all_to_all_vdev_2d_offset'  sT     &c:6%c:6
  ..66	
 r   in_tileout_tilec                      | |      }  ||      }t         j                  j                  j                  j                  | ||||       y r3   )r   rI   rH   tile_reducerN   )r  r  r  r   r6   r   rL   s        r   _symm_mem_tile_reducez:register_symm_mem_lowerings.<locals>._symm_mem_tile_reduce;  sT     *':>*8Z@
    ((	
 r   c                     t        |       D ]  \  }} ||      | |<     ||      }t        j                  j                  j                  j
                  | ||||       y r3   )r   r   rI   rH   multi_root_tile_reducerN   )	in_tilesr  rootsr   r6   r   r  r   rL   s	          r    _symm_mem_multi_root_tile_reducezEregister_symm_mem_lowerings.<locals>._symm_mem_multi_root_tile_reduceO  sr     $H- 	GJAw1':FHQK	G*8Z@
  ++33	
 r   r3   )r9   )"rJ   rK   rL   rM   r   r   r   torch._library._out_variantr   rN   r   r   r   r   rU   r   rG   r?   r   r   r   r   r   r  r  intr
  r  boolr  r  r  r   r#  )r   rU   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r!  r&  r   r   rL   s                      @@@r   register_symm_mem_loweringsr*    s   	99%%
 	$$
 A $$,,((00 ))11--55
 ,\\++ C 
	&\\ 
8 x334
\\

 
 5
  x778
\\

 
 \\	
 9
$ x889
\\
\\
 
 	
 :
$ x<<=
\\
\\
 
 	

 \\
 >
( x445\\  6 x778
\\

 
 	
 9
$ x445\\  6 x<<=
\\

 
 >
  x@@A
\\

 
 \\	
 B
$ x<<=
\\

 
 	

 \\
 >
( x778
\\

 \\
 9
  x223
\\

 
 	
 4
$ x//0\\\\ << LL	
  1& x223 \\\\ << LL	
  4* x99:\\\\ << LL	
  ;& x++, ,,  	
  -& x667 ,, 	
  8]  JKs   &W W?>W?)#loggingrJ   torch.utils._pytreeutils_pytreerE   torch._inductor.utilsr   torch.utils._ordered_setr    r   r   virtualizedr   	getLogger__name__r   rG   r?   r)  r   r#   rq   r   tupler(  r   r+   r1   r4   rC   rO   r   r*  rW   r   r   <module>r6     s0     $ $ - /   g!T	||')'8'8	<%	||%''% ?% 
	%P
 
")) 
  1Zc3h02 8 8t 8=		 =d =	 ?"
bll 
ZzKr   