
    &`i*                        d Z ddlZddlZddlZddlZddlmc mZ ddl	m
Z
 ddlmZmZ ddlmZ ddlmZmZ ddlmZ ddlmZ  ej        e          Zej         G d	 d
                      Zd Zd ZddZedk    r e             dS dS )z,This is the script for `ray microbenchmark`.    N)get_or_create_event_loop)asyncio_timeittimeit)get_actor_node_id)	InputNodeMultiOutputNode)CompiledDAG)NodeAffinitySchedulingStrategyc                       e Zd Zd Zd ZdS )DAGActorc                     |S N selfxs     v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/_private/ray_experimental_perf.pyechozDAGActor.echo           c                     |S r   r   r   s     r   echo_multiplezDAGActor.echo_multiple   r   r   N)__name__
__module____qualname__r   r   r   r   r   r   r      s2              r   r   c                  d    t           j        j        sd} t                              |            d S d S )Na  WARNING: Unoptimized build! To benchmark an optimized build, try:
	bazel run -c opt //:gen_ray_pkg
You can also make this permanent by adding
	build --compilation_mode=opt
to your user-wide ~/.bazelrc file. (Do not add this to the project-level .bazelrc file.))ray_raylet	OPTIMIZEDloggerwarning)msgs    r   check_optimized_buildr#      s>    ;  
D 	 	s
 
r   c                      t           j                            t          t	          j                                                    d                                                    S )NF)soft)scheduling_strategy)r	   DAGDriverProxyActoroptionsr
   r   get_runtime_contextget_node_idremoter   r   r   create_driver_actorr,   ,   sY    *22:#%%1133%
 
 
 3   fhh	r   c                    | pg } t                      }t                       t          d           t          j                     dOdt          j         G d d                      }t                      }t          |          }t          j	        d ||fgd          g| t          dfd          z  } |                                t                    t          j	        d fgd          gt          j        j                                                   j                                       | t          d	fd
          z  } t          j                   t          j                    dz  }t          d|            g t#          |          D ]<}|                                t                                        f           =t          j	        d d          gt          j        d D                        D ]\  }j                                        | t          dfd          z  } D ]\  }t          j                   |                                t                    fdt#          |          D             t          j        j                                                   j                                       | t          dfd          z  } t          j                   g t#          |          D ]<}|                                t                                        f           =fdt#          |          D             t          j        d D                        t'                    D ](\  }}|d         j                            |g           )| t          dfd          z  } D ]\  }t          j                   dPdfd}	t(                                          }
t+                      5 |
j                                      d d d            n# 1 swxY w Y   | t          dfd          z  }                                 | t          dfd          z  } ~
t(                                          }
t+                      5 |
j                                      d d d            n# 1 swxY w Y                       d           | |                     |	d!                    z  } ~
t          j                    dz  }d" t#          |          D             t+                      5 t5          fd#D                       d d d            n# 1 swxY w Y   | t          d$| d%fd&          z  }                                 | t          d'| d%fd(          z  } d) t#          |          D             t+                      5 t5          fd*D                       d d d            n# 1 swxY w Y                       d           | |                     |	d+| d%                    z  } d, t#          |          D             t+                      5 D ]}
|
j                                      	 d d d            n# 1 swxY w Y   | t          d-| d%fd.          z  }                                 | t          d/| d%fd0          z  } d1 t#          |          D             t+                      5 D ]}
|
j                                      	 d d d            n# 1 swxY w Y                       d           | |                     |	d2| d%                    z  } d3|k    sJ d4| d5 d6            d7 t#                    D             t+                      5 t5          fd8t#                    D                       d d d            n# 1 swxY w Y   d| t          d9 d%fd:          z  }                                 | t          d; d%fd<          z  } d= t#                    D             t+                      5 t5          fd>t#                    D                       d d d            n# 1 swxY w Y   d?| t          d@ d%fdA          z  }                                 | t          dB d%fdC          z  } dD t#                    D             t+                      5 t5          fdEt#                    D                       d d d            n# 1 swxY w Y   dF| t          dG d%fdH          z  }                                 | t          dI d%fdJ          z  } t(                                          }d3t+                      5  |j        j        fdKt#                    D              d d d            n# 1 swxY w Y   d| t          dLfdM          z  }                                 | t          dLfdN          z  } t          j                     | S )QNz=Tip: set TESTS_TO_RUN='pattern' to run a subset of benchmarksFc                 f    | D ]-}|                     d           |r|                                 .d S )N   0)writeread)chansdo_getchans      r   put_channel_smallzmain.<locals>.put_channel_smallA   sC     	 	DJJt 			 	r   c                       e Zd Zd Zd ZdS )main.<locals>.ChannelReaderc                     d S r   r   )r   s    r   readyz!main.<locals>.ChannelReader.readyI   s    Fr   c                 8    	 |D ]}|                                  r   )r1   )r   r2   r4   s      r   r1   z main.<locals>.ChannelReader.readL   s*     !    DIIKKKK r   N)r   r   r   r9   r1   r   r   r   ChannelReaderr7   G   s2        	 	 		  	  	  	  	 r   r;     z4[unstable] local put:local get, single channel callsc                        d          S )NT)r3   r   r2   r5   s   r   <lambda>zmain.<locals>.<lambda>V   s    !!%555 r   z7[unstable] local put:1 remote get, single channel callsc                                  S r   r   r>   s   r   r?   zmain.<locals>.<lambda>`       !!%(( r      z%Testing multiple readers/channels, n=c                 F    g | ]\  }}|j                                         S r   r9   r+   .0reader_s      r   
<listcomp>zmain.<locals>.<listcomp>m   *    IIIyvqV\  ""IIIr   z7[unstable] local put:n remote get, single channel callsc                                  S r   r   r>   s   r   r?   zmain.<locals>.<lambda>r   rA   r   c                 B    g | ]}t          j        d fgd          S Nr<   ray_channelChannel)rF   rH   rG   reader_nodes     r   rI   zmain.<locals>.<listcomp>y   s=       EFDFK#8"94@@  r   z3[unstable] local put:1 remote get, n channels callsc                                  S r   r   r>   s   r   r?   zmain.<locals>.<lambda>   rA   r   c                 J    g | ]}t          j        d |         gd           S rM   rN   )rF   ireader_and_node_lists     r   rI   zmain.<locals>.<listcomp>   s>       GHD#7#:";TBB  r   c                 F    g | ]\  }}|j                                         S r   rD   rE   s      r   rI   zmain.<locals>.<listcomp>   rJ   r   r   z3[unstable] local put:n remote get, n channels callsc                                  S r   r   r>   s   r   r?   zmain.<locals>.<lambda>   rA   r      c                 v     | j         fdt          |          D              }t          j        |           d S )Nc                     g | ]}d z  S    xr   rF   rH   payload_sizes     r   rI   z'main.<locals>._exec.<locals>.<listcomp>   s    "P"P"P14,#6"P"P"Pr   )executeranger   get)dagnum_argsr^   
output_refs     ` r   _execzmain.<locals>._exec   sB     S["P"P"P"Ph"P"P"PQ

r   c                 >   K   fd}t          | |           d {V S )Nc                     K                        d           d {V } t          | t                    s
|  d {V  d S t          j        |   d {V  d S Nr\   )execute_async
isinstancelistasynciogather)futcompiled_dags    r   _exec_asyncz-main.<locals>.exec_async.<locals>._exec_async   sx      $22488888888Cc4(( +									nc**********r   )r   )tagrp   ro   s     r   
exec_asynczmain.<locals>.exec_async   sX      	+ 	+ 	+ 	+ 	+ $
 
 
 
 
 
 
 
 	
r   z![unstable] single-actor DAG callsc                  R    t          j                             d                    S rh   r   ra   r_   rb   s   r   r?   zmain.<locals>.<lambda>   s    SWS[[=N=N5O5O r   z*[unstable] compiled single-actor DAG callsc                                  S r   r   re   ro   s   r   r?   zmain.<locals>.<lambda>   s    eeL>Q>Q r   T)enable_asyncioz2[unstable] compiled single-actor asyncio DAG callsc                 @    g | ]}t                                           S r   r   r+   rF   rH   s     r   rI   zmain.<locals>.<listcomp>   "    666Ahoo666r   c                 D    g | ]}|j                                       S r   r   bindrF   ainps     r   rI   zmain.<locals>.<listcomp>   '    @@@Aqv{{3//@@@r   z'[unstable] scatter-gather DAG calls, n=z actorsc                  R    t          j                             d                    S rh   rt   ru   s   r   r?   zmain.<locals>.<lambda>       D))** r   z0[unstable] compiled scatter-gather DAG calls, n=c                                  S r   r   rw   s   r   r?   zmain.<locals>.<lambda>       l## r   c                 @    g | ]}t                                           S r   rz   r{   s     r   rI   zmain.<locals>.<listcomp>   r|   r   c                 D    g | ]}|j                                       S r   r~   r   s     r   rI   zmain.<locals>.<listcomp>   r   r   z8[unstable] compiled scatter-gather asyncio DAG calls, n=c                 @    g | ]}t                                           S r   rz   r{   s     r   rI   zmain.<locals>.<listcomp>   r|   r   z[unstable] chain DAG calls, n=c                  R    t          j                             d                    S rh   rt   ru   s   r   r?   zmain.<locals>.<lambda>   r   r   z'[unstable] compiled chain DAG calls, n=c                                  S r   r   rw   s   r   r?   zmain.<locals>.<lambda>   r   r   c                 @    g | ]}t                                           S r   rz   r{   s     r   rI   zmain.<locals>.<listcomp>   r|   r   z/[unstable] compiled chain asyncio DAG calls, n=   zn_cpu (z!) must be greater than n_actors ()c                 @    g | ]}t                                           S r   rz   r{   s     r   rI   zmain.<locals>.<listcomp>  "    999Ahoo999r   c                 \    g | ](}|         j                             |                   )S r   r~   rF   rT   actorsr   s     r   rI   zmain.<locals>.<listcomp>  1    TTTqvay~223q6::TTTr   z:[unstable] multiple args with small payloads DAG calls, n=c                  n    t          j          j        fdt                    D                        S )Nc                     g | ]}d z  S r[   r   r]   s     r   rI   z*main.<locals>.<lambda>.<locals>.<listcomp>      %S%S%Sad\&9%S%S%Sr   r   ra   r_   r`   rb   n_actorsr^   s   r   r?   zmain.<locals>.<lambda>  5    %S%S%S%S5??%S%S%STUU r   zC[unstable] compiled multiple args with small payloads DAG calls, n=c                                   S N)rc   r^   r   re   ro   r   r^   s   r   r?   zmain.<locals>.<lambda>      lXLQQQ r   c                 @    g | ]}t                                           S r   rz   r{   s     r   rI   zmain.<locals>.<listcomp>  r   r   c                 \    g | ](}|         j                             |                   )S r   r~   r   s     r   rI   zmain.<locals>.<listcomp>  r   r   i   z;[unstable] multiple args with medium payloads DAG calls, n=c                  n    t          j          j        fdt                    D                        S )Nc                     g | ]}d z  S r[   r   r]   s     r   rI   z*main.<locals>.<lambda>.<locals>.<listcomp>  r   r   r   r   s   r   r?   zmain.<locals>.<lambda>  r   r   zD[unstable] compiled multiple args with medium payloads DAG calls, n=c                                   S r   r   r   s   r   r?   zmain.<locals>.<lambda>#  r   r   c                 @    g | ]}t                                           S r   rz   r{   s     r   rI   zmain.<locals>.<listcomp>(  r   r   c                 \    g | ](}|         j                             |                   )S r   r~   r   s     r   rI   zmain.<locals>.<listcomp>*  r   r   i   z:[unstable] multiple args with large payloads DAG calls, n=c                  n    t          j          j        fdt                    D                        S )Nc                     g | ]}d z  S r[   r   r]   s     r   rI   z*main.<locals>.<lambda>.<locals>.<listcomp>.  r   r   r   r   s   r   r?   zmain.<locals>.<lambda>.  r   r   zC[unstable] compiled multiple args with large payloads DAG calls, n=c                                   S r   r   r   s   r   r?   zmain.<locals>.<lambda>4  r   r   c                      g | ]
}|         S r   r   )rF   rT   r   s     r   rI   zmain.<locals>.<listcomp>=  s    (G(G(GAQ(G(G(Gr   zO[unstable] single-actor with all args with small payloads DAG calls, n=1 actorsc                  n    t          j          j        fdt                    D                        S )Nc                     g | ]}d z  S r[   r   r]   s     r   rI   z*main.<locals>.<lambda>.<locals>.<listcomp>B  s    %Q%Q%Qad\&9%Q%Q%Qr   r   )rb   n_argsr^   s   r   r?   zmain.<locals>.<lambda>B  s5    %Q%Q%Q%Q5==%Q%Q%QRSS r   c                                   S r   r   )re   ro   r   r^   s   r   r?   zmain.<locals>.<lambda>H  s    lV,OOO r   )F)rX   rX   )r   r#   printr   initr+   r,   r   rO   rP   r   ra   r9   r1   killmultiprocessing	cpu_countr`   appendzipr   r   r   r   experimental_compilerun_until_completer   r   shutdown)resultsloopr;   driver_actordriver_noden_cpurH   r4   reader_node_tuplerr   r   actorre   r   r2   ro   rb   r   r   r   r^   r5   rG   rU   rQ   s               @@@@@@@@@@@@@r   mainr   4   s   mG#%%D	
IJJJ
 HJJJ    	Z              Z  '((L#L11K {(C'DdKKLEv>55555  G
 !!##F#F++K (='>EEFEGFL!!"""
