U
    9%es                     @  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                   @  sZ   e Zd ZU ded< ded< ded< ded< eddd	d
Zed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   \/var/www/html/Darija-Ai-API/env/lib/python3.8/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)torchZtensorr   r   r   r   r   r   r   access_tensor   s    zRegisteredStorage.access_tensorc                 C  s(   | j  | jkr | j  | jks$td S r   )r   data_ptrr
   r	   AssertionErrorr   r   r   r   ensure_immutable   s    z"RegisteredStorage.ensure_immutableN)__name__
__module____qualname____annotations__propertyr   r   r   r   r   r   r   r   
   s   
r   c                   @  s^   e Zd ZU ded< dd ZddddZdd	d
dZddddddZdd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__r   )pointerc                   sT   t |  t | tt fdd| jd }|d krHtd|  |S )Nc                   s   | j ko | jk S r   )r
   r   )
registeredZmax_pointerZmin_pointerr   r   <lambda>)       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   )Zuntyped_storager   appendr   r   r	   r   )r   r.   r   r   r   r   
add_tensor2   s     zMemoryMap.add_tensorN        )r!   maskc                 C  s   |j s
td|   k r"dk s(n t|jtjks8t|d krNt| }|j sXtd|   k rpdk svn t|jtjkst||	 }t
| rtj||tjddS | || }|j}||j }tj|||jdd}|||  ||< |S )Nr      cuda)Z
fill_valuer   r   )Zis_cudar   dimr   r   int64	ones_likeboolexpandr	   allZ	full_likeZfloat16r-   r   r
   )r   r!   r2   otherr,   r   index_tensorblockr   r   r   load7   s"    


zMemoryMap.load)r!   valuec                 C  s   d|    k rdk sn t|jtjks.t|d krDt| }d|    k r\dk sbn t|jtjksrt|| }t	| rd S | 
|| }|j}||j }|| |j||| < d S )Nr   r3   )r5   r   r   r   r6   r7   r8   r9   r	   r:   r-   r   r
   to)r   r!   r?   r2   r,   r   r<   r   r   r   storeU   s    
zMemoryMap.store)Nr1   )N)	r   r   r   r   r    r-   r0   r>   rA   r   r   r   r   r      s   
  r   )	
__future__r   dataclasses r   r   	dataclassr   r   r   r   r   r   <module>   s   