Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[core][experimental] Add experimental compiled DAG #41769

Merged
merged 81 commits into from
Dec 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
3044247
ip
Nov 16, 2023
8c5efd8
basic working.
Nov 17, 2023
664b07a
enhancement
Nov 17, 2023
8f6f8d2
working now.
Nov 17, 2023
12b977d
initial commit
stephanie-wang Nov 29, 2023
1c935b9
Add special calls for create and put mutable objects
stephanie-wang Nov 29, 2023
c2dbf1f
feature flag for shared mem seal, only acquire once per ray.get
stephanie-wang Nov 30, 2023
6d4aa94
put-get
stephanie-wang Nov 30, 2023
bc4f1e9
rm shared mem seal
stephanie-wang Nov 30, 2023
c4a2378
fix num_readers on first version, unit tests pass now
stephanie-wang Nov 30, 2023
e40d3c8
mutable object -> channel
stephanie-wang Nov 30, 2023
b79b7d1
micro
stephanie-wang Nov 30, 2023
5ea0fe3
support different metadata
stephanie-wang Dec 1, 2023
cbe257f
better error message
stephanie-wang Dec 1, 2023
a68cefd
cleanup
stephanie-wang Dec 1, 2023
ea57894
Test for errors, better error handling when too many readers
stephanie-wang Dec 2, 2023
5bbf379
remove unneeded
stephanie-wang Dec 2, 2023
1e16e09
java build
stephanie-wang Dec 2, 2023
14c3a44
Merge remote-tracking branch 'sang/dag-api' into compiled-dag
stephanie-wang Dec 2, 2023
580b3ad
rename
stephanie-wang Dec 2, 2023
888950a
Merge remote-tracking branch 'upstream/master' into compiled-dag
stephanie-wang Dec 2, 2023
bdfbb8a
tmp
stephanie-wang Dec 2, 2023
fe11cc3
test metadata change in remote reader
stephanie-wang Dec 2, 2023
b6a66f2
Merge branch 'mutable-objects-2' into compiled-dag
stephanie-wang Dec 2, 2023
e11b614
build
stephanie-wang Dec 4, 2023
b6150a3
scatter-gather DAG works
stephanie-wang Dec 5, 2023
5336262
fix
stephanie-wang Dec 5, 2023
99a38c2
fix
stephanie-wang Dec 5, 2023
e88c40f
fix
stephanie-wang Dec 6, 2023
95e871b
compile?
stephanie-wang Dec 6, 2023
204bb9b
fix
stephanie-wang Dec 6, 2023
4703f34
compile?
stephanie-wang Dec 6, 2023
420bd1c
build
stephanie-wang Dec 6, 2023
4cabbc5
x
stephanie-wang Dec 6, 2023
b44ef8a
fix
stephanie-wang Dec 6, 2023
13b1d53
Merge branch 'mutable-objects-2' into compiled-dag
stephanie-wang Dec 6, 2023
e54972b
unit test
stephanie-wang Dec 6, 2023
881d5ff
copyright
stephanie-wang Dec 6, 2023
ef2cfb7
test
stephanie-wang Dec 6, 2023
ca22a63
Merge remote-tracking branch 'upstream/master' into mutable-objects-2
stephanie-wang Dec 6, 2023
5fbfac5
Merge branch 'mutable-objects-2' into compiled-dag
stephanie-wang Dec 6, 2023
9396810
tmp
stephanie-wang Dec 6, 2023
dbbb3d6
Only allocate PlasmaObjectHeader if is_mutable=true
stephanie-wang Dec 7, 2023
9078776
Only call Read/Write Acquire/Release if is_mutable=true
stephanie-wang Dec 7, 2023
2e677c3
x
stephanie-wang Dec 7, 2023
f06b543
cpp test
stephanie-wang Dec 7, 2023
950bbb4
Merge branch 'mutable-objects-2' into compiled-dag
stephanie-wang Dec 7, 2023
494cb53
Revert "tmp"
stephanie-wang Dec 7, 2023
05b002f
cleanup
stephanie-wang Dec 7, 2023
521c73b
Support no-OutputNode DAGs
stephanie-wang Dec 7, 2023
5b58250
Support non-DAG args
stephanie-wang Dec 7, 2023
b5beca4
errors
stephanie-wang Dec 7, 2023
cc2e795
lint
stephanie-wang Dec 7, 2023
c17c367
doc
stephanie-wang Dec 7, 2023
4dfa31e
skip tests on windows
stephanie-wang Dec 7, 2023
126296f
Merge remote-tracking branch 'upstream/master' into mutable-objects-2
stephanie-wang Dec 7, 2023
03f4fbd
larger CI machine
stephanie-wang Dec 8, 2023
b1f3f34
Merge branch 'mutable-objects-2' into compiled-dag
stephanie-wang Dec 8, 2023
3e7dfa2
Merge branch 'master' into mutable-objects-2
stephanie-wang Dec 8, 2023
7dde158
cleanup
stephanie-wang Dec 9, 2023
63cc16d
cleanup
stephanie-wang Dec 9, 2023
dca1239
perf
stephanie-wang Dec 9, 2023
7b8472b
add normal DAG
stephanie-wang Dec 9, 2023
d94c485
Merge remote-tracking branch 'upstream/master' into compiled-dag
stephanie-wang Dec 9, 2023
740169b
x
stephanie-wang Dec 9, 2023
3d5ffca
Merge branch 'mutable-objects-2' into compiled-dag
stephanie-wang Dec 11, 2023
8dde781
Merge remote-tracking branch 'upstream/master' into compiled-dag
stephanie-wang Dec 12, 2023
905a5bc
merge
stephanie-wang Dec 12, 2023
4436b1f
revert
stephanie-wang Dec 12, 2023
f105ed5
revert
stephanie-wang Dec 12, 2023
00f3f1c
x
stephanie-wang Dec 12, 2023
257457d
buffer size bytes
stephanie-wang Dec 12, 2023
71c32ae
optional
stephanie-wang Dec 13, 2023
2ba93f0
x
stephanie-wang Dec 13, 2023
3a4b2f4
Merge remote-tracking branch 'upstream/master' into compiled-dag
stephanie-wang Dec 13, 2023
973ba68
Merge remote-tracking branch 'upstream/master' into compiled-dag
stephanie-wang Dec 13, 2023
ac5fa55
x
stephanie-wang Dec 13, 2023
35a37fd
lint?
stephanie-wang Dec 13, 2023
1326331
test
stephanie-wang Dec 13, 2023
fadec07
API
stephanie-wang Dec 13, 2023
ff19557
x
stephanie-wang Dec 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions python/ray/_private/ray_perf.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import ray

