Author Topic: performance issues(?)  (Read 1817 times)

hi Guys

i just wonder if there is a logic explanation for the next thing (maybe it's very basic most of you but for me it's still a big question mark)

i have a very complex graph (with lot of type of materials in it, like metal, plaster, rough stone tiles ect), and after a while my graph calculation seems flooded (i don't have better word for that). it's like it starts computing the nodes but after a while it just stops doing anything (even my cpu fan slows back), and after a few minutes it just comes back and continues computing.
as i could observe problem starts at the "albedo part" (where i start using color nodes). until then, it's literally a few seconds (everything is in grey, every mask, noise, bumps, height), but when it comes to the color nodes it seems like somehow the graph "floods" the computing process, and designer waits a lot before continues computing.

now that's one thing, we can say, bahh, to complex graph, make it easier, why are u using lot of nodes in one graph (i'm doing this because that's more flexible to use an already made node as output to making another type of anything. like using a type noise for metal is also good for the stones.)

but i just experienced this:
when i instance this very complex graph in a new graph (just drag and drop the master into a new empty graph) and i just click on the albedo output, it computes the complex graph (with the exposed parameters of course) in a few seconds WITH the color nodes.

comparing the computation time of albedo output of my (let's call it) master graph is between 8 and 12 MINUTES and yeah i see some greyscale nodes that should be in 8 bit and in lower res, but computing the very same albedo output of the master graph as it used as instance node (only expodes parameters can be different, but nothing is switched or disabled during the expose) and it only takes approximately 20 SECONDS

can we say that if i'm using group of nodes as instance, that's much faster then using the same group of nodes as actual nodes in the "active graph", even if i'm using an instance node once in my "active" node (so here is not that is the case that i would use the same group of nodes "100 times", but with different parameters only)

for example i have a master graph with lot of  groups of nodes (like a group for metal type "material", another to the plaster ect) and if i move those group of nodes as compounds (like moving them into separated graphs and using those graphs like instances in my "master" graph) that makes my master graph faster because i don't have all my nodes in "active mode" in the master graph, but only the subgraphs/instance nodes/compounds?

now my master graph is barely uneditable, because if i want to check the albedo output then i have to go the active graph that use the master graph as instance. not to efficient :P

so in nutshell, is instancing a part of a graph makes the graph itself faster, even if i just use that "part instance node" once?

unfortunately i can't post my master and active (that use the master) graphs so i attached a picture
i have gtx1070 (8g vram)+24giga system ram

sorry about the long description, and thanks for the patience!

It's probably faster because it does not have to store and display the intermediate maps, just the output?

While for your source graph, it has to keep 100+ maps in memory.

just read your reply now
thanks for the answer!

anybody from the staff can confirm mvijfwinkel's "statement"?

because creating/editing graphs with instances are more rigid, less flexible and it takes a lot of time to manage the instance nodes (instance nodes more like compounds here, so basically you only used them in one certain graph) because of exposing parameters and inputs outputs...

so is it really gains speed if i'm using instances instead of everything is "opened" (more like created) in the master graph?

because when i using the very slow master graph as an instances the compiling time drops drastically
but i don't know if it works also within the master graph with much more instances and much more exposed parameters and inputs outputs

I think we'll have to include Google map browsing capabilities at some point  ;D


nahh, i surprisingly can found my stuffs in the master graph

in fact, an expose parameter "google maps" would be nice!
and expose parameters should be set in the node(s) where i use the exposed parameter (with a distinctive marking like white parameter on red background)

btw any confirmation about the topic? :D because creating subgraph can be a lot of time and great amount of work, so it would be good to know it worth the effort, or i don't have to keep myself to "restrictions" like that


These might be a super stupid question but when you copy your master do you check parent size of new file? Is the same as in original file?

I'm a little bit surprised Allegorithmic still hasn't convirmed it yet, but I think mvijfwinkel is probably right that the tumbnail images are eating up ram, so using instances would indeed speed things up. Since you prefer not to, you could try docking a lot of nodes where possible (pressing 'd' on them when selected) to disable their thumbnails, although I'm not 100% sure if this will make a difference.

yeah both the master and the new graph have the same size

hmm i didn't though that thumbnails can be this big issue

or more like the "availability" (you can open the node, you have access to the calculated image(node)) is the issue
next time i'll try a more separated master graph with more instance node :P