our experience is that the “frame” dependency toggle is more of a “task” dependency toggle. if you have 1 frame per task, there’s no real difference, but if you have a 500 frame sim, it must run as a single task which means you can’t really start processing frames as they are simmed. you have to wait till it’s all done in order to start any dependent job. is this accurate and if so, is there some means to get around this limitation?
Hello,
You could submit the jobs as smaller, or even as single frame tasks, and then make any further work merely dependent on the frames it needs, so that things can get started sooner. As to your question, though, dependency is based on the entire job, so once the job is done, those jobs that depend on it will start. If a job requires several jobs, it won’t start until all are done. Hope that helps.
Cheers,
the problem is that we can’t break a sim into smaller tasks. it must run as a single large sequence of frames on a single machine. a sim may take several hours to run, which means that while the first frame was done and ready to go, nothing will render until the last frame has completed with the current dependency system.
the ideal solution would be to have “frames” exist separately from “tasks”. so while a “task” may run a sequence of frames on the same machine in sequence, “frames” would still be tracked individually. this would be helpful for this particular problem as well as avoiding cases where a task of multiple frames would have to recreate work already completed if it was stopped after finishing half the frames in the task. i realize that’s not a trivial alteration to the system.
You’ve got it here. The problem we have is knowing exactly what frames have completed. The best way we can do here is calculate the frames that are completed based on the tasks that have completed. So, if for example, job 2 has frames 1-10 in one task, it needs to wait until job 1 has completed the tasks that overlap that. So, if it wasn’t a sim, Dwight has the right idea.
There really isn’t a uniform way of working around it. Are you doing a conversion job or similar? Is the sim job doing just simulation, or is it rendering as well? Can you bake your sim data, then split the actual rendering up?
our sims are pretty much just simming. meshing, rendering, etc all occur as dependent tasks to avoid having too much processing in a serial task.
is there any plan to more accurately track frame completion for these kinds of scenarios or is this just a limitation we’ll have to learn to accept?
AFAIK there’s no way for us to accurately do this accurately, so it’s not in the works.
I’ll discuss it with the guys and see if they’ve got some other ideas.
It’s kind of the problem with sim jobs. The closest you might be able to get is to delay the dependent job by setting it to start at a certain time, but if it catches up with the sim job, there will be errors.