o
    XÎµi5  ã                   @   s   d d„ Z dd„ Zdd„ ZdS )c                  C   sv   dd l } |  ¡ }|  ¡ j}z#dd l}| |j¡\}}||jkr.| ¡ j	}t
|| |ƒ}W |S W |S  ty:   Y |S w )Né    )ÚpsutilÚProcessÚvirtual_memoryÚ	availableÚresourceÚ	getrlimitÚ	RLIMIT_ASÚRLIM_INFINITYÚmemory_infoÚvmsÚminÚImportError)r   Úthis_processÚavailable_memoryr   Ú_Úhard_mem_limitÚused_memory© r   úL/home/ubuntu/.local/lib/python3.10/site-packages/trainer/utils/cpu_memory.pyÚget_available_cpu_memory   s    


úýýr   c                 C   sl   z+dd l }t| d ƒ}| |j¡\}}||jkrt||ƒ}n|}| |j||f¡ W d S  ty5   Y d S w )Nr   i   @)r   Úintr   r   r	   r   Ú	setrlimitr   )Únum_gigabytesr   Ú	num_bytesr   Ú
hard_limitr   r   r   Úset_cpu_memory_limit   s   
ÿr   c                 C   s&   t | tƒot| jƒdkod| jd v S )Né   z*DefaultCPUAllocator: can't allocate memoryr   )Ú
isinstanceÚRuntimeErrorÚlenÚargs)Ú	exceptionr   r   r   Úis_out_of_cpu_memory#   s
   
ÿýr"   N)r   r   r"   r   r   r   r   Ú<module>   s    