o
     i                     @   sb  U d dl Z d dlmZmZ d dlmZmZmZ d dlZeG dd dZ	e	dddd	ej
d
ejdejdejdejdide	ddddej
dejdejdejdejdide	ddddej
dejdejdejdejdide	ddd d!ejd"ejd#ejd$ide	d%d&d'd(ej
d)ejd*ejd+ide	d,d-d.d/ej
d0ejd1ejd2idfZee	d3f ed4< d5ee	 fd6d7ZdS )8    N)	dataclassfield)MappingOptionalTuplec                   @   sd   e Zd ZU dZeed< dZeed< dZee	e	f ed< e
jZeed< eedZeejef ed	< d
S )DeviceLimitdefaultname source)r   r   smgmem_bandwidth)default_factorygemm_tflopsN)__name__
__module____qualname__r	   str__annotations__r   r   r   intmathinfr   floatr   dictr   r   torchdtype r   r   S/home/ubuntu/.local/lib/python3.10/site-packages/xformers/profiler/device_limits.pyr      s   
  r   H100zOhttps://resources.nvidia.com/en-us-tensor-core/nvidia-tensor-core-gpu-datasheet)	   r   g̊BC   i  i  i  )r   r   r   A100zzhttps://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/a100/pdf/nvidia-a100-datasheet-us-nvidia-1758950-r4-web.pdf)   r   l        g     3@   i8  ip  A30zehttps://www.nvidia.com/content/dam/en-zz/Solutions/data-center/products/a30-gpu/pdf/a30-datasheet.pdfl       g$@R      iJ  T4zkhttps://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/tesla-t4/t4-tensor-core-datasheet-951643.pdf)      l       ,g333333 @A      V100zfhttps://images.nvidia.com/content/technologies/volta/pdf/tesla-volta-v100-datasheet-letter-fnl-web.pdf)r(   r   l       g333333@gffffff/@}   P100zKhttps://images.nvidia.com/content/tesla/pdf/nvidia-tesla-p100-datasheet.pdf)   r   l       g333333@g333333%@g3333335@.DEVICE_LIMITSreturnc                 C   sT   | dur(| j dkr(tj| }tj| }tD ]}|j|kr'|j|v r'|  S qdS )z#Currently only implemented for GPUsNcuda)typer   r2   get_device_capabilityget_device_namer0   r   r	   )device	device_smdevice_namelimr   r   r   get_device_limitsh   s   

r:   )r   dataclassesr   r   typingr   r   r   r   r   float64float32float16bfloat16int8r0   r   r:   r   r   r   r   <module>   s   
O