Skip to content

[15/n] Pass monarch tensors to actor endpoints, part 1 #518

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

Open
wants to merge 2 commits into
base: gh/zdevito/38/base
Choose a base branch
from

Conversation

zdevito
Copy link
Contributor

@zdevito zdevito commented Jul 11, 2025

Stack from ghstack (oldest at bottom):

This makes it possible to send a monarch tensor to an actor endpoint that is defiend over the same proc mesh as the tensor.

The send is done locally so the actor can do work with the tensors.

The stream actor in the tensor engine is sent a SendResultOfActorCall message, which it will forward to the actor, binding to the message the real local tensors that were passed as arguments.

The stream actor that owns the tensor waits for called the actor to finish since the actor 'owns' the tensor through the duration of the call.

Known limitation: this message to the actor can go out of order w.r.t to other messages sent from the owner of the tensor engine because the real message is being sent from the stream actor. The next PR will fix this limitation by sending both the tensor engine and the actor a message at the same time. The actor will get a 'wait for SendResultOfActorCall' message, at which point it will stop processing any messages except for the SentResultOfActorCall message it is suppose to be waiting for. This way the correct order is preserved from the perspective of the tensor engine stream and the actor.

Differential Revision: D78196701

This makes it possible to send a monarch tensor to an actor endpoint that is defiend over the same proc mesh as the tensor.

The send is done locally so the actor can do work with the tensors.

The stream actor in the tensor engine is sent a SendResultOfActorCall message, which it will forward to the actor, binding to the message the real local tensors that were passed as arguments.

The stream actor that owns the tensor waits for called the actor to finish since the actor 'owns' the tensor through the duration of the call.

Known limitation: this message to the actor can go out of order w.r.t to other messages sent from the owner of the tensor engine because the real message is being sent from the stream actor. The next PR will fix this limitation by sending _both_ the tensor engine and the actor a message at the same time. The actor will get a 'wait for SendResultOfActorCall' message, at which point it will stop processing any messages except for the SentResultOfActorCall message it is suppose to be waiting for. This way the correct order is preserved from the perspective of the tensor engine stream and the actor.

Differential Revision: [D78196701](https://our.internmc.facebook.com/intern/diff/D78196701/)

[ghstack-poisoned]
zdevito added a commit that referenced this pull request Jul 11, 2025
This makes it possible to send a monarch tensor to an actor endpoint that is defiend over the same proc mesh as the tensor.

The send is done locally so the actor can do work with the tensors.

The stream actor in the tensor engine is sent a SendResultOfActorCall message, which it will forward to the actor, binding to the message the real local tensors that were passed as arguments.

The stream actor that owns the tensor waits for called the actor to finish since the actor 'owns' the tensor through the duration of the call.

Known limitation: this message to the actor can go out of order w.r.t to other messages sent from the owner of the tensor engine because the real message is being sent from the stream actor. The next PR will fix this limitation by sending _both_ the tensor engine and the actor a message at the same time. The actor will get a 'wait for SendResultOfActorCall' message, at which point it will stop processing any messages except for the SentResultOfActorCall message it is suppose to be waiting for. This way the correct order is preserved from the perspective of the tensor engine stream and the actor.

Differential Revision: [D78196701](https://our.internmc.facebook.com/intern/diff/D78196701/)

ghstack-source-id: 295768021
Pull Request resolved: #518
@facebook-github-bot facebook-github-bot added the CLA Signed This label is managed by the Meta Open Source bot. label Jul 11, 2025
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D78196701

This makes it possible to send a monarch tensor to an actor endpoint that is defiend over the same proc mesh as the tensor.

The send is done locally so the actor can do work with the tensors.

The stream actor in the tensor engine is sent a SendResultOfActorCall message, which it will forward to the actor, binding to the message the real local tensors that were passed as arguments.

The stream actor that owns the tensor waits for called the actor to finish since the actor 'owns' the tensor through the duration of the call.

Known limitation: this message to the actor can go out of order w.r.t to other messages sent from the owner of the tensor engine because the real message is being sent from the stream actor. The next PR will fix this limitation by sending _both_ the tensor engine and the actor a message at the same time. The actor will get a 'wait for SendResultOfActorCall' message, at which point it will stop processing any messages except for the SentResultOfActorCall message it is suppose to be waiting for. This way the correct order is preserved from the perspective of the tensor engine stream and the actor.

Differential Revision: [D78196701](https://our.internmc.facebook.com/intern/diff/D78196701/)

[ghstack-poisoned]
zdevito added a commit that referenced this pull request Jul 11, 2025
Pull Request resolved: #518

This makes it possible to send a monarch tensor to an actor endpoint that is defiend over the same proc mesh as the tensor.

The send is done locally so the actor can do work with the tensors.

The stream actor in the tensor engine is sent a SendResultOfActorCall message, which it will forward to the actor, binding to the message the real local tensors that were passed as arguments.

The stream actor that owns the tensor waits for called the actor to finish since the actor 'owns' the tensor through the duration of the call.

Known limitation: this message to the actor can go out of order w.r.t to other messages sent from the owner of the tensor engine because the real message is being sent from the stream actor. The next PR will fix this limitation by sending _both_ the tensor engine and the actor a message at the same time. The actor will get a 'wait for SendResultOfActorCall' message, at which point it will stop processing any messages except for the SentResultOfActorCall message it is suppose to be waiting for. This way the correct order is preserved from the perspective of the tensor engine stream and the actor.
ghstack-source-id: 295768514
@exported-using-ghexport

Differential Revision: [D78196701](https://our.internmc.facebook.com/intern/diff/D78196701/)
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D78196701

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Meta Open Source bot. fb-exported
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants