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   torchZdtype r   r   k/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/xformers/profiler/device_limits.pyr      s   
  r   ZH100zOhttps://resources.nvidia.com/en-us-tensor-core/nvidia-tensor-core-gpu-datasheet)	   r   g̊BC   i  i  i  )r   r   r   Z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  ZA30zehttps://www.nvidia.com/content/dam/en-zz/Solutions/data-center/products/a30-gpu/pdf/a30-datasheet.pdfl       g$@R      iJ  ZT4zkhttps://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/tesla-t4/t4-tensor-core-datasheet-951643.pdf)      l       ,g333333 @A      ZV100zfhttps://images.nvidia.com/content/technologies/volta/pdf/tesla-volta-v100-datasheet-letter-fnl-web.pdf)r#   r   l       g333333@gffffff/@}   Z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   r+   Zget_device_capabilityZget_device_namer)   r   r	   )ZdeviceZ	device_smZdevice_nameZlimr   r   r   get_device_limitsh   s   

r-   )r   dataclassesr   r   typingr   r   r   r   r   Zfloat64Zfloat32Zfloat16Zbfloat16Zint8r)   r   r-   r   r   r   r   <module>   s   
O