
    &`i#                        d Z ddlZddlZddlZddlZddlZddlmZ	 ddl
mZ  ej        e          Z ej        d           G d d                      Zej         G d d	                      Z ej        d           G d
 d                      Zej        d             Zej        d             Zej        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)main)timeit)num_cpusc                        e Zd Zd Zd Zd ZdS )Actorc                     dS Ns   ok selfs    i/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/_private/ray_perf.pysmall_valuezActor.small_value       u    c                     dS r	   r
   r   xs     r   small_value_argzActor.small_value_arg   r   r   c                 \    t          j        d t          |          D                        d S )Nc                 @    g | ]}t                                           S r
   r   remote.0_s     r   
<listcomp>z+Actor.small_value_batch.<locals>.<listcomp>   $    888!##%%888r   raygetranger   ns     r   small_value_batchzActor.small_value_batch   s-    88uQxx88899999r   N)__name__
__module____qualname__r   r   r$   r
   r   r   r   r      sA            : : : : :r   r   c                        e Zd Zd Zd Zd ZdS )
AsyncActorc                 
   K   dS r	   r
   r   s    r   r   zAsyncActor.small_value         ur   c                 
   K   dS r	   r
   r   s     r   small_value_with_argzAsyncActor.small_value_with_arg!   r+   r   c                 l   K   t          j        d t          |          D                        d {V  d S )Nc                 @    g | ]}t                                           S r
   r   r   s     r   r   z0AsyncActor.small_value_batch.<locals>.<listcomp>%   s$    CCCQK..00CCCr   )asynciowaitr!   r"   s     r   r$   zAsyncActor.small_value_batch$   sC      lCC%((CCCDDDDDDDDDDDr   N)r%   r&   r'   r   r-   r$   r
   r   r   r)   r)      sF            E E E E Er   r)   c                        e Zd Zd Zd Zd ZdS )Clientc                 D    t          |t                    s|g}|| _        d S N)
isinstancelistservers)r   r8   s     r   __init__zClient.__init__*   s&    '4(( 	 iGr   c                     g }| j         D ]0|                    fdt          |          D                        1t          j        |           d S )Nc                 B    g | ]}j                                         S r
   r   )r   r   ss     r   r   z,Client.small_value_batch.<locals>.<listcomp>2   s'    EEEqAM0022EEEr   )r8   extendr!   r   r    )r   r#   resultsr<   s      @r   r$   zClient.small_value_batch/   sa     	G 	GANNEEEEE!HHEEEFFFFr   c                     t          j        d          g }| j        D ]1|                    fdt	          |          D                        2t          j        |           d S )Nr   c                 D    g | ]}j                                       S r
   )r   r   )r   r   r<   r   s     r   r   z0Client.small_value_batch_arg.<locals>.<listcomp>9   s*    JJJAA-44Q77JJJr   )r   putr8   r=   r!   r    )r   r#   r>   r<   r   s      @@r   small_value_batch_argzClient.small_value_batch_arg5   sr    GAJJ 	L 	LANNJJJJJqJJJKKKKr   N)r%   r&   r'   r9   r$   rB   r
   r   r   r3   r3   (   sA          
      r   r3   c                      dS r	   r
   r
   r   r   r   r   =   s    5r   c                 `    d t          |           D             }t          j        |           dS )Nc                 @    g | ]}t                                           S r
   r   r   s     r   r   z%small_value_batch.<locals>.<listcomp>D   r   r   r   r!   r   r    )r#   	submitteds     r   r$   r$   B   s0    88uQxx888IGI1r   c                  |    g } t          d          D ])}|                     t          j        d                     *| S )N'     )r!   appendr   rA   )obj_refsr   s     r   create_object_containing_refrM   I   s>    H5\\ $ $

####Or   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.))r   _raylet	OPTIMIZEDloggerwarning)msgs    r   check_optimized_buildrT   Q   s>    ;  
D 	 	s
 
