torchmonarch-nightly 2025.6.11__cp310-cp310-manylinux2014_x86_64.whl → 2025.6.12__cp310-cp310-manylinux2014_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- monarch/_monarch/hyperactor/__init__.py +0 -16
- monarch/_rust_bindings.so +0 -0
- monarch/actor_mesh.py +47 -29
- monarch/common/client.py +2 -4
- monarch/common/stream.py +3 -0
- monarch/mesh_controller.py +1 -2
- monarch/monarch_controller +0 -0
- monarch/proc_mesh.py +9 -5
- tests/test_allocator.py +3 -3
- {torchmonarch_nightly-2025.6.11.dist-info → torchmonarch_nightly-2025.6.12.dist-info}/METADATA +1 -1
- {torchmonarch_nightly-2025.6.11.dist-info → torchmonarch_nightly-2025.6.12.dist-info}/RECORD +15 -15
- {torchmonarch_nightly-2025.6.11.dist-info → torchmonarch_nightly-2025.6.12.dist-info}/WHEEL +0 -0
- {torchmonarch_nightly-2025.6.11.dist-info → torchmonarch_nightly-2025.6.12.dist-info}/entry_points.txt +0 -0
- {torchmonarch_nightly-2025.6.11.dist-info → torchmonarch_nightly-2025.6.12.dist-info}/licenses/LICENSE +0 -0
- {torchmonarch_nightly-2025.6.11.dist-info → torchmonarch_nightly-2025.6.12.dist-info}/top_level.txt +0 -0
@@ -5,7 +5,6 @@
|
|
5
5
|
# LICENSE file in the root directory of this source tree.
|
6
6
|
|
7
7
|
# pyre-strict
|
8
|
-
import abc
|
9
8
|
|
10
9
|
from monarch._rust_bindings.monarch_hyperactor.actor import PythonMessage
|
11
10
|
|
@@ -29,21 +28,6 @@ from monarch._rust_bindings.monarch_hyperactor.shape import ( # @manual=//monar
|
|
29
28
|
Shape,
|
30
29
|
)
|
31
30
|
|
32
|
-
|
33
|
-
class Actor(abc.ABC):
|
34
|
-
@abc.abstractmethod
|
35
|
-
async def handle(self, mailbox: Mailbox, message: PythonMessage) -> None: ...
|
36
|
-
|
37
|
-
async def handle_cast(
|
38
|
-
self,
|
39
|
-
mailbox: Mailbox,
|
40
|
-
rank: int,
|
41
|
-
coordinates: list[tuple[str, int]],
|
42
|
-
message: PythonMessage,
|
43
|
-
) -> None:
|
44
|
-
await self.handle(mailbox, message)
|
45
|
-
|
46
|
-
|
47
31
|
__all__ = [
|
48
32
|
"init_proc",
|
49
33
|
"Actor",
|
monarch/_rust_bindings.so
CHANGED
Binary file
|
monarch/actor_mesh.py
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
# This source code is licensed under the BSD-style license found in the
|
5
5
|
# LICENSE file in the root directory of this source tree.
|
6
6
|
|
7
|
+
# pyre-unsafe
|
8
|
+
|
7
9
|
import asyncio
|
8
10
|
import collections
|
9
11
|
import contextvars
|
@@ -20,6 +22,7 @@ from traceback import extract_tb, StackSummary
|
|
20
22
|
from typing import (
|
21
23
|
Any,
|
22
24
|
AsyncGenerator,
|
25
|
+
Awaitable,
|
23
26
|
Callable,
|
24
27
|
cast,
|
25
28
|
Concatenate,
|
@@ -55,7 +58,7 @@ from monarch._rust_bindings.monarch_hyperactor.shape import Point as HyPoint, Sh
|
|
55
58
|
from monarch.common.pickle_flatten import flatten, unflatten
|
56
59
|
from monarch.common.shape import MeshTrait, NDSlice
|
57
60
|
|
58
|
-
logger = logging.getLogger(__name__)
|
61
|
+
logger: logging.Logger = logging.getLogger(__name__)
|
59
62
|
|
60
63
|
Allocator = monarch.ProcessAllocator | monarch.LocalAllocator
|
61
64
|
|
@@ -92,7 +95,7 @@ _context: contextvars.ContextVar[MonarchContext] = contextvars.ContextVar(
|
|
92
95
|
|
93
96
|
# this was implemented in python 3.12 as an argument to task
|
94
97
|
# but I have to backport to 3.10/3.11.
|
95
|
-
def create_eager_task(coro:
|
98
|
+
def create_eager_task(coro: Awaitable[None]) -> asyncio.Future:
|
96
99
|
iter = coro.__await__()
|
97
100
|
try:
|
98
101
|
first_yield = next(iter)
|
@@ -235,7 +238,7 @@ class Endpoint(Generic[P, R]):
|
|
235
238
|
self,
|
236
239
|
actor_mesh_ref: _ActorMeshRefImpl,
|
237
240
|
name: str,
|
238
|
-
impl: Callable[Concatenate[Any, P],
|
241
|
+
impl: Callable[Concatenate[Any, P], Awaitable[R]],
|
239
242
|
mailbox: Mailbox,
|
240
243
|
) -> None:
|
241
244
|
self._actor_mesh = actor_mesh_ref
|
@@ -267,14 +270,16 @@ class Endpoint(Generic[P, R]):
|
|
267
270
|
return self.choose(*args, **kwargs)
|
268
271
|
|
269
272
|
def call(self, *args: P.args, **kwargs: P.kwargs) -> "Future[ValueMesh[R]]":
|
273
|
+
p: PortId
|
274
|
+
r: PortReceiver[R]
|
270
275
|
p, r = port(self)
|
271
276
|
# pyre-ignore
|
272
277
|
send(self, args, kwargs, port=p, rank_in_response=True)
|
273
278
|
|
274
|
-
async def process():
|
275
|
-
results = [None] * len(self._actor_mesh)
|
279
|
+
async def process() -> ValueMesh[R]:
|
280
|
+
results: List[R] = [None] * len(self._actor_mesh) # pyre-fixme[9]
|
276
281
|
for _ in range(len(self._actor_mesh)):
|
277
|
-
rank, value = await r.recv()
|
282
|
+
rank, value = await r.recv() # pyre-fixme[23]
|
278
283
|
results[rank] = value
|
279
284
|
call_shape = Shape(
|
280
285
|
self._actor_mesh._shape.labels,
|
@@ -312,15 +317,15 @@ class Endpoint(Generic[P, R]):
|
|
312
317
|
class Accumulator(Generic[P, R, A]):
|
313
318
|
def __init__(
|
314
319
|
self, endpoint: Endpoint[P, R], identity: A, combine: Callable[[A, R], A]
|
315
|
-
):
|
316
|
-
self._endpoint = endpoint
|
317
|
-
self._identity = identity
|
318
|
-
self._combine = combine
|
320
|
+
) -> None:
|
321
|
+
self._endpoint: Endpoint[P, R] = endpoint
|
322
|
+
self._identity: A = identity
|
323
|
+
self._combine: Callable[[A, R], A] = combine
|
319
324
|
|
320
325
|
def accumulate(self, *args: P.args, **kwargs: P.kwargs) -> "Future[A]":
|
321
|
-
gen = self._endpoint.stream(*args, **kwargs)
|
326
|
+
gen: AsyncGenerator[R, R] = self._endpoint.stream(*args, **kwargs)
|
322
327
|
|
323
|
-
async def impl():
|
328
|
+
async def impl() -> A:
|
324
329
|
value = self._identity
|
325
330
|
async for x in gen:
|
326
331
|
value = self._combine(value, x)
|
@@ -337,7 +342,7 @@ class ValueMesh(MeshTrait, Generic[R]):
|
|
337
342
|
def _new_with_shape(self, shape: Shape) -> "ValueMesh[R]":
|
338
343
|
return ValueMesh(shape, self._values)
|
339
344
|
|
340
|
-
def item(self, **kwargs):
|
345
|
+
def item(self, **kwargs) -> R:
|
341
346
|
coordinates = [kwargs.pop(label) for label in self._labels]
|
342
347
|
if kwargs:
|
343
348
|
raise KeyError(f"item has extra dimensions: {list(kwargs.keys())}")
|
@@ -348,7 +353,7 @@ class ValueMesh(MeshTrait, Generic[R]):
|
|
348
353
|
for rank in self._shape.ranks():
|
349
354
|
yield Point(rank, self._shape), self._values[rank]
|
350
355
|
|
351
|
-
def __len__(self):
|
356
|
+
def __len__(self) -> int:
|
352
357
|
return len(self._shape)
|
353
358
|
|
354
359
|
@property
|
@@ -381,7 +386,7 @@ def send(
|
|
381
386
|
|
382
387
|
|
383
388
|
class EndpointProperty(Generic[P, R]):
|
384
|
-
def __init__(self, method: Callable[Concatenate[Any, P],
|
389
|
+
def __init__(self, method: Callable[Concatenate[Any, P], Awaitable[R]]) -> None:
|
385
390
|
self._method = method
|
386
391
|
|
387
392
|
def __get__(self, instance, owner) -> Endpoint[P, R]:
|
@@ -392,7 +397,7 @@ class EndpointProperty(Generic[P, R]):
|
|
392
397
|
|
393
398
|
|
394
399
|
def endpoint(
|
395
|
-
method: Callable[Concatenate[Any, P],
|
400
|
+
method: Callable[Concatenate[Any, P], Awaitable[R]],
|
396
401
|
) -> EndpointProperty[P, R]:
|
397
402
|
return EndpointProperty(method)
|
398
403
|
|
@@ -415,7 +420,9 @@ class Port:
|
|
415
420
|
# advance lower-level API for sending messages. This is intentially
|
416
421
|
# not part of the Endpoint API because they way it accepts arguments
|
417
422
|
# and handles concerns is different.
|
418
|
-
def port(
|
423
|
+
def port(
|
424
|
+
endpoint: Endpoint[P, R], once: bool = False
|
425
|
+
) -> Tuple["PortId", "PortReceiver[R]"]:
|
419
426
|
handle, receiver = (
|
420
427
|
endpoint._mailbox.open_once_port() if once else endpoint._mailbox.open_port()
|
421
428
|
)
|
@@ -428,9 +435,9 @@ class PortReceiver(Generic[R]):
|
|
428
435
|
self,
|
429
436
|
mailbox: Mailbox,
|
430
437
|
receiver: HyPortReceiver | OncePortReceiver,
|
431
|
-
):
|
432
|
-
self._mailbox = mailbox
|
433
|
-
self._receiver = receiver
|
438
|
+
) -> None:
|
439
|
+
self._mailbox: Mailbox = mailbox
|
440
|
+
self._receiver: HyPortReceiver | OncePortReceiver = receiver
|
434
441
|
|
435
442
|
async def _recv(self) -> R:
|
436
443
|
return self._process(await self._receiver.recv())
|
@@ -438,7 +445,7 @@ class PortReceiver(Generic[R]):
|
|
438
445
|
def _blocking_recv(self) -> R:
|
439
446
|
return self._process(self._receiver.blocking_recv())
|
440
447
|
|
441
|
-
def _process(self, msg: PythonMessage):
|
448
|
+
def _process(self, msg: PythonMessage) -> R:
|
442
449
|
# TODO: Try to do something more structured than a cast here
|
443
450
|
payload = cast(R, _unpickle(msg.message, self._mailbox))
|
444
451
|
if msg.method == "result":
|
@@ -485,7 +492,9 @@ class _Actor:
|
|
485
492
|
else None
|
486
493
|
)
|
487
494
|
try:
|
488
|
-
ctx = MonarchContext(
|
495
|
+
ctx: MonarchContext = MonarchContext(
|
496
|
+
mailbox, mailbox.actor_id.proc_id, Point(rank, shape)
|
497
|
+
)
|
489
498
|
_context.set(ctx)
|
490
499
|
|
491
500
|
args, kwargs = _unpickle(message.message, mailbox)
|
@@ -532,14 +541,19 @@ class _Actor:
|
|
532
541
|
async def run_async(
|
533
542
|
self,
|
534
543
|
ctx: MonarchContext,
|
535
|
-
coroutine:
|
544
|
+
coroutine: Awaitable[None],
|
536
545
|
) -> None:
|
537
546
|
_context.set(ctx)
|
538
547
|
if self.complete_task is None:
|
539
548
|
self.complete_task = asyncio.create_task(self._complete())
|
540
549
|
await self.active_requests.put(create_eager_task(coroutine))
|
541
550
|
|
542
|
-
async def run_task(
|
551
|
+
async def run_task(
|
552
|
+
self,
|
553
|
+
port: Port | None,
|
554
|
+
coroutine: Awaitable[Any],
|
555
|
+
panic_flag: PanicFlag,
|
556
|
+
) -> None:
|
543
557
|
try:
|
544
558
|
result = await coroutine
|
545
559
|
if port is not None:
|
@@ -615,10 +629,10 @@ class ActorMeshRef(MeshTrait):
|
|
615
629
|
def __init__(
|
616
630
|
self, Class: Type[T], actor_mesh_ref: _ActorMeshRefImpl, mailbox: Mailbox
|
617
631
|
) -> None:
|
618
|
-
self.__name__ = Class.__name__
|
619
|
-
self._class = Class
|
620
|
-
self._actor_mesh_ref = actor_mesh_ref
|
621
|
-
self._mailbox = mailbox
|
632
|
+
self.__name__: str = Class.__name__
|
633
|
+
self._class: Type[T] = Class
|
634
|
+
self._actor_mesh_ref: _ActorMeshRefImpl = actor_mesh_ref
|
635
|
+
self._mailbox: Mailbox = mailbox
|
622
636
|
for attr_name in dir(self._class):
|
623
637
|
attr_value = getattr(self._class, attr_name, None)
|
624
638
|
if isinstance(attr_value, EndpointProperty):
|
@@ -659,7 +673,11 @@ class ActorMeshRef(MeshTrait):
|
|
659
673
|
f"'{self.__class__.__name__}' object has no attribute '{name}'"
|
660
674
|
)
|
661
675
|
|
662
|
-
def _create(
|
676
|
+
def _create(
|
677
|
+
self,
|
678
|
+
args: Iterable[Any],
|
679
|
+
kwargs: Dict[str, Any],
|
680
|
+
) -> None:
|
663
681
|
async def null_func(*_args: Iterable[Any], **_kwargs: Dict[str, Any]) -> None:
|
664
682
|
return None
|
665
683
|
|
monarch/common/client.py
CHANGED
@@ -302,7 +302,7 @@ class Client:
|
|
302
302
|
self.last_processed_seq = max(self.last_processed_seq, seq)
|
303
303
|
|
304
304
|
if error is not None:
|
305
|
-
logging.
|
305
|
+
logging.info("Received error for seq %s: %s", seq, error)
|
306
306
|
# We should not have set result if we have an error.
|
307
307
|
assert result is None
|
308
308
|
if not isinstance(error, RemoteException):
|
@@ -332,9 +332,7 @@ class Client:
|
|
332
332
|
elif error is not None:
|
333
333
|
# errors get reported as results even if they
|
334
334
|
# do not have futures attached.
|
335
|
-
|
336
|
-
f"Error encountered for this instruction {seq}. Proceeding forward because error is unused and unhandled. Error details:\n{error}."
|
337
|
-
)
|
335
|
+
pass
|
338
336
|
|
339
337
|
# We can safely delete the seq as tracebacks have been saved to the remote failure itself.
|
340
338
|
del self.pending_results[seq]
|
monarch/common/stream.py
CHANGED
@@ -82,6 +82,9 @@ class StreamRef(Referenceable):
|
|
82
82
|
messages.CreateStream(self, self.default),
|
83
83
|
)
|
84
84
|
|
85
|
+
def __repr__(self):
|
86
|
+
return f"<StreamRef {repr(self.name)} {self.ref}>"
|
87
|
+
|
85
88
|
def delete_ref(self, ref):
|
86
89
|
client = self.client()
|
87
90
|
if client is not None and not client._shutdown:
|
monarch/mesh_controller.py
CHANGED
@@ -158,7 +158,6 @@ def _worker_response_to_result(result: client.WorkerResponse) -> MessageResult:
|
|
158
158
|
traceback.FrameSummary("<unknown>", None, frame)
|
159
159
|
for frame in exc.backtrace.split("\\n")
|
160
160
|
]
|
161
|
-
logger.error(f"Worker {exc.actor_id} failed")
|
162
161
|
return MessageResult(
|
163
162
|
seq=result.seq,
|
164
163
|
result=None,
|
@@ -169,7 +168,7 @@ def _worker_response_to_result(result: client.WorkerResponse) -> MessageResult:
|
|
169
168
|
controller_frames=None,
|
170
169
|
worker_frames=worker_frames,
|
171
170
|
source_actor_id=exc.actor_id,
|
172
|
-
message=f"
|
171
|
+
message=f"Remote function in {exc.actor_id} errored.",
|
173
172
|
),
|
174
173
|
)
|
175
174
|
elif isinstance(exc, client.Failure):
|
monarch/monarch_controller
CHANGED
Binary file
|
monarch/proc_mesh.py
CHANGED
@@ -4,9 +4,11 @@
|
|
4
4
|
# This source code is licensed under the BSD-style license found in the
|
5
5
|
# LICENSE file in the root directory of this source tree.
|
6
6
|
|
7
|
+
# pyre-strict
|
8
|
+
|
7
9
|
import sys
|
8
10
|
|
9
|
-
from typing import Any, cast, Optional, Type, TypeVar
|
11
|
+
from typing import Any, cast, List, Optional, Type, TypeVar
|
10
12
|
|
11
13
|
import monarch
|
12
14
|
from monarch import ActorFuture as Future
|
@@ -18,7 +20,7 @@ from monarch._rust_bindings.hyperactor_extension.alloc import ( # @manual=//mon
|
|
18
20
|
)
|
19
21
|
from monarch._rust_bindings.monarch_hyperactor.mailbox import Mailbox
|
20
22
|
from monarch._rust_bindings.monarch_hyperactor.proc_mesh import ProcMesh as HyProcMesh
|
21
|
-
from monarch._rust_bindings.monarch_hyperactor.shape import Shape
|
23
|
+
from monarch._rust_bindings.monarch_hyperactor.shape import Shape, Slice
|
22
24
|
from monarch.actor_mesh import _Actor, _ActorMeshRefImpl, Actor, ActorMeshRef
|
23
25
|
|
24
26
|
from monarch.common._device_utils import _local_device_count
|
@@ -46,14 +48,16 @@ class ProcMesh(MeshTrait):
|
|
46
48
|
def __init__(self, hy_proc_mesh: HyProcMesh) -> None:
|
47
49
|
self._proc_mesh = hy_proc_mesh
|
48
50
|
self._mailbox: Mailbox = self._proc_mesh.client
|
49
|
-
self._rdma_manager = self._spawn_blocking(
|
51
|
+
self._rdma_manager: RDMAManager = self._spawn_blocking(
|
52
|
+
"rdma_manager", RDMAManager
|
53
|
+
)
|
50
54
|
|
51
55
|
@property
|
52
|
-
def _ndslice(self):
|
56
|
+
def _ndslice(self) -> Slice:
|
53
57
|
return self._proc_mesh.shape.ndslice
|
54
58
|
|
55
59
|
@property
|
56
|
-
def _labels(self):
|
60
|
+
def _labels(self) -> List[str]:
|
57
61
|
return self._proc_mesh.shape.labels
|
58
62
|
|
59
63
|
def _new_with_shape(self, shape: Shape) -> "ProcMesh":
|
tests/test_allocator.py
CHANGED
@@ -174,7 +174,7 @@ class TestRemoteAllocator(unittest.IsolatedAsyncioTestCase):
|
|
174
174
|
actor = await proc_mesh.spawn("test_actor", TestActor)
|
175
175
|
|
176
176
|
values = await actor.compute_world_size.call(
|
177
|
-
master_addr="
|
177
|
+
master_addr="0.0.0.0",
|
178
178
|
master_port=get_free_port(),
|
179
179
|
)
|
180
180
|
|
@@ -206,10 +206,10 @@ class TestRemoteAllocator(unittest.IsolatedAsyncioTestCase):
|
|
206
206
|
actor_b = await proc_mesh_b.spawn("actor_b", TestActor)
|
207
207
|
|
208
208
|
results_a = await actor_a.compute_world_size.call(
|
209
|
-
master_addr="
|
209
|
+
master_addr="0.0.0.0", master_port=get_free_port()
|
210
210
|
)
|
211
211
|
results_b = await actor_b.compute_world_size.call(
|
212
|
-
master_addr="
|
212
|
+
master_addr="0.0.0.0", master_port=get_free_port()
|
213
213
|
)
|
214
214
|
|
215
215
|
self.assert_computed_world_size(results_a, 2) # a is a 1x2 mesh
|
{torchmonarch_nightly-2025.6.11.dist-info → torchmonarch_nightly-2025.6.12.dist-info}/RECORD
RENAMED
@@ -1,7 +1,7 @@
|
|
1
1
|
monarch/__init__.py,sha256=iUvWHc0-7Q2tovRoRxOIiA3TsefMXCbWl-jEfQ2djew,6897
|
2
|
-
monarch/_rust_bindings.so,sha256=
|
2
|
+
monarch/_rust_bindings.so,sha256=VPU8MhCnz10umRwSqv99QvwFkr2q0N0DiOTpZ37Ecl0,40645344
|
3
3
|
monarch/_testing.py,sha256=MN8DK1e-wzV0-R_nFW1b_7-O5oKfWvZ12BMGD4Z7PQk,6755
|
4
|
-
monarch/actor_mesh.py,sha256=
|
4
|
+
monarch/actor_mesh.py,sha256=ovi5RBxobGEcg7zKkzhRc83n82KOD6ermhuloHKbuFs,24420
|
5
5
|
monarch/allocator.py,sha256=ylvYTf31o-PT385cYJPhi17uNbC4yl_RAraqD0fVe4g,4112
|
6
6
|
monarch/bootstrap_main.py,sha256=EYaTMA1lxy2213L_04drTKlJvZQjzNdD3jeUHiqSBJc,2578
|
7
7
|
monarch/cached_remote_function.py,sha256=kYdB6r4OHx_T_uX4q3tCNcp1t2DJwF8tPTIahUiT2pU,8785
|
@@ -9,12 +9,12 @@ monarch/fetch.py,sha256=61jxo7sx4QNUTkc0_rF5NaJROen4tKbAaiIjrXWLOvg,1705
|
|
9
9
|
monarch/future.py,sha256=lcdFEe7m1shYPPuvZ1RkS6JUIChEKGBWe3v7x_nu4Hg,731
|
10
10
|
monarch/gradient_generator.py,sha256=Rl3dmXGceTdCc1mYBg2JciR88ywGPnW7TVkL86KwqEA,6366
|
11
11
|
monarch/memory.py,sha256=ol86dBhFAJqg78iF25-BuK0wuwj1onR8FIioZ_B0gjw,1377
|
12
|
-
monarch/mesh_controller.py,sha256=
|
13
|
-
monarch/monarch_controller,sha256=
|
12
|
+
monarch/mesh_controller.py,sha256=Rr4VNUNN0pJdThbPmbCoaPWid4QpTNHya9xYpmjTkW0,8575
|
13
|
+
monarch/monarch_controller,sha256=MECcriPRnSdI_NpAG6y-GiK2-DqnDsLBfyOHVdqewRU,20397992
|
14
14
|
monarch/notebook.py,sha256=zu9MKDFKf1-rCM2TqFSRJjMBeiWuKcJSyUFLvoZRQzs,25949
|
15
15
|
monarch/opaque_module.py,sha256=oajOu_WD1hD4hxE8HDdO-tvWY7KDHWd7VaAhJEa5L2I,10446
|
16
16
|
monarch/opaque_object.py,sha256=IVpll4pyuKZMo_EnPh4s0qnx8RlAcJrJ1yoLX6E75wQ,2782
|
17
|
-
monarch/proc_mesh.py,sha256=
|
17
|
+
monarch/proc_mesh.py,sha256=xoaReM9Ab9TWkesxedWSyyk4TMD0HLV88dQ8CQcbqTI,6892
|
18
18
|
monarch/profiler.py,sha256=TQ9fnVM8H7smBWtYdB_6Irtzz8DBOmcp7U1T3wlUmco,4911
|
19
19
|
monarch/python_local_mesh.py,sha256=YsureIzR9uGlNVrKd4vRghxOXBeYabkt9lICRErfRAI,3536
|
20
20
|
monarch/random.py,sha256=f9QR7Esu4Vxqxs-KCf5QYyVqlWvXJ3-UtG90L_h4j40,1527
|
@@ -27,7 +27,7 @@ monarch/tensor_worker_main.py,sha256=Nbarl2sJKIddLeaRFsaUnqOerLHjzggUr9SqCr2_GYI
|
|
27
27
|
monarch/tensorboard.py,sha256=MnLgH5lbqeUJauEuirEgR6L_qYl2NGdtwZOWIAuOZao,2587
|
28
28
|
monarch/world_mesh.py,sha256=GqZpFoVNJPxYa70rLYgv0vu8Vg1nXqx_GYERRb1E9Pc,975
|
29
29
|
monarch/_monarch/__init__.py,sha256=Md3cCHD7Ano9kV15PqGbicgUO-RMdh4aVy1yKiDt_xE,208
|
30
|
-
monarch/_monarch/hyperactor/__init__.py,sha256=
|
30
|
+
monarch/_monarch/hyperactor/__init__.py,sha256=JLnB2_-bKHLqAcZwehKvPkbwbxF-gCq5LODJiWGU_b8,1384
|
31
31
|
monarch/_monarch/selection/__init__.py,sha256=47arOElvlK0uYcTNrd__1BwXSfsMosnVw4_tgu2hA-I,381
|
32
32
|
monarch/_monarch/worker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
33
|
monarch/_monarch/worker/debugger.py,sha256=JJZwRPTgQO2emz-hrMelkOSxJFIR3dV4ZA6e7ftYUKA,3614
|
@@ -43,7 +43,7 @@ monarch/common/_device_utils.py,sha256=gBpl23wMjppVAEzzj8U9HyX-B7Bs2_3ftiMAkzUS4
|
|
43
43
|
monarch/common/_tensor_to_table.py,sha256=yRjCNwvtl188Z1Dwkx3ZU-Bh2mwYnQ0Lnue2RAztwvc,5753
|
44
44
|
monarch/common/base_tensor.py,sha256=ujRzR6lWaeCdPv2JX0vCR-VsCWn-3SHaJIkZH1Sw9FQ,1159
|
45
45
|
monarch/common/borrows.py,sha256=7KR62xoUat1T6FyADsdHsxVAVIJDvfJWUnPO-xx277U,5307
|
46
|
-
monarch/common/client.py,sha256=
|
46
|
+
monarch/common/client.py,sha256=BaBhOzQaNsqTa-BGy7_IknQxpnpK0j4C5QsNyFHZHW4,24343
|
47
47
|
monarch/common/constants.py,sha256=ohvsVYMpfeWopv3KXDAeHWDFLukwc-OY37VRxpKNBE8,300
|
48
48
|
monarch/common/context_manager.py,sha256=GOeyaFbyCqvQmkJ0oI7q6IxRd8_0mVyYKZRccI8iaug,1067
|
49
49
|
monarch/common/controller_api.py,sha256=djGkK5aSd-V6pBkr3uBCXbfJv3OKf2o2VbBXJgFF2WI,3202
|
@@ -65,7 +65,7 @@ monarch/common/reference.py,sha256=O26lkzEeVwj0S1xEy-OLqdHVnACmmlbQCUmXRrW4n1Q,9
|
|
65
65
|
monarch/common/remote.py,sha256=qZWXkShX20l07TseQSpVECh2yXZaVKYUvQXkeEM-zvY,9220
|
66
66
|
monarch/common/selection.py,sha256=lpWFbZs3ArYy29e-53eoAVAjQFksf1RvZz9NvM0CUW4,308
|
67
67
|
monarch/common/shape.py,sha256=k6-0S0U19PmrfP62SMb9Ihx6_I4QQFUGErloZn8GcZ0,8144
|
68
|
-
monarch/common/stream.py,sha256=
|
68
|
+
monarch/common/stream.py,sha256=_ejoxafHtdD10lLzznRCXKwrkZ_ZH9k_VTgiA5yfBrI,3583
|
69
69
|
monarch/common/tensor.py,sha256=mSXiHoD0Up4m2RLdQcsbesaz2N4QCFS34UNNX3Dbldk,28842
|
70
70
|
monarch/common/tensor_factory.py,sha256=qm8NZx-5ezMAFjNLiXQvb66okm5XgdboB_GRarGOdN0,801
|
71
71
|
monarch/common/tree.py,sha256=1DG3siiE7ixBV6v5cwN8RT_17aJhYZTE-L3i7wZe2_c,2282
|
@@ -132,7 +132,7 @@ tests/error_test_binary.py,sha256=64H-ucdkQ2i7GD8sidStl227cOy7gyeqvO4kTm1y7Ic,48
|
|
132
132
|
tests/sleep_binary.py,sha256=XfLYaAfwm9xgzM-svs8fhAeFhwYIg6SyVEnx4e6wbUw,1009
|
133
133
|
tests/test_actor_error.py,sha256=z3Sf4lteUggTryPLOhRKJ55v0MwVK3a7QN7-U2U9iJg,7484
|
134
134
|
tests/test_alloc.py,sha256=D6DdQbtOZEvvnnc7LV-WyWFMk0Xb77eblH6Oz90zJTA,745
|
135
|
-
tests/test_allocator.py,sha256=
|
135
|
+
tests/test_allocator.py,sha256=P11sQ95ADjzC_-CfPs3CEP80nP8sn7wW8vVPsmpSVoM,8164
|
136
136
|
tests/test_coalescing.py,sha256=-KtAWzTaeXbyzltplfojavx0iFeeZnvej-tFTlu2p5k,15616
|
137
137
|
tests/test_controller.py,sha256=yxuVp2DG3TDKJlwuE3cFm9dbWMlbrYtG1uHfvVWRYbw,30935
|
138
138
|
tests/test_device_mesh.py,sha256=DrbezYOM0thfP9MgLXb5-F0VoLOmSz5GR0GwjR_3bE4,5290
|
@@ -151,9 +151,9 @@ tests/simulator/test_profiling.py,sha256=TGYCfzTLdkpIwnOuO6KApprmrgPIRQe60KRX3wk
|
|
151
151
|
tests/simulator/test_simulator.py,sha256=LO8lA0ssY-OGEBL5ipEu74f97Y765TEwfUOv-DtIptM,14568
|
152
152
|
tests/simulator/test_task.py,sha256=ipqBDuDAysuo1xOB9S5psaFvwe6VATD43IovCTSs0t4,2327
|
153
153
|
tests/simulator/test_worker.py,sha256=QrWWIJ3HDgDLkBPRc2mwYPlOQoXQcj1qRfc0WUfKkFY,3507
|
154
|
-
torchmonarch_nightly-2025.6.
|
155
|
-
torchmonarch_nightly-2025.6.
|
156
|
-
torchmonarch_nightly-2025.6.
|
157
|
-
torchmonarch_nightly-2025.6.
|
158
|
-
torchmonarch_nightly-2025.6.
|
159
|
-
torchmonarch_nightly-2025.6.
|
154
|
+
torchmonarch_nightly-2025.6.12.dist-info/licenses/LICENSE,sha256=e0Eotbf_rHOYPuEUlppIbvwy4SN98CZnl_hqwvbDA4Q,1530
|
155
|
+
torchmonarch_nightly-2025.6.12.dist-info/METADATA,sha256=mBsDu66W3vkM2SdaxX7hw8_B6kl_XgQZT7nQKZhVkMk,2772
|
156
|
+
torchmonarch_nightly-2025.6.12.dist-info/WHEEL,sha256=_wZSFk0d90K9wOBp8Q-UGxshyiJ987JoPiyUBNC6VLk,104
|
157
|
+
torchmonarch_nightly-2025.6.12.dist-info/entry_points.txt,sha256=sqfQ16oZqjEvttUI-uj9BBXIIE6jt05bYFSmy-2hyXI,106
|
158
|
+
torchmonarch_nightly-2025.6.12.dist-info/top_level.txt,sha256=E-ZssZzyM17glpVrh-S9--qJ-w9p2EjuYOuNw9tQ4Eg,33
|
159
|
+
torchmonarch_nightly-2025.6.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
{torchmonarch_nightly-2025.6.11.dist-info → torchmonarch_nightly-2025.6.12.dist-info}/top_level.txt
RENAMED
File without changes
|