o
    iS
                     @  sX   d dl mZ d dlZd dlZd dlZddgZedd	ddZedd	ddZdS )
    )annotationsNhas_ampere_or_laterdetect_default_tf32returnboolc            	      C  s   ddl } ddlm}m} | jjr|| jj dsdS |d\}}|s$dS z@z(|  t| D ]}|	|}|
|\}}|dkrK W W |  dS q0W n	 tyV   Y nw W |  dS W |  dS |  w )	z5
    Check if there is any Ampere and later GPU.
    r   N)optional_importversion_geqz11.0FpynvmlT   )torchmonai.utils.moduler   r   versioncudanvmlInitrangeZnvmlDeviceGetCountnvmlDeviceGetHandleByIndex"nvmlDeviceGetCudaComputeCapabilitynvmlShutdownBaseException)	r   r   r   r	   
has_pynvmlihandlemajor_ r   R/home/dell461/cl/sdc2/last_ska_mid/HISourceFinder-master-l/src/monai/utils/tf32.pyr      s6   

c                  C  s   d} z,t  s	W dS ddi}| D ]\}}tj||kr+td| d| d d} q| W S  tyC   dd	lm	} |
 r@ Y dS w )
zo
    Detect if there is anything that may enable TF32 mode by default.
    If any, show a warning message.
    FNVIDIA_TF32_OVERRIDE1zEnvironment variable `z = z` is set.
  This environment variable may enable TF32 mode accidentally and affect precision.
  See https://docs.monai.io/en/latest/precision_accelerating.html#precision-and-acceleratingTr   )MONAIEnvVars)r   itemsosenvirongetwarningswarnr   Zmonai.utils.miscr   debug)Zmay_enable_tf32Zoverride_tf32_env_varsnameZoverride_valr   r   r   r   r   4   s&   )r   r   )	
__future__r   	functoolsr    r#   __all__	lru_cacher   r   r   r   r   r   <module>   s   