Ë
    Q/æju#  ã                   ó  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZ d dlZd dlmZ d dlZd dlmc mZ d dlmZ d dlmZ d„ Z ed¬«      d	„ «       Zd
dœdej6                  dedefd„Z G d„ d«      Z G d„ d«      Z y)é    N)Údefaultdict)ÚDictÚOptionalÚSet)Údefault_generator)ÚStorageWeakRefc                  ó   ‡ — ˆ fd„}|S )zkLazily wrap a function with torch.compile on the first call

    This avoids eagerly importing dynamo.
    c                 óF   •‡ — t        j                  ‰ «      ˆˆ fd„«       }|S )Nc                  ó    •— t        j                  ‰fi ‰¤Ž} t        j                  ‰«      |«      t	        «       ‰j
                  <    || i |¤ŽS ©N)ÚtorchÚcompileÚ	functoolsÚwrapsÚglobalsÚ__name__)ÚargsÚkwargsÚcompiled_fnÚcompile_kwargsÚfns      €€ú]/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/utils/_content_store.pyÚcompile_hookz7lazy_compile.<locals>.decorate_fn.<locals>.compile_hook6   sF   ø€ äŸ-™-¨Ñ=¨nÑ=ˆKØ%8¤Y§_¡_°RÓ%8¸Ó%EŒG‹I�b—k‘kÑ"Ù Ð/¨Ñ/Ð/ó    )r   r   )r   r   r   s   ` €r   Údecorate_fnz!lazy_compile.<locals>.decorate_fn5   s&   ù€ Ü	�‰˜Ó	ô	0ó 