import ray.experimental.channel as ray_channel
from ray.dag import InputNode, MultiOutputNode

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -369,6 +370,58 @@ def read(self, chans):
for reader in readers:
ray.kill(reader)

# Tests for compiled DAGs.

def _exec(dag):
output_channel = dag.execute(b"x")
output_channel.begin_read()
output_channel.end_read()

def _exec_multi_output(dag):
output_channels = dag.execute(b"x")
for output_channel in output_channels:
output_channel.begin_read()
for output_channel in output_channels:
output_channel.end_read()

@ray.remote
class Actor:
def echo(self, x):
return x

a = Actor.remote()
with InputNode() as inp:
dag = a.echo.bind(inp)

results += timeit("single-actor DAG calls", lambda: ray.get(dag.execute(b"x")))
dag = dag.experimental_compile()
results += timeit("compiled single-actor DAG calls", lambda: _exec(dag))

del a
n_cpu = multiprocessing.cpu_count() // 2
actors = [Actor.remote() for _ in range(n_cpu)]
with InputNode() as inp:
dag = MultiOutputNode([a.echo.bind(inp) for a in actors])
results += timeit(
"scatter-gather DAG calls, n={n_cpu} actors", lambda: ray.get(dag.execute(b"x"))
)
dag = dag.experimental_compile()
results += timeit(
f"compiled scatter-gather DAG calls, n={n_cpu} actors",
lambda: _exec_multi_output(dag),
)

actors = [Actor.remote() for _ in range(n_cpu)]
with InputNode() as inp:
dag = inp
for a in actors:
dag = a.echo.bind(dag)
results += timeit(
f"chain DAG calls, n={n_cpu} actors", lambda: ray.get(dag.execute(b"x"))
)
dag = dag.experimental_compile()
results += timeit(f"compiled chain DAG calls, n={n_cpu} actors", lambda: _exec(dag))

ray.shutdown()

############################
Expand Down
8 changes: 8 additions & 0 deletions python/ray/dag/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,11 @@ py_test(
tags = ["exclusive", "team:core", "ray_dag_tests"],
deps = [":dag_lib"],
)

py_test(
name = "test_accelerated_dag",
size = "medium",
srcs = dag_tests_srcs,
tags = ["exclusive", "team:core", "ray_dag_tests"],
deps = [":dag_lib"],
)
9 changes: 9 additions & 0 deletions python/ray/dag/class_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,3 +202,12 @@ def __str__(self) -> str:

def get_method_name(self) -> str:
return self._method_name

def _get_remote_method(self, method_name):
method_body = getattr(self._parent_class_node, method_name)
return method_body

def _get_actor_handle(self) -> Optional["ray.actor.ActorHandle"]:
if not isinstance(self._parent_class_node, ray.actor.ActorHandle):
return None
return self._parent_class_node
Loading
Loading