
    Vpf                        d dl mZ d dlmZ d dlZd dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ eed	f         Z G d
 d          Zedk    r G d d          Zn G d d          Zeedef         Zee
def         Z G d d          ZdS )    )annotations)UnionN)iinfo
issubdtype)Sharding)AUTOis_auto)
xla_client)xla_extension_version.c                      e Zd Zd ZdS )
AutoLayoutc                    dS )Nr    selfs    O/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/_src/layout.py__repr__zAutoLayout.__repr__   s    6    N)__name__
__module____qualname__r   r   r   r   r   r      s#            r   r   i  c                      e Zd ZU ded<   ded<   ded<    e            Z	 	 ddd	Zedd            Zd Z	d Z
d ZddZddZdS )DeviceLocalLayouttuple[int, ...]major_to_minor"tuple[tuple[int, ...], ...] | None_tilingint_sub_byte_element_size_in_bitsNr   c                    t          |          | _        |d n!t          t          t           |                    | _        || _        d S N)tupler   mapr   r   )r   r   r   r   s       r   __init__zDeviceLocalLayout.__init__*   sC     ".11d$_TT%E78K8K2L2Ldl,Jd)))r   pjrt_layoutxc.PjRtLayoutc                    |                                  }t          |                                d d d         |                                |                                          S )N)_xla_layoutr   minor_to_majortilingelement_size_in_bits)r%   
xla_layouts     r   from_pjrt_layoutz"DeviceLocalLayout.from_pjrt_layout1   s_    **,,jz88::44R4@)0022)>>@@B B Br   c                8    d| j          d| j         d| j         dS )Nz!DeviceLocalLayout(major_to_minor=z
, _tiling=z!, _sub_byte_element_size_in_bits=))r   r   r   r   s    r   r   zDeviceLocalLayout.__repr__8   sG    Td.A T TlT T-1-PT T Tr   c                D    t          | j        | j        | j        f          S r!   )hashr   r   r   r   s    r   __hash__zDeviceLocalLayout.__hash__?   s(    4&68 9 9 9r   c                    t          |t                    sdS | j        |j        k    o| j        |j        k    o| j        |j        k    S NF)
isinstancer   r   r   r   r   others     r   __eq__zDeviceLocalLayout.__eq__C   sT    011 u!U%99 Zlem+Z1U5YY[r   returnstrc                   | j         #t          j        | j        d d d                   }n| j        dk    r| j        }nKt          |t          j                  r/t          |          j	        dk     rt          |          j	        nd}nd}t          j        | j        d d d         | j         |          }t          |          S )Nr(   r      )r   xcLayoutr   r   r   npintegerr   bitsr;   )r   dtyper-   sub_byte_sizes       r   _to_xla_layoutz DeviceLocalLayout._to_xla_layoutJ   s    		Yt244R4899

.!33=--rz** 	/4U||/@1/D/D%,,++!---Yt244R48$,,. .
__r   
aval_shapeShapec                    t          | j                  t          |          k    rt          d| j         d|           d S )NzTLength of major_to_minor and the rank of the value should match. Got major_to_minor=z and shape=)lenr   
ValueErrorr   rF   s     r   check_compatible_avalz'DeviceLocalLayout.check_compatible_avalX   sb    	T 	!	!S__	4	4P#'#6P PCMP PQ Q 	Q 
5	4r   )Nr   )r   r   r   r   r   r   r%   r&   r:   r;   rF   rG   r   r   r   __annotations__r   r   r$   staticmethodr.   r   r3   r9   rE   rL   r   r   r   r   r   #   s         ####////'''':<<D @D78K K K K K B B B \B  9 9 9[ [ [   Q Q Q Q Q Qr   r   c                  p    e Zd ZU ded<    e            ZddZedd            Zd Z	d Z
d ZddZddZdS )r   r&   layoutc                F    || _         t          | j                   | _        d S r!   )_layoutr;   _layout_str)r   rT   s     r   r$   zDeviceLocalLayout.__init__d   s!    dlT\**dr   r%   c                     t          |           S r!   )r   )r%   s    r   r.   z"DeviceLocalLayout.from_pjrt_layouth   s    {+++r   c                    d| j          dS )NzDeviceLocalLayout(r0   rW   r   s    r   r   zDeviceLocalLayout.__repr__l   s    5$"25555r   c                *    t          | j                  S r!   )r2   rV   r   s    r   r3   zDeviceLocalLayout.__hash__o   s    $,r   c                P    t          |t                    sdS | j        |j        k    S r5   )r6   r   rV   r7   s     r   r9   zDeviceLocalLayout.__eq__r   s)    011 u\U]**r   r:   r;   c                    | j         S r!   rZ   )r   rC   s     r   rE   z DeviceLocalLayout._to_xla_layoutw   s    r   rF   rG   c                    d S r!   r   rK   s     r   rL   z'DeviceLocalLayout.check_compatible_avalz   s    
dr   N)rT   r&   rM   rN   rO   rP   r   r   r   r   r   _   s         :<<D+ + + + , , , \,6 6 6     + + +
        r   c                  6    e Zd ZddgZ	 	 d