ð	0ð
 Ðr   © )r   r   s   ` r   Úlazy_compiler   /   s   ø€ ôð Ðr   T)Údynamicc                 óÈ  — t        j                  dd| j                  | j                  t         j                  ¬«      j                  «       }|dz  dz   j                  «       }t        j                  dd| j                  | j                  t         j                  ¬«      j                  «       j                  «       }t        j                  || z  |z   j                  «       dg«      S )Ni   €l        )ÚdeviceÚdtypeiÿÿÿé   r   )
r   ÚrandintÚshaper    Úint32ÚabsÚlongÚprimsÚxor_sumÚint)ÚxÚaÚbs      r   Úhash_storage_kernelr.   E   s£   € ô
 	�‰Ø�%˜Ÿ™¨¯©¼¿¹ô	ç	�cƒeð ð ˆy‰/˜QÑ	×$Ñ$Ó&€Aä�‰�h  q§w¡w°q·x±xÄuÇ{Á{ÔSß	‰‹ß	‰‹ð ô �=‰=˜!˜a™% !™)Ÿ™Ó*¨Q¨CÓ0Ð0r   F©Ústable_hashÚstorager0   Úreturnc                ó\  — dd l }ddlm} | j                  j                  }|s ||«      sƒ| j                  «       }t        j                  |j                  «       z  j                  |j                  «       «      }t        j                  «       }|j                  |«       |j                  «       S |dk(  rt        }nE|dk(  r2dd l}|j"                  j$                  | j                  j&                     }nt)        d|› �«      ‚|j+                  «       }		 |j-                  d«        |j.                  d|j0                  | j                  ¬«      j3                  | «      }
|
j5                  «        dz  }|dkD  rt7        j8                  |
d|fdd«      }
|
j;                  |j<                  «      }
d	}t?        |«      D �cg c]  }tA        |
«      jC                  «       ‘Œ }}tE        jF                  d
d|z  z   g|¢­Ž jI                  «       |jK                  |	«       S c c}w # |jK                  |	«       w xY w)Nr   )Úis_compile_supportedÚcpuÚcudazunhandled device type ©r!   r    é   Úconstanté   ú>Úi)&Útorch._dynamoÚtorch._dynamo.utilsr4   r    Útyper5   ÚctypesÚc_byteÚnbytesÚfrom_addressÚdata_ptrÚhashlibÚsha1ÚupdateÚ	hexdigestr   Ú
torch.cudar6   Údefault_generatorsÚindexÚAssertionErrorÚ	get_stateÚmanual_seedÚemptyÚuint8Úset_ÚnumelÚFÚpadÚviewr%   Úranger.   ÚitemÚstructÚpackÚhexÚ	set_state)r1   r0   r   r4   Údevice_typeÚcpu_storageÚbufrF   Ú	generatorÚstater+   rT   ÚITERÚ_Úcss                  r   Úhash_storagerd   `   sÐ  € ÛÝ8à—.‘.×%Ñ%€KÙÑ.¨{Ô;Ø—k‘k“mˆô �}‰}˜{×1Ñ1Ó3Ñ3×AÑAØ× Ñ Ó"ó
ˆô �|‰|‹~ˆØ�‰�CÔØ�~‰~ÓÐð �eÒÜ%‰	Ø	˜Ò	Ûà—J‘J×1Ñ1°'·.±.×2FÑ2FÑG‰	äÐ5°k°]ÐCÓDÐDØ×ÑÓ!€Eð#Ø×Ñ˜aÔ ØˆE�K‰K˜ §¡°W·^±^ÔD×IÑIÈ'ÓRˆð �w‰w‹yˆj˜1‰nˆØ�Š7Ü—‘�a˜!˜S˜ :¨qÓ1ˆAØ�F‰F�5—;‘;Óˆð ˆÜ5:¸4³[ÖA°Ô! !Ó$×)Ñ)Õ+ÐAˆÐAÜ�{‰{˜3  t¡Ñ+Ð1¨bÒ1×5Ñ5Ó7à×Ñ˜EÕ"ùò Bøð 	×Ñ˜EÕ"ús   ÄB&H Æ6 HÇ+H ÈH ÈH+c                   ó�   — e Zd Zddededdfd„Zdej                  defd„Zddej                  fd	„Z
d
edej                  ddfd„Zy)ÚContentStoreWriterÚlocr0   r2   Nc                 ó>   — || _         t        «       | _        || _        y r   )rg   ÚsetÚseen_storage_hashesr0   )Úselfrg   r0   s      r   Ú__init__zContentStoreWriter.__init__”   s   € ØˆŒÜ-0«UˆÔ Ø&ˆÕr   r1   c                 óº  — t        || j                  ¬«      }|| j                  v r|S t        j                  j                  | j                  d«      }t        j                  |d¬«       t        j                  j                  ||«      }t        j                  j                  |«      r|S t        j                  ||«       | j                  j                  |«       |S )Nr/   ÚstoragesT©Úexist_ok)rd   r0   rj   ÚosÚpathÚjoinrg   ÚmakedirsÚexistsr   ÚsaveÚadd)rk   r1   ÚhÚ	subfolderÚtargets        r   Úwrite_storagez ContentStoreWriter.write_storageš   sŸ   € Ü˜¨d×.>Ñ.>Ô?ˆØ�×(Ñ(Ñ(ØˆHô —G‘G—L‘L §¡¨:Ó6ˆ	Ü
�‰�I¨Õ-Ü—‘—‘˜i¨Ó+ˆÜ�7‰7�>‰>˜&Ô!ØˆHÜ�
‰
�7˜FÔ#Ø× Ñ ×$Ñ$ QÔ'Øˆr   Útc                 ó  — |€%t        |j                  «       | j                  ¬«      }|j                  ||j	                  «       t        |j                  «      |j                  «       t        j                  j                  |«      fS )Nr/   )rd   Úuntyped_storager0   r!   Ústorage_offsetÚtupler$   Ústrider   Ú_utilsÚget_tensor_metadata)rk   r|   rx   s      r   Úcompute_tensor_metadataz*ContentStoreWriter.compute_tensor_metadata©   sh   € Øˆ9Ü˜Q×.Ñ.Ó0¸d×>NÑ>NÔOˆAà�G‰GØØ×ÑÓÜ�!—'‘'‹NØ�H‰H‹JÜ�L‰L×,Ñ,¨QÓ/ð
ð 	
r   Únamec                 óœ  — |j                  «       }| j                  |«      }t        j                  j	                  |«      \  }}| j                  ||¬«      }t        j                  j                  | j                  d|«      }t        j                  |d¬«       t        j                  |t        j                  j                  ||«      «       y )N)rx   ÚtensorsTro   )r~   r{   rq   rr   Úsplitr„   rs   rg   rt   r   rv   )	rk   r…   r|   r1   rx   ÚdÚfÚpayloadry   s	            r   Úwrite_tensorzContentStoreWriter.write_tensorµ   s�   € Ø×#Ñ#Ó%ˆØ×Ñ˜wÓ'ˆä�w‰w�}‰}˜TÓ"‰ˆˆ1Ø×.Ñ.¨q°AÐ.Ó6ˆÜ—G‘G—L‘L §¡¨9°aÓ8ˆ	Ü
�‰�I¨Õ-Ü�
‰
�7œBŸG™GŸL™L¨°AÓ6Õ7r   )Fr   )r   Ú
__module__Ú__qualname__ÚstrÚboolrl   r   ÚUntypedStorager{   ÚTensorr„   rŒ   r   r   r   rf   rf   �   sc   „ ñ'˜Cð '¨dð '¸tó 'ð U×%9Ñ%9ð ¸có ñ

¨¯©ó 

ð8 ð 8¨¯©ð 8¸$ô 8r   rf   c                   ó‚   — e Zd Zddœdeddfd„Zddœdedej                  fd	„Zd
efd„Zddœd
edej                  fd„Z
y)ÚContentStoreReaderT)Úcacherg   r2   Nc                óN   — || _         d | _        |rt        t        «      | _        y y r   )rg   Ústorage_cacher   Údict)rk   rg   r•   s      r   rl   zContentStoreReader.__init__Á   s-   € ØˆŒð ð 	Ôñ Ü!,¬TÓ!2ˆDÕð r   ©r    rx   c                óÖ  — |�t        j                  |«      }| j                  �| j                  |   j                  |«      nd }|�-t         j                  j                  |j                  «      }|�|S t        j                  t        j                  j                  | j                  d|«      d|¬«      j                  }|€J ‚| j                  �t        |«      | j                  |   |<   |S )Nrn   T)Úweights_onlyÚmap_location)r   r    r—   Úgetr‘   Ú_new_with_weak_ptrÚcdataÚloadrq   rr   rs   rg   Ú_untyped_storager   )rk   rx   r    ÚwsÚss        r   Úread_storagezContentStoreReader.read_storageÉ   sà   € ØÐÜ—\‘\ &Ó)ˆFð ×!Ñ!Ð-ð ×Ñ˜vÑ&×*Ñ*¨1Ô-àð 	ð ˆ>Ü×$Ñ$×7Ñ7¸¿¹ÓAˆAØˆ}Ø�Ü�J‰JÜ�G‰G�L‰L˜Ÿ™ :¨qÓ1ØØô
÷ Ñ
ð	 	
ð
 ˆ}Ðˆ}Ø×ÑÐ)Ü,:¸1Ó,=ˆD×Ñ˜vÑ& qÑ)Øˆr   r…   c                 óÚ   — t         j                  j                  | j                  d|«      }t         j                  j	                  |«      st        |«      ‚t        j                  |d¬«      S )Nr‡   T)r›   )rq   rr   rs   rg   ru   ÚFileNotFoundErrorr   r    )rk   r…   r   s      r   Úread_tensor_metadataz'ContentStoreReader.read_tensor_metadataà   sH   € Ü�W‰W�\‰\˜$Ÿ(™( I¨tÓ4ˆÜ�w‰w�~‰~˜bÔ!Ü# BÓ'Ð'Ü�z‰z˜"¨4Ô0Ð0r   c                ó  — | j                  |«      \  }}}}}}| j                  ||¬«      }	t        j                  g ||	j                  ¬«      }