KuvA(((((  G HV%''1,E	
9%
9
9:::5\\ ; ;%%'''//##V[$9:::: ';TBBCEGII4HIIIJJJ) " "	5!!!!vA(((((  G *  	!!##F#F++K    JOPU,,  E GFL!!"""
Kuv=(((((  G HV5\\ ; ;%%'''//##V[$9::::   LQRWLL  E GII4HIIIJJJ#&u.B#C#C # #"1%D6""""v=(((((  G *  	   
 
 
 
 
 	A	 fkk#               v+-O-O-O-O  G ++--Lv46Q6Q6Q6Q6Q  G 	
 	A	 fkk#              ++4+@@Lt&&
@	
 	
  G
 	
 %''1,E66u666F	 B@@@@@@@AAB B B B B B B B B B B B B B Bv@%@@@****  G ++--LvI5III#####  G 76u666F	 B@@@@@@@AAB B B B B B B B B B B B B B B++4+@@Lt&&
UuUUU	
 	
  G 76u666F	 # 	# 	#A&++c""CC	## # # # # # # # # # # # # # # v7777****  G ++--Lv@%@@@#####  G 76u666F	 # 	# 	#A&++c""CC	## # # # # # # # # # # # # # # ++4+@@Lt&&
SUSSSTT  G HDDDDDD 	 :9x999F	 VTTTTTE(OOTTTUUV V V V V V V V V V V V V V VLvVXVVVUUUUUU  G ++--Lv		 	 	QQQQQQQ  G :9x999F	 VTTTTTE(OOTTTUUV V V V V V V V V V V V V V VLvWhWWWUUUUUU  G ++--Lv		 	 	QQQQQQQ  G :9x999F	 VTTTTTE(OOTTTUUV V V V V V V V V V V V V V V#LvVXVVVUUUUUU  G ++--Lv		 	 	QQQQQQQ  G OOEF	 I&e!&(G(G(G(Gv(G(G(GHI I I I I I I I I I I I I I ILv	SSSSSS  G
 ++--Lv	OOOOOOO  G LNNNNs    Q''Q+.Q+TT	TV**V.1V.%YYY:"[))[-0[-$"^^^*aaa*dd
d
*f==gg )i55i9<i9__main__r   )__doc__rl   loggingr   r   ray.experimental.channelexperimentalchannelrO   ray._common.utilsr   'ray._private.ray_microbenchmark_helpersr   r   ray._private.test_utilsr   ray.dagr   r   ray.dag.compiled_dag_noder	   ray.util.scheduling_strategiesr
   	getLoggerr   r    r+   r   r#   r,   r   r   r   r   <module>r      sw   2 2       



 . . . . . . . . .      K J J J J J J J 5 5 5 5 5 5 . . . . . . . . 1 1 1 1 1 1 I I I I I I		8	$	$            Y Y Y Yx zDFFFFF r   