ddZd Zd Zd	 ZdS )r?   device_local_layoutshardingNLayoutOptionsShardingOptionsc                   t          |t                    r3|t          |          r"t          dt	          |           d|           t          |t          t	          d           t
          f          s"t          d| dt	          |                     t          |t          t	          d           t          f          s"t          d| dt	          |                     || _	        || _
        d S )Nz3Sharding has to be concrete when layout is of type z. Please pass a `jax.sharding.NamedSharding`, `jax.sharding.PositionalSharding` or `jax.sharding.SingleDeviceSharding` to the sharding argument. Got sharding zInvalid value received for the device_local_layout argument. Expected values are `None`, `DeviceLocalLayout.AUTO` or an instance of `DeviceLocalLayout`. Got z	 of type zInvalid value received for the sharding argument. Expected values are `None`, `pjit.AUTO` or an instance of `jax.Sharding`. Got )r6   r   r	   rJ   typer   	TypeErrorr   AutoShardingr`   ra   )r   r`   ra   s      r   r$   zLayout.__init__   s>    	&(9:: 		WX..	"&''" "  	" "   /dZHJ J /3F/ / +,,/ /   8T$ZZ68 8 322 2!%h2 23 3 3
  3DDMMMr   c                (    d| j          d| j         dS )NzLayout(device_local_layout=z, sharding=r0   )r`   ra   r   s    r   r   zLayout.__repr__   s/    *$*B * ** * * +r   c                8    t          | j        | j        f          S r!   )r2   r`   ra   r   s    r   r3   zLayout.__hash__   s    )4=9:::r   c                p    t          |t                    sdS | j        |j        k    o| j        |j        k    S r5   )r6   r?   r`   ra   r7   s     r   r9   zLayout.__eq__   s=    eV$$ U$(AA ,MU^+-r   )NN)r`   rb   ra   rc   )r   r   r   	__slots__r$   r   r3   r9   r   r   r   r?   r?      sj        $j1):>+/    <+ + +; ; ;- - - - -r   r?   )
__future__r   typingr   numpyr@   jax._src.dtypesr   r   jax._src.shardingr   jax._src.sharding_implsr   rg   r	   jax._src.libr
   r>   r   r"   r   rG   r   r   rb   rc   r?   r   r   r   <module>rs      s   # " " " " "           - - - - - - - - & & & & & & A A A A A A A A ) ) ) ) ) ) . . . . . .c3h        C9Q 9Q 9Q 9Q 9Q 9Q 9Q 9Q 9Qx       > 'z9:$45,- ,- ,- ,- ,- ,- ,- ,- ,- ,-r   