|
j                  |	|||«       t        j                  j                  |
|«       |
S )Nr™   r7   )r§   r¤   r   Útensorr    rQ   r‚   Úset_tensor_metadata)rk   r…   r    r!   rx   r   Úsizer�   Úmetadatar1   r|   s              r   Úread_tensorzContentStoreReader.read_tensoræ   sz   € Ø;?×;TÑ;TØó<
Ñ8ˆˆq�. $¨°ð ×#Ñ# A¨fÐ#Ó5ˆÜ�L‰L˜ 5°·±Ô@ˆØ	�‰ˆw˜¨¨fÔ5Ü�‰×(Ñ(¨¨HÔ5Øˆr   )r   r�   rŽ   r�   rl   r   r‘   r¤   r§   r’   r­   r   r   r   r”   r”   À   s^   „ Ø*.ò 3˜Cð 3°4ó 3ð .2ò ˜cð °e×6JÑ6Jó ð.1¨ó 1ð 04ò  ð ¸¿¹ô r   r”   )!r@   r   rE   Úos.pathrq   rX   Úcollectionsr   Útypingr   r   r   r   Útorch._primsÚ_primsr(   Útorch._utilsÚtorch.nn.functionalÚnnÚ
functionalrS   Útorch._Cr   Ú torch.multiprocessing.reductionsr   r   r.   r‘   r�   r�   rd   rf   r”   r   r   r   ú<module>r¹      s�   ðó> Û Û Û Û Ý #ß &Ñ &ã Ý Û ß Ð Ý &Ý ;òñ, �dÔñ1ó ð1ð4 HMò *#˜%×.Ñ.ð *#Àð *#ÐQTó *#÷Z08ñ 08÷f.ò .r   