a
    ==ic¶  ã                   @   sd   d dl mZmZ d dlmZ d dlZdZdZdZdZ	dd	„ Z
d
d„ Zedkr`e ddg¡ eƒ  dS )é    )ÚcoreÚ	workspace)Ú
caffe2_pb2Ni   iè  i   @é0   c                 C   sº   t  | d ¡}d| ¡ _t ¡ }tj|_d|_t	t
ƒD ]&}|jg | d t|ƒ ttg|d q6t  | ¡}d| ¡ _|r|d|_t	t
ƒD ],}|j| d t|ƒ | d t|ƒ |d q„||fS )	NÚ_initZasync_schedulingr   z/input_blob_)ÚshapeÚdevice_optioné   z/output_blob_)r   )r   ZNetZProtoÚtyper   ZDeviceOptionZCPUZdevice_typeZnuma_node_idÚrangeÚNUM_REPLICASZ
XavierFillÚstrÚ	SHAPE_LENZCopy)Znet_nameZcross_socketZinit_netZnuma_device_optionZ
replica_idÚnet© r   úm/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/caffe2/python/numa_benchmark.pyÚ	build_net   s&    
ÿ

þr   c            	      C   sL  t  ¡ rt  ¡ dksJ ‚tddƒ\} }tddƒ\}}t  | ¡ t  |  ¡ ¡ t  |¡ t  | ¡ ¡ t  |¡ t  |¡ tdƒD ]Æ}t ¡ }t  | ¡ t	¡ t ¡ | }t
d|ƒ dt t t t	 | t }t
d |¡ƒ t ¡ }t  | ¡ t	¡ t ¡ | }t
d	|ƒ dt t t t	 | t }t
d
 |¡ƒ t
d || ¡ƒ q€d S )Né   Ú
single_netFÚ	cross_netTé   zSingle socket time:zSingle socket BW: {} GB/szCross socket time:zCross socket BW: {} GB/szSingle BW / Cross BW: {})r   ZIsNUMAEnabledZGetNumNUMANodesr   Z	CreateNetZRunNetÚNamer   ÚtimeÚNUM_ITERÚprintr   r   ÚGBÚformat)	Zsingle_initr   Z
cross_initr   Ú_ÚtÚdtZ	single_bwZcross_bwr   r   r   Úmain$   s.    





r    Ú__main__Zcaffe2z--caffe2_cpu_numa_enabled=1)Zcaffe2.pythonr   r   Zcaffe2.protor   r   r   r   r   r   r   r    Ú__name__Z
GlobalInitr   r   r   r   Ú<module>   s   