r   c           	      .   !"#$% | pg } t                       t          d           t          j                     t          j        d          $$fd}d }t          j        d             fd}t          j        dt          j                  | t          d	|          z  } | t          d
|          z  } | t          d|d          z  } fd}| t          d|d          z  } d }| t          d|          z  } t          j        d             fd}| t          d|d          z  } t                                          ""fd}| t          d|          z  } d }| t          d|          z  } d }	| t          d|	          z  } d }
| t          d|
d          z  } d dd  t                    D              fd!}| t          d"| z            z  } t                                          fd#}| t          d$|          z  } t                                          fd%}| t          d&|d          z  } t                              d'(                                          fd)}| t          d*|d          z  } d+ t          j                    d,z  !d- t          !          D             t                                          fd.}| t          d/| t#                    z            z  } t          j                    d,z  !d0 t          !          D             t          j         !fd1            %%fd2}| t          d3| z            z  } d d4 t          !          D             d5 D              fd6}| t          d7| t#                    z            z  } t$                                          fd8}| t          d9|          z  } t$                                          fd:}| t          d;|d          z  } t$                                          fd<}| t          d=|d          z  } d+ t          j                    d,z  !d> t          !          D             t                                          fd?}| t          d@| t#                    z            z  } d+ dt          j                    d,z  !dA t          !          D             t          j         !fdB            fdC}| t          dD| z            z  } t          j                     dEdFt          j        dGdEiH           fdI#| t          dJ#fdK          z  } t          j                     t)          |            | S )LNz=Tip: set TESTS_TO_RUN='pattern' to run a subset of benchmarksr   c                  0    t          j                    d S r5   r   r    )values   r   	get_smallzmain.<locals>.get_smallj   s    r   c                  .    t          j        d           d S )Nr   r   rA   r
   r   r   	put_smallzmain.<locals>.put_smallm   s    




