U
    yÊ¹js  ã                   @  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/bwave/python/venv/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s†t‚| | 	¡ ¡}t 
| ¡r´t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 	| ¡r�d 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   