how to get an overview of threads per task?

   3863   14   5
User Avatar
Member
8 posts
Joined: 12月 2017
Offline
Hey Guys.

is it possible to see how many threads are running on a task? I can see how many tasks are running, but not necessarily how many threads that equates to. it would be great to get a breakdown of the thread utilisation and what nodes using in terms of threads and ram. could be nice see total threads and ram usage per tops node in the network!

The other question I have is, lets say I have a precache, then sim. If the sim will not take all threads so the precache can do its thing thats fine, but once those threads from the precache free up, are they able to dynamically jump on and help the sim? or is the sim only going to use whats available from the minimum required to get started and be locked from there?
Edited by queglay - 2019年3月25日 18:00:06
User Avatar
Member
4189 posts
Joined: 6月 2012
Offline
With limited testing so far, it's simply up to the ‘Maximum CPUs to Use’ on the local scheduler, which is then allocated to a work item.
User Avatar
Member
544 posts
Joined: 9月 2012
Offline
The local scheduler is not currently thread aware. It just knows how many processes are running on the local machine, but has no insights into the inner workings of each process.
- Ken Xu
User Avatar
スタッフ
585 posts
Joined: 5月 2014
Offline
To add to that, most of the nodes do their work out of process not in the current Houdini session. For example, the ROP Fetch spawns a Hython process that evaluates the target ROP node. Those external processes have their thread count set when they're spawned by the scheduler, and it will not change dynamically as the process runs.

The CPUs per Job and Maximum Processes settings on the Local Scheduler are used to determine how many jobs to run at the same time. A lengthier explanation was written here: https://www.sidefx.com/forum/topic/61771/ [www.sidefx.com]
User Avatar
Member
150 posts
Joined: 2月 2009
Offline
ok so i guess then it is important to specify the number of threads we want on a sim, otherwise, it might only get a low number if other tasks are running, and be stuck with it to the end.
https://openfirehawk.com/ [openfirehawk.com]
Support Open Firehawk - An open source cloud rendering project for Houdini on Patreon.
This project's goal is to provide an open source framework for cloud computing for heavy FX based workflows and allows end users to pay the lowest possible price for cloud resources.
User Avatar
Member
603 posts
Joined: 7月 2013
Offline
Any guidance you can give in multi-GPU systems that are targeting GPU render engines?

So, you have the default local scheduler handling the spawning of CPU jobs, based on its setting, but when it comes to GPU jobs under ROP Fetch, you cant spawn simultaneous jobs on a single GPU, you'd need to spread the jobs out across the number of available GPU's.

Would we need to create a custom gpu scheduler where when it spawns the hython process it can set the GPU affinity for the job? So, if I tell the gpu scheduler that there are 4 GPU's available, it could automatically spawn 4 GPU jobs, setting each job to a GPU (-1, -2, -3, -4, etc.)?

…I wanna figure this out before I move things into the Cloud, under GridMarkets for example.
Edited by TwinSnakes007 - 2019年3月27日 11:07:14
Houdini Indie
Karma/Redshift 3D
User Avatar
Member
17 posts
Joined: 2月 2017
Offline
I`m also interested into controling GPUs, or openCL devices assignent per task in my case. For example i have 2 GPU and i`m wedging some openCL sims(pyro,flip etc) and want each task to run on different openCL device…
User Avatar
Member
544 posts
Joined: 9月 2012
Offline
I think there are a few possibilities around GPU. What you mentioned there is one, which we will certainly discuss more and follow up with you. The other possibility is to make PDG GPU aware, being able to send a kernel to the GPU, and create workitems at the level of workgroups in OpenCL - so effectively making the GPU a local “farm”. Would be good to get your feedback around that possibility as well.
- Ken Xu
User Avatar
Member
150 posts
Joined: 2月 2009
Offline
That would be very helpful. When you think about instances like the P3 types, you can get a lot done with a single engine licence, but it definitely needs to be managed well.

https://aws.amazon.com/ec2/instance-types/p3/ [aws.amazon.com]
https://openfirehawk.com/ [openfirehawk.com]
Support Open Firehawk - An open source cloud rendering project for Houdini on Patreon.
This project's goal is to provide an open source framework for cloud computing for heavy FX based workflows and allows end users to pay the lowest possible price for cloud resources.
User Avatar
Member
603 posts
Joined: 9月 2016
Offline
psanitra
I`m also interested into controling GPUs, or openCL devices assignent per task in my case. For example i have 2 GPU and i`m wedging some openCL sims(pyro,flip etc) and want each task to run on different openCL device…

I haven't tested this, but there are env vars to control openCL GPU assignment for Houdini, for example:
HOUDINI_OCL_DEVICENUMBER

Which you can set per-task.

Or this might be supported by your farm scheduler for example:
https://deadline.thinkboxsoftware.com/feature-blog/2017/6/23/to-affinity-and-beyond [deadline.thinkboxsoftware.com]

Otherwise, maybe you could accomplish this using virtual machines with different physical GPU assignments?
User Avatar
Member
603 posts
Joined: 7月 2013
Offline
Any progress or ETA on making PDG GPU aware, from the standpoint of managing jobs that target GPU's?
Edited by TwinSnakes007 - 2019年4月24日 21:43:50
Houdini Indie
Karma/Redshift 3D
User Avatar
Member
544 posts
Joined: 9月 2012
Offline
It's on the roadmap but not soon I'm afraid. Still lots of higher priority things to address. If however folks feel this should be really up there more, please up vote.
- Ken Xu
User Avatar
Member
603 posts
Joined: 7月 2013
Offline
I havent tried, but I suspect that, for PDG and ROPs, that Deadline can handle the scheduling of frames/number of GPUs for a render job?
Houdini Indie
Karma/Redshift 3D
User Avatar
Member
571 posts
Joined: 5月 2017
Offline
Daryl Dunlap
I havent tried, but I suspect that, for PDG and ROPs, that Deadline can handle the scheduling of frames/number of GPUs for a render job?

Could you clarify further on the GPU setting? Depending on what you want, we might already have support implicitly.

So currently, the TOP Deadline scheduler does not do anything specific for GPUs, as its just a generic scheduler. If you want to target slaves with GPUs, then you can utilize the Job Pool and Job Group parms under TOP Deadline node's Job Parms section to decide which slaves to use. In Deadline, you can set GPU affinity for slave machines via Deadline's repository configuration (https://deadline.thinkboxsoftware.com/feature-blog/2017/6/23/to-affinity-and-beyond).

With PDG, if you use a TOP ROP Geometry, you can specify number of frames to render per job.

If on the other hand, you want to specify GPU affinity in the job, that would require the job itself to set it up. This is what the Deadline's Houdini ROP node. Their parm interface allows to set GPU affinity that eventually calls the relevant hscript APIs for the render job (e.g. Redshift_setGPU -s). This part is not supported by PDG as its too specific to the job. But you can use Deadline's Houdini ROP node with a TOP ROPFetch, if you wish.
User Avatar
Member
603 posts
Joined: 7月 2013
Offline
#1 - its scary that I understood all of that.
#2 - I'll try it locally and see how it performs on GridMarkets.

Thanks.
Houdini Indie
Karma/Redshift 3D
  • Quick Links