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

Houdini PDG/TOPs connection #436

Closed
RiLights opened this issue Feb 5, 2019 · 19 comments
Closed

Houdini PDG/TOPs connection #436

RiLights opened this issue Feb 5, 2019 · 19 comments

Comments

@RiLights
Copy link
Contributor

RiLights commented Feb 5, 2019

Hi,

Is anybody tried to connect Houdini PDG/TOPs and Afanasy?

Thanks
Ostap

@RiLights
Copy link
Contributor Author

RiLights commented Feb 7, 2019

I just remember that Mikhail Lesin (@mlesin) mentioned SLURM and Afanasy working together - #340.
And looks like, this kind of approach will work with TOPs but would be nice to hear some details about the connection or maybe some native Afanasy dynamic task submission.

Thanks
Ostap

@PaulSchweizer
Copy link

Hi guys,

We are currently evaluating Houdini's PDG in conjunction with Afanasy, here is what we found so far:

@alexwheezy already created an Afanasy Scheduler and it works great:
https://github.com/alexwheezy/python/tree/master/houdini/afanasy_scheduler

The problem however is, that it creates an individual Job for each work item as that is the only possibility at the moment. This is obiously not feasible in production.
To fix that, we would need a way to attach a new task to an existing job/block, as outlined in this issue #292 . The HQueue Scheduler currently works in that way, keeping a reference to a parent job and then attaching all related work items to it during the scheduling process.

If that would be possible, it would be a huge step towards making PDG usable with Afanasy in production!

If you need any further info let me know

@alexwheezy
Copy link
Contributor

alexwheezy commented Jun 6, 2019 via email

@timurhai
Copy link
Member

timurhai commented Jun 6, 2019

Hi.
I have no experience with TOPs (yet).

@RiLights
Copy link
Contributor Author

I also know @sergiy-nazarenko doing some work in this direction.

And cool that Alex already created Afanasy post in SideFX forum: https://www.sidefx.com/forum/topic/66730/

@yannci
Copy link
Contributor

yannci commented Jan 25, 2021

Hi,

After #451 has been merged and is now available in afanasy version 2.3.1 and above we try to push this further and develop a workflow that uses PDG in conjunction with Afanasy. I currently use the scheduler from @alexwheezy as a base and rewrite it.
Did anyone else has made any progress on this so far?

Best,
Yannic

@timurhai
Copy link
Member

Hi!
Sorry i have not used PDG yet.
But we recently switched on a new Houdini version, so soon i will start to learn it.

@timurhai
Copy link
Member

timurhai commented May 20, 2021

Hi!
Is there some news from anybody on this theme?
Have someone managed to enhance Afanasy Sheduler to push new blocks/tasks to the same Afanasy job?

May be there is a better way to construct job at once?
What do you think about:
https://www.sidefx.com/docs/houdini/tops/custom_scheduler.html#staticcook
There is Static Cook Hybrid Approach section (SideFX recomendation instead of a fully static job).
For this we can add some "pending" state to Afanasy tasks, and some API to make such tasks "ready".
May be someone heard that some people make this for other render managers, is it useful/handy?

@RiLights
Copy link
Contributor Author

RiLights commented Jul 2, 2021

Hi Timur,

I'm wondering which way of implementation did you choose? Static Hybrid, dynamic task job/block expansion?

@timurhai
Copy link
Member

timurhai commented Jul 2, 2021

Hi!
In the roadmap is a scheduler were you can choose any method.
May be even Full Static (no Houdini session needed) - but definitely with limitations.

@RiLights
Copy link
Contributor Author

RiLights commented Jul 2, 2021

Is the Afanasy supports dynamic task appending to the block?

@timurhai
Copy link
Member

timurhai commented Jul 2, 2021

Yes.
You can append and block(s) and task(s).
#451

@RiLights
Copy link
Contributor Author

RiLights commented Jul 2, 2021

That is cool! Sorry, I missed it the posts above.

Would it make sense then to implement it in this way and if user wants to have independent PDG session then it creates one more block which is responsible to create all other blocks/tasks.

Almost the same what native HQueue is doing.

Referencing to @PaulSchweizer in the post above.

@RiLights
Copy link
Contributor Author

RiLights commented Jul 2, 2021

Another option could be when Afanasy is responsible only for resource (machines/slots) allocation but not for the task creation because basicly PDG already contains task scheduler which needs only a farm manager. In other words - creating thinner layer between PDG and Afanasy.

@timurhai
Copy link
Member

timurhai commented Jul 2, 2021

It is a dymanic approach, which is a common for PDG.
This is way will be implemented first, as it is the simples way.
Or i misundertand you?

@RiLights
Copy link
Contributor Author

RiLights commented Jul 2, 2021

I see 2 ways for dynamic approach. HQueue and SLURM where you manipulating resources (not tasks). PDG Scheduler already contains dependencies, restart handling, logs, etc.

Actually Afanasy's tasks already are allocating resources and other things which is not necessary for PDG. Maybe it will be simpler to implement PDG scheduler without additional layer as "Task" (but I don't know how exactly do it for the Afanasy).

@timurhai
Copy link
Member

timurhai commented Jul 2, 2021

HQueue uses tasks (at first i was digging HQueue to learn PDG), and as far as i understand other farm schedulers too.
And dependencies, restarts are performed by PDG.
Task needed to take resources and to run a command.
You are talking about some way to aquire resources w/o a task (in can be a task w/o a command), but let PDG to run a command remotely w/o render manager?
I noticed only the sinle way of a dynamic approach, and two static: full and hybrid.

@RiLights
Copy link
Contributor Author

RiLights commented Jul 2, 2021

I want to notice that HQueue way is absolutely reasonable. But in my case, dynamic tasks (appending tasks/blocks) was't an option because it takes some time for the job rebase (huge amount submitted jobs) but maybe it is not related to Afanasy.
So task nature has been removed while invatigation how I can optimase PDG Scheduler.

timurhai added a commit that referenced this issue Jul 6, 2021
… contains new block/task ids.

Now if there is Action::answer_kind is not set
(an empty string, used to be 'error','log','info'),
Action::answer data will be written as a raw string in 'object' field.
This was server can return a custom JSON object containing some data as an answer on action.

Needed on appending new tasks on a dynamic Houdini PDG job.

References #451, #436.
@timurhai
Copy link
Member

timurhai commented Jul 6, 2021

Close due #514

@timurhai timurhai closed this as completed Jul 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants