o
    Tia
                     @   sl   d Z ddlZddlmZmZ dZdZdZdgZdd	d
Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )zM
Functionality of swapping optimizer tensors to/from (NVMe) storage devices.
    N   )Jobrun_job   @      Fc                 C   s(   |s| t v rtd|  d|  d S d S )Nztid z: )LOG_TIDSprint)tidmsgforce r   T/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/nvme/test_ds_aio_utils.pytask_log   s   r   c                 C   s(   | j |ksJ |   | jdksJ d S )NF)partieswaitbroken)barriernum_partiesr   r   r   task_barrier   s   r   c           	      C   s   |rdnd}d |v rt d| j d| d d S tdd |D }tdd |D }|d	kr0d	n|| t }t d
| d| d t d
| d| d tdd |D }|d	kr[d	n|| t }t d| d| d t d| d| d d S )NReadWritezFailure in one of  z
 processesc                 S   s   g | ]\}}}|qS r   r   ).0_	num_bytesr   r   r   
<listcomp>$       z"report_results.<locals>.<listcomp>c                 S   s   g | ]\}}}|qS r   r   )r   r   secr   r   r   r   &   r   r   zTask z Latency = z secz	 Speed = z GB/secc                 S   s   g | ]\}}}|qS r   r   )r   r   r   r   r   r   r   +   r   zE2E )r	   threadssummaxBYTES_PER_GB)	argsread_oppool_results	io_stringtotal_bytestask_latency_sectask_speed_GBe2e_latency_sece2e_speed_GBr   r   r   report_results   s   r,   c                 C   sJ   | t kr| t  dkrt }d}n| t dksJ t}d}| | }|t|fS )Nr   1M1K)BYTES_PER_MBBYTES_PER_KBint)io_bytes
block_sizeblock_size_stringblock_countr   r   r   get_block_size_and_count1   s   r6   c                 C   sH   dddd}| d t | v r t| d d || d   }|S t| S )Nr   r   r   )KMG)listkeysr1   )value	unit_dict	int_valuer   r   r   refine_integer_value>   s
   r@   c              	   C   s,   |rdnd}t j| d| d| d| S )Nreadwrite_aio_r   z.pt.)ospathjoin)folderr$   sizer
   r&   r   r   r   create_filenameG   s    rI   c                 C   sp   t |\}}td|  d| d| gd}td|  d| d|  d t| td	| d|  d d S )
Nzdd if=/dev/urandom of=z bs=z count=)cmd_linez[Start] Create z of z bytes by running z ....z[Done] Create read file of )r6   r   r	   cmdr   )filenamer   r3   r5   dd_jobr   r   r   create_fileL   s
    rN   )F)__doc__rD   
ds_aio_jobr   r   r"   r/   r0   r   r   r   r,   r6   r@   rI   rN   r   r   r   r   <module>   s   
	