
    Wh                        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 d dlmZ eedf         Z G d	 d
          Z 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)
xla_client.c                      e Zd Zd ZdS )
AutoLayoutc                    dS )Nr    selfs    U/var/www/html/movieo_spanner_bot/venv/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   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      //D"?44c%6I6I0J0JDL*HD'''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_layout/   s_    ((**JZ66882>'..00'<<>>@ @ @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__6   sG    	RD,? 	R 	RL	R 	R+/+N	R 	R 	Rr   c                D    t          | j        | j        | j        f          S r   )hashr   r   r   r   s    r   __hash__zDeviceLocalLayout.__hash__=   s(    $dl57 8 8 8r   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__A   sT    e.// U5#77 XLEM)X/53WWYr   return	xc.Layoutc                h   | 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         |          }|S )Nr&   r      )
r   xcLayoutr   r   r   npintegerr   bits)r   dtyper+   sub_byte_sizes       r   _to_xla_layoutz DeviceLocalLayout._to_xla_layoutH   s    |9T02677jj		,	1	1;eRZ(( -25\\->-B-Be))9T026+- -j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   rD   s     r   check_compatible_avalz'DeviceLocalLayout.check_compatible_avalV   sb    
43z??22N!%!4N NAKN NO O O 32r   )Nr   )r   r   r   r   r   r   )r#   r$   )r8   r9   )rD   rE   )r   r   r   __annotations__r   r   r"   staticmethodr,   r   r1   r7   rC   rI   r   r   r   r   r   !   s         !!!!----%%%%	$ ?C67I I I I I @ @ @ <@  8 8 8Y Y Y   O O O O O Or   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                    r9|t          |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 )
r4   r   AutoShardingrH   typer   	TypeErrorr   rM   rN   )r   rM   rN   s      r   r"   zLayout.__init__d   s@    	&(9:: 		Z,??	"&''" "  	" "   /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=r.   )rM   rN   r   s    r   r   zLayout.__repr__   s/    *$*B * ** * * +r   c                8    t          | j        | j        f          S r   )r0   rM   rN   r   s    r   r1   zLayout.__hash__   s    )4=9:::r   c                p    t          |t                    sdS | j        |j        k    o| j        |j        k    S r3   )r4   r=   rM   rN   r5   s     r   r7   zLayout.__eq__   s=    eV$$ U$(AA ,MU^+-r   )NN)rM   rO   rN   rP   )r   r   r   	__slots__r"   r   r1   r7   r   r   r   r=   r=   a   sj        $j1):>+/    <+ + +; ; ;- - - - -r   r=   )
__future__r   typingr   numpyr>   jax._src.dtypesr   r   jax._src.shardingr   jax._src.sharding_implsr   rR   jax._src.libr	   r<   r    r   rE   r   r   rO   rP   r=   r   r   r   <module>r`      sB   # " " " " "           - - - - - - - - & & & & & & 8 8 8 8 8 8 ) ) ) ) ) )c3h       9O 9O 9O 9O 9O 9O 9O 9Ox 'z9:$45,- ,- ,- ,- ,- ,- ,- ,- ,- ,-r   