mirror of
https://github.com/wassname/ray.git
synced 2026-07-19 11:27:32 +08:00
Support concurrent Actor calls in Ray (#6053)
This commit is contained in:
+29
-6
@@ -142,14 +142,28 @@ def main():
|
||||
def actor_sync():
|
||||
ray.get(a.small_value.remote())
|
||||
|
||||
timeit("single client actor calls sync", actor_sync)
|
||||
timeit("1:1 actor calls sync", actor_sync)
|
||||
|
||||
a = Actor.remote()
|
||||
|
||||
def actor_async():
|
||||
ray.get([a.small_value.remote() for _ in range(1000)])
|
||||
|
||||
timeit("single client actor calls async", actor_async, 1000)
|
||||
timeit("1:1 actor calls async", actor_async, 1000)
|
||||
|
||||
a = Actor.options(is_direct_call=True).remote()
|
||||
|
||||
def actor_concurrent():
|
||||
ray.get([a.small_value.remote() for _ in range(1000)])
|
||||
|
||||
timeit("1:1 direct actor calls async", actor_concurrent, 1000)
|
||||
|
||||
a = Actor.options(is_direct_call=True, max_concurrency=16).remote()
|
||||
|
||||
def actor_concurrent():
|
||||
ray.get([a.small_value.remote() for _ in range(1000)])
|
||||
|
||||
timeit("1:1 direct actor calls concurrent", actor_concurrent, 1000)
|
||||
|
||||
n_cpu = multiprocessing.cpu_count() // 2
|
||||
a = [Actor.remote() for _ in range(n_cpu)]
|
||||
@@ -161,7 +175,7 @@ def main():
|
||||
def actor_multi2():
|
||||
ray.get([work.remote(a) for _ in range(m)])
|
||||
|
||||
timeit("multi client actor calls async", actor_multi2, m * n)
|
||||
timeit("n:n actor calls async", actor_multi2, m * n)
|
||||
|
||||
n = 5000
|
||||
n_cpu = multiprocessing.cpu_count() // 2
|
||||
@@ -171,15 +185,24 @@ def main():
|
||||
def actor_async_direct():
|
||||
ray.get(client.small_value_batch.remote(n))
|
||||
|
||||
timeit("single client direct actor calls async", actor_async_direct,
|
||||
n * len(actors))
|
||||
timeit("1:n direct actor calls async", actor_async_direct, n * len(actors))
|
||||
|
||||
clients = [Client.remote(a) for a in actors]
|
||||
|
||||
def actor_multi2_direct():
|
||||
ray.get([c.small_value_batch.remote(n) for c in clients])
|
||||
|
||||
timeit("multi client direct actor calls async", actor_multi2_direct,
|
||||
timeit("n:n direct actor calls async", actor_multi2_direct,
|
||||
n * len(clients))
|
||||
|
||||
n = 1000
|
||||
actors = [Actor._remote(is_direct_call=True) for _ in range(n_cpu)]
|
||||
clients = [Client.remote(a) for a in actors]
|
||||
|
||||
def actor_multi2_direct_arg():
|
||||
ray.get([c.small_value_batch_arg.remote(n) for c in clients])
|
||||
|
||||
timeit("n:n direct actor calls with arg async", actor_multi2_direct_arg,
|
||||
n * len(clients))
|
||||
|
||||
n = 1000
|
||||
|
||||
Reference in New Issue
Block a user