
    vha                        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eZy)    )annotations)UnionN)iinfo
issubdtype)Sharding)AUTO)
xla_client.c                      e Zd Zd Zy)
AutoLayoutc                     y)Nr    selfs    J/opt/face_recognition/venv/lib/python3.12/site-packages/jax/_src/layout.py__repr__zAutoLayout.__repr__   s        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y)DeviceLocalLayouttuple[int, ...]major_to_minor"tuple[tuple[int, ...], ...] | None_tilingint_sub_byte_element_size_in_bitsNc                v    t        |      | _        |d nt        t        t         |            | _        || _        y N)tupler   mapr   r   )r   r   r   r   s       r   __init__zDeviceLocalLayout.__init__(   s2      /D"?4c%6I0JDL*HD'r   c                    | j                         }t        |j                         d d d   |j                         |j	                               S )N)_xla_layoutr   minor_to_majortilingelement_size_in_bits)pjrt_layout
xla_layouts     r   from_pjrt_layoutz"DeviceLocalLayout.from_pjrt_layout/   sK    ((*JZ6682>'..0'<<>@ @r   c                V    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   s=    
+D,?,?+@ ALL> "++/+N+N*Oq	Rr   c                Z    t        | j                  | j                  | j                  f      S r   )hashr   r   r   r   s    r   __hash__zDeviceLocalLayout.__hash__=   s+    $$dll557 8 8r   c                    t        |t              sy| j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S NF)
isinstancer   r   r   r   r   others     r   __eq__zDeviceLocalLayout.__eq__A   sZ    e./5#7#77 XLLEMM)X//53W3WWYr   c                   | j                   't        j                  | j                  d d d         }|S | j                  dk7  r| j                  }nLt        |t        j                        r0t        |      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    ||99T00267j  
	,	,	1;;eRZZ(-25\->->-Be))99T0026+-jr   c                |    t        | j                        t        |      k7  rt        d| j                   d|       y )NzTLength of major_to_minor and the rank of the value should match. Got major_to_minor=z and shape=)lenr   
ValueError)r   
aval_shapes     r   check_compatible_avalz'DeviceLocalLayout.check_compatible_avalV   sJ    
43z?2!!%!4!4 5[NO O 3r   )Nr   )r   r   r   r   r   r   )r)   zxc.PjRtLayout)returnz	xc.Layout)rD   Shape)r   r   r   __annotations__r   r   r"   staticmethodr+   r   r0   r6   r@   rE   r   r   r   r   r   !   sm    !!--"%%	$ ?C67I;I03I @ @8YOr   r   c                  F    e Zd ZddgZ	 	 d		 d
dZed        Zd Zd Zd Z	y)Formatdevice_local_layoutshardingNc                   t        |t              r,|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	        |             || _        || _	        y )Nz3Sharding has to be concrete when layout is of type z{. Please pass a `jax.sharding.NamedSharding` 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 )
r3   r   AutoShardingrC   typer   	TypeErrorr   rL   rM   )r   rL   rM   s      r   r"   zFormat.__init__d   s     	&(9:		Z,?&'( )  j	"  /dZHJ33F2G H+,-/  8T$Z68Zyh 023 3
  3DDMr   c                    | j                   S r   )rL   r   s    r   dllz
Format.dll   s    ###r   c                <    d| j                    d| j                   dS )NzLayout(device_local_layout=z, sharding=r-   )rL   rM   r   s    r   r   zFormat.__repr__   s+    )$*B*B)C Dq* +r   c                D    t        | j                  | j                  f      S r   )r/   rL   rM   r   s    r   r0   zFormat.__hash__   s    ))4==9::r   c                    t        |t              sy| j                  |j                  k(  xr | j                  |j                  k(  S r2   )r3   rK   rL   rM   r4   s     r   r6   zFormat.__eq__   s=    eV$$$(A(AA ,MMU^^+-r   )NN)rL   LayoutOptionsrM   ShardingOptions)
r   r   r   	__slots__r"   propertyrS   r   r0   r6   r   r   r   rK   rK   a   sB    $j1):>+/(< $ $+;-r   rK   )
__future__r   typingr   numpyr;   jax._src.dtypesr   r   jax._src.shardingr   jax._src.sharding_implsr   rO   jax._src.libr	   r9   r    r   rG   r   r   rW   rX   rK   r:   r   r   r   <module>rb      sw    #   - & 8 )c3h 9O 9Ox 'z9:$450- 0-d 
r   