r   c                  R    t          d          D ]} t          j        d           d S )Nd   r   )r!   r   rA   r   s    r   do_put_smallzmain.<locals>.do_put_smallp   s0    s 	 	AGAJJJJ	 	r   c                  b    t          j         fdt          d          D                        d S )Nc                 8    g | ]}                                 S r
   r   )r   r   r`   s     r   r   z1main.<locals>.put_multi_small.<locals>.<listcomp>v   s%    :::1$$&&:::r   
   r   )r`   s   r   put_multi_smallzmain.<locals>.put_multi_smallu   s4    ::::b		:::;;;;;r   i  @dtypez&single client get calls (Plasma Store)z&single client put calls (Plasma Store)z%multi client put calls (Plasma Store)  c                  0    t          j                    d S r5   r[   )arrs   r   	put_largezmain.<locals>.put_large   s    r   zsingle client put gigabytesg?c                  `    d t          d          D             } t          j        |            dS )Nc                 @    g | ]}t                                           S r
   r   r   s     r   r   z3main.<locals>.small_value_batch.<locals>.<listcomp>   s$    ???a[''))???r   rh   r   rF   )rG   s    r   r$   zmain.<locals>.small_value_batch   s0    ??5;;???		qr   z!single client tasks and get batchc                      t          d          D ]4} t          j        t          j        dt          j                             5d S )Nrd   i   rf   )r!   r   rA   npzerosint64r_   s    r   do_putzmain.<locals>.do_put   sJ    r 	@ 	@AGBH-RX>>>????	@ 	@r   c                  b    t          j         fdt          d          D                        d S )Nc                 8    g | ]}                                 S r
   rc   )r   r   rr   s     r   r   z+main.<locals>.put_multi.<locals>.<listcomp>   s!    444Q444r   rd   r   )rr   s   r   	put_multizmain.<locals>.put_multi   s4    4444%))44455555r   zmulti client put gigabytesg       @c                  0    t          j                    d S r5   rW   )obj_containing_refs   r   get_containing_object_refz'main.<locals>.get_containing_object_ref   s    "#####r   z,single client get object containing 10k refsc                      d} d t          |           D             }d}t          |           D ]}t          j        ||          \  }}|rd} d S )Nrh   c                 @    g | ]}t                                           S r
   r   r   s     r   r   z4main.<locals>.wait_multiple_refs.<locals>.<listcomp>   s$    CCCa[''))CCCr   T)fetch_localF)r!   r   r1   )num_objs	not_readyr{   r   _readys        r   wait_multiple_refsz main.<locals>.wait_multiple_refs   sm    CC5??CCC	 x 	$ 	$A # L L LFI $#	$ 	$r   zsingle client wait 1k refsc                  \    t          j        t                                                     d S r5   r   r    r   r   r
   r   r   
small_taskzmain.<locals>.small_task   s$    ""$$%%%%%r   zsingle client tasks syncc                  \    t          j        d t          d          D                        d S )Nc                 @    g | ]}t                                           S r
   r   r   s     r   r   z2main.<locals>.small_task_async.<locals>.<listcomp>   s$    ;;;!##%%;;;r   rh   r   r
   r   r   small_task_asynczmain.<locals>.small_task_async   s-    ;;uT{{;;;<<<<<r   zsingle client tasks asyncrI      c                 @    g | ]}t                                           S r
   r   r   r   s     r   r   zmain.<locals>.<listcomp>   s     ///ellnn///r   c                  L    fdD             } t          j        |            d S )Nc                 D    g | ]}|j                                       S r
   )r$   r   )r   ar#   s     r   r   z,main.<locals>.multi_task.<locals>.<listcomp>   s*    CCCqQ(//22CCCr   rW   )rG   actorsr#   s    r   
multi_taskzmain.<locals>.multi_task   s2    CCCCFCCC		r   zmulti client tasks asyncc                  ^    t          j         j                                                   d S r5   r   r   s   r   
actor_synczmain.<locals>.actor_sync   '    $$&&'''''r   z1:1 actor calls syncc                  b    t          j         fdt          d          D                        d S )Nc                 B    g | ]}j                                         S r
   r   r   r   r   s     r   r   z-main.<locals>.actor_async.<locals>.<listcomp>   '    ===A%%''===r   rh   r   r   s   r   actor_asynczmain.<locals>.actor_async   4    ====t===>>>>>r   z1:1 actor calls async   )max_concurrencyc                  b    t          j         fdt          d          D                        d S )Nc                 B    g | ]}j                                         S r
   r   r   s     r   r   z2main.<locals>.actor_concurrent.<locals>.<listcomp>   r   r   rh   r   r   s   r   actor_concurrentzmain.<locals>.actor_concurrent   r   r   z1:1 actor calls concurrenti     c                 @    g | ]}t                                           S r
   r   _remoter   s     r   r   zmain.<locals>.<listcomp>        444!emmoo444r   c                  `    t          j         j                                                 d S r5   r   r    r$   r   clientr#   s   r   actor_async_directz main.<locals>.actor_async_direct   *    (//2233333r   z1:n actor calls asyncc                 @    g | ]}t                                           S r
   r   r   s     r   r   zmain.<locals>.<listcomp>   s     ...A...r   c                 f     t          j         fdt                    D                        d S )Nc                 T    g | ]$}|z           j                                         %S r
   r   r   ir   n_cpus     r   r   z&main.<locals>.work.<locals>.<listcomp>   1    JJJAE	".5577JJJr   r   r   r#   r   s   `r   workzmain.<locals>.work   8    JJJJJqJJJKKKKKr   c                  d    t          j         fdt                    D                        d S )Nc                 :    g | ]}                               S r
   rc   )r   r   r   r   s     r   r   z.main.<locals>.actor_multi2.<locals>.<listcomp>   s#    222AQ222r   r   )r   mr   s   r   actor_multi2zmain.<locals>.actor_multi2   s7    22222q22233333r   zn:n actor calls asyncc                 @    g | ]}t                                           S r
   r   r   s     r   r   zmain.<locals>.<listcomp>   r   r   c                 B    g | ]}t                               |          S r
   )r3   r   )r   r   s     r   r   zmain.<locals>.<listcomp>   s$    000Av}}Q000r   c                  H    t          j        fd D                        d S )Nc                 D    g | ]}|j                                       S r
   )rB   r   )r   cr#   s     r   r   z9main.<locals>.actor_multi2_direct_arg.<locals>.<listcomp>   s*    DDDq(//22DDDr   rW   )clientsr#   s   r   actor_multi2_direct_argz%main.<locals>.actor_multi2_direct_arg   s.    DDDDGDDDEEEEEr   zn:n actor calls with arg asyncc                  ^    t          j         j                                                   d S r5   r   r   s   r   r   zmain.<locals>.actor_sync   r   r   z1:1 async-actor calls syncc                  b    t          j         fdt          d          D                        d S )Nc                 B    g | ]}j                                         S r
   r   r   s     r   r   z-main.<locals>.async_actor.<locals>.<listcomp>  r   r   rh   r   r   s   r   async_actorzmain.<locals>.async_actor   r   r   z1:1 async-actor calls asyncc                  b    t          j         fdt          d          D                        d S )Nc                 D    g | ]}j                             |          S r
   )r-   r   )r   r   r   s     r   r   z-main.<locals>.async_actor.<locals>.<listcomp>  s*    GGGa'..q11GGGr   rh   r   r   s   r   r   zmain.<locals>.async_actor  s4    GGGG5;;GGGHHHHHr   z%1:1 async-actor calls with args asyncc                 @    g | ]}t                                           S r
   r)   r   r   s     r   r   zmain.<locals>.<listcomp>  s$    888aj!!888r   c                  `    t          j         j                                                 d S r5   r   r   s   r   async_actor_asynczmain.<locals>.async_actor_async  r   r   z1:n async-actor calls asyncc                 @    g | ]}t                                           S r
   r   r   s     r   r   zmain.<locals>.<listcomp>  s$    333				333r   c                 f     t          j         fdt                    D                        d S )Nc                 T    g | ]$}|z           j                                         %S r
   r   r   s     r   r   z2main.<locals>.async_actor_work.<locals>.<listcomp>  r   r   r   r   s   `r   async_actor_workzmain.<locals>.async_actor_work  r   r   c                  d    t          j         fdt                    D                        d S )Nc                 :    g | ]}                               S r
   rc   )r   r   r   r   s     r   r   z3main.<locals>.async_actor_multi.<locals>.<listcomp>   s(    >>>!((++>>>r   r   )r   r   r   s   r   async_actor_multizmain.<locals>.async_actor_multi  s7    >>>>>U1XX>>>?????r   zn:n async-actor calls asyncr^   rJ   custom)	resourcesc                     fdt          |           D             }d |D              |D ]!}t          j                            |           "d S )Nc                 ~    g | ]9}t           j                            d  t                    D                       :S )c                     g | ]}d diS )r   gMbP?r
   r   s     r   r   zKmain.<locals>.placement_group_create_removal.<locals>.<listcomp>.<listcomp>0  s    GGGq(E*GGGr   )bundles)r   utilplacement_groupr!   )r   r   NUM_BUNDLESs     r   r   z@main.<locals>.placement_group_create_removal.<locals>.<listcomp>.  s[     
 
 
  H$$GGE+4F4FGGG %  
 
 
r   c                 :    g | ]}|                     d           S )   )timeout_seconds)r1   )r   pgs     r   r   z@main.<locals>.placement_group_create_removal.<locals>.<listcomp>4  s&    333	$	$333r   )r!   r   r   remove_placement_group)num_pgspgsr   r   s      r   placement_group_create_removalz,main.<locals>.placement_group_create_removal-  s}    
 
 
 
 7^^	
 
 
 	43s3333  	0 	0BH++B////	0 	0r   zplacement group create/removalc                                  S r5   r
   )NUM_PGSr   s   r   <lambda>zmain.<locals>.<lambda>?  s    ..w77 r   )rT   printr   initrA   r   ro   rp   rq   r   rM   r!   r   optionsmultiprocessing	cpu_countr3   lenr)   shutdownclient_microbenchmark_main)&r>   rY   r\   re   rk   r$   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rj   r   r   r   rr   r`   r   r#   r   rw   r   rX   r   s&                        @@@@@@@@@@@@@@@@@r   r   r   _   s   mG	
IJJJHJJJGAJJE       	Z  Z< < < < < ($BH
5
5
5Cv>	JJJGv>	JJJGv=PTUUUG     v3YHHHG  
 v9;LMMMGZ@ @ Z@6 6 6 6 6 v2I|LLLG5<<>>$ $ $ $ $ v68Q  G
$ 
$ 
$ v24FGGGG& & & v0*===G= = = v13CTJJJGA	A//eAhh///F      v0*a!eDDDGA( ( ( ( ( v,j999GA? ? ? ? ? v-{DAAAGb))0022A? ? ? ? ? v24DdKKKGA%''1,E44uU||444F]]6""F4 4 4 4 4 4 v-/A1s6{{?SSSG%''1,E..u...AZL L L L L ZL4 4 4 4 4 4 4 v-|QUCCCGA44uU||444F00000GF F F F F F v(*A1s7||CS  G 	A( ( ( ( ( v2J???GA? ? ? ? ? v3[$GGGGAI I I I I v={DQQQGA%''1,E885<<888F]]6""F4 4 4 4 4 4 v35FCPVKKXXXGA	A%''1,E33eEll333AZL L L L L ZL@ @ @ @ @ @ @ v35FANNNGLNNN GKH#''''0 0 0 0 0  v(77777  G
 LNNNw'''Nr   __main__r5   )__doc__r0   loggingr   numpyro   r   &ray._private.ray_client_microbenchmarkr   r   'ray._private.ray_microbenchmark_helpersr   	getLoggerr%   rQ   r   r   r)   r3   r   r$   rM   rT   r
   r   r   <module>r      s   2 2           



 U U U U U U : : : : : :		8	$	$ Q: : : : : : : : E E E E E E E E Q       (           g g g gT zDFFFFF r   