o
    hs                     @  sL   d dl mZ d dlZddlmZ ejZejG dd dZG dd dZdS )	    )annotationsN   )torch_wrapperc                   @  sR   e Zd ZU ded< ded< ded< ded< edd	d
ZedddZdd ZdS )RegisteredStorageztorch.Storagestorageztorch.dtypedtypeintsizeptrreturnc                 C  s   | j | j S N)r
   r	   self r   S/var/www/html/ai/venv/lib/python3.10/site-packages/triton/interpreter/memory_map.pyend_ptr   s   zRegisteredStorage.end_ptrtorch.Tensorc                 C  s   t j| j| j| jjdS )N)r   device)torchtensorr   r   r   r   r   r   r   access_tensor   s   zRegisteredStorage.access_tensorc                 C  s(   | j  | jkr| j  | jksJ d S r   )r   data_ptrr
   r	   r   r   r   r   ensure_immutable   s   (z"RegisteredStorage.ensure_immutableN)r   r   )r   r   )__name__
__module____qualname____annotations__propertyr   r   r   r   r   r   r   r   
   s   
 r   c                   @  sN   e Zd ZU ded< dd ZdddZdd
dZ		ddddZddddZdS )	MemoryMapz[RegisteredStorage]storagesc                 C  s
   g | _ d S r   )r   r   r   r   r   __init__    s   
zMemoryMap.__init__pointerr   c                   sT   t |  t | tt fdd| jd }|d u r$td|  |S )Nc                   s   | j ko	 | jk S r   )r
   r   )
registeredmax_pointermin_pointerr   r   <lambda>)   s    z3MemoryMap._get_registered_storage.<locals>.<lambda>z7Storage not found or pointers spanning multiple tensors)	r   maxitemminnextfilterr   	Exceptionr   )r   r!   registered_storager   r#   r   _get_registered_storage#   s   z!MemoryMap._get_registered_storagetc                 C  s0   |  }| jt||j| |  | S r   )untyped_storager   appendr   r   r	   r   )r   r/   r   r   r   r   
add_tensor2   s    zMemoryMap.add_tensorN        maskc                 C  s   |j sJ d|   k rdk sJ  J |jtjksJ |d u r(t| }|j s-J d|   k r:dk s=J  J |jtjksEJ || }t	| r\tj
||tjddS | || }|j}||j }tj
|||jdd}|||  ||< |S )Nr      cuda)
fill_valuer   r   )is_cudadimr   r   int64	ones_likeboolexpandr	   all	full_likefloat16r.   r   r
   )r   r!   r4   otherr-   r   index_tensorblockr   r   r   load7   s"   
 
 
zMemoryMap.loadvaluec                 C  s   d|    k rdk sJ  J |jtjksJ |d u r#t| }d|    k r0dk s3J  J |jtjks;J || }t| rJd S | 	|| }|j
}||j }|| |j||| < d S )Nr   r5   )r9   r   r   r:   r;   r<   r=   r	   r>   r.   r   r
   to)r   r!   rE   r4   r-   r   rB   r   r   r   storeU   s     
zMemoryMap.store)r!   r   )r/   r   )Nr3   )r!   r   r4   r   r   )r!   r   rE   r   )	r   r   r   r   r    r.   r2   rD   rG   r   r   r   r   r      s   
 

r   )	
__future__r   dataclasses r   r   	dataclassr   r   r   r   r   r   <module>   s    