I just got the POPs alpha today so probably assume I’m doing something wrong I took one of the examples and added some chop logic to transform the z/w components of the 4d POP noise, which immediately tanked my performance down to like 6fps. Is there a better way to do this?
@snek have you scanned the cook times via Performance Analyzer to pinpoint the first/biggest cook time in the network?
Hi @snek, thanks for the report, what you’re doing looks ok from what I can see.
Can you share the toe file and your system specs (mostly interested in GPU)? wondering how dense sphere1 and sphere2 are, the copy could be resulting in a lot of geometry, it’s possible you might be low on memory. Rendering all the viewers (especially if adaptive homing is on) gets expensive as well depending on how much geometry.
If that’s the case and you don’t need to process further the geo using instancing on the geometry comp saves memory compared to doing a copy in POPs.
GPU is RTX 3050 Ti Laptop, CPU is i9-12900H. Task manager showed that I still had ram and vram to spare, so I don’t think it was running out. I don’t really have any particular goal with this though, I was just playing around with it, so if this is a bad way to do the instancing I can just learn from that and move on.
SprinkleColorNoiseVolume.5.toe (4.3 KB)
I tried turning off all the viewers and going through a render top, here’s the output from that:
frame Start Frame
0.081 ms 94 cook Forcing nodes to cook at start of frame
0.005 ms 76192 cook Chain Start /ui/local/time/clock (CHOP:null)
0.010 ms 76192 cook /ui/local/time/scrubber (CHOP:switch)
0.006 ms 76192 cook /ui/local/time/independent (CHOP:switch)
0.010 ms 76192 cook /ui/local/time/cframe (CHOP:speed)
0.018 ms 76191 cook Chain Start /ui/dialogs/mainmenu/lock (DAT:chopexec)
0.013 ms 76191 cook /ui/dialogs/mainmenu/perform2 (CHOP:perform)
0.007 ms 76191 cook Chain Start /ui/dialogs/menu_op/focusClose (DAT:chopexec)
0.012 ms 76191 cook /ui/dialogs/menu_op/combinedFocus (CHOP:logic)
0.003 ms misc Frame Start Global Maintenance
0.002 ms 76192 cook Chain Start /local/time/clock (CHOP:null)
0.004 ms 76192 cook /local/time/scrubber (CHOP:switch)
0.004 ms 76192 cook /local/time/independent (CHOP:switch)
0.006 ms 76192 cook /local/time/cframe (CHOP:speed)
0.001 ms misc CHOP_Beat /local/master_beat (CHOP:beat)
0.007 ms 76190 cook Chain Start /local/master_beat (CHOP:beat)
0.004 ms misc Selective/Force Cook Check /ui/dialogs/mainmenu/fps1/null1 (CHOP:null)
0.009 ms 76191 cook Chain Start /ui/dialogs/mainmenu/fps1/count1 (CHOP:count)
0.002 ms misc Selective/Force Cook Check /ui/dialogs/mainmenu/null2 (CHOP:null)
0.009 ms 76192 cook Chain Start /ui/dialogs/mainmenu/select2 (CHOP:select)
0.006 ms 76193 cook /ui/dialogs/mainmenu/perform1 (CHOP:perform)
0.001 ms misc Selective/Force Cook Check /ui/dialogs/mainmenu/null3 (CHOP:null)
0.003 ms 76192 cook Chain Start /ui/dialogs/mainmenu/select1 (CHOP:select)
0.002 ms misc Selective/Force Cook Check /ui/dialogs/mainmenu/cookrate (CHOP:null)
0.003 ms 76192 cook Chain Start /ui/dialogs/mainmenu/select3 (CHOP:select)
0.002 ms misc Selective/Force Cook Check /ui/dialogs/mainmenu/gpuUsage/null1 (CHOP:null)
0.003 ms 76192 cook Chain Start /ui/dialogs/mainmenu/gpuUsage/replace1 (CHOP:replace)
0.003 ms 76192 cook /ui/dialogs/mainmenu/gpuUsage/in1 (CHOP:in)
0.012 ms misc CHOP_Beat /ui/dialogs/timeline/transport/musiccode/beat (CHOP:beat)
0.012 ms 3844 cook Chain Start /ui/dialogs/timeline/transport/musiccode/beat (CHOP:beat)
0.003 ms misc Selective/Force Cook Check /ui/dialogs/keyframer/timeline/attributes (CHOP:null)
0.004 ms 76191 cook Chain Start /ui/dialogs/keyframer/timeline/replace1 (CHOP:replace)
0.021 ms 76191 cook /ui/dialogs/keyframer/timeline/constant2 (CHOP:constant)
0.003 ms 76191 cook /ui/dialogs/keyframer/timeline/merge1 (CHOP:merge)
0.005 ms 76191 cook /ui/dialogs/keyframer/timeline/merge2 (CHOP:merge)
0.011 ms 76191 cook /ui/dialogs/keyframer/timeline/select2 (CHOP:select)
0.022 ms 76191 cook /ui/dialogs/keyframer/timeline/info1 (CHOP:info)
0.018 ms 76191 cook /ui/dialogs/keyframer/local/animation1/keyframe (CHOP:keyframe)
0.002 ms 76191 cook /ui/dialogs/keyframer/local/animation1/in (CHOP:in)
0.009 ms 76191 cook /ui/dialogs/keyframer/local/animation1/index (CHOP:timeline)
0.003 ms misc Selective/Force Cook Check /ui/dialogs/menu_op/family/active (CHOP:null)
0.000 ms misc MIDI Event Check /sys/devices/midi/kaoss/mapmaster1/midiinmap (CHOP:midiinmap)
0.000 ms misc MIDI Event Check /sys/devices/midi/peavey/mapmaster1/midiinmap (CHOP:midiinmap)
0.000 ms misc MIDI Event Check /sys/devices/midi/bcf2000/mapmaster1/midiinmap (CHOP:midiinmap)
0.000 ms misc MIDI Event Check /sys/devices/midi/bcr2000/mapmaster1/midiinmap (CHOP:midiinmap)
0.000 ms misc MIDI Event Check /sys/devices/midi/oxygen8/mapmaster1/midiinmap (CHOP:midiinmap)
0.000 ms misc MIDI Event Check /sys/devices/midi/motormix/mapmaster1/midiinmap (CHOP:midiinmap)
0.000 ms misc MIDI Event Check /sys/devices/midi/xsession/mapmaster1/midiinmap (CHOP:midiinmap)
0.000 ms misc MIDI Event Check /sys/devices/midi/eclernuo4/mapmaster1/midiinmap (CHOP:midiinmap)
0.000 ms misc MIDI Event Check /sys/devices/midi/nanoKONTROL/mapmaster1/midiinmap (CHOP:midiinmap)
0.001 ms cook Propagating changes to other nodes /local/midi/template/mapmaster1/midiout (CHOP:midiout)
0.006 ms 76196 cook Chain Start /local/midi/template/mapmaster1/midiout (CHOP:midiout)
0.000 ms misc MIDI Event Check /local/midi/template/mapmaster1/midiinmap (CHOP:midiinmap)
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.000 ms misc Process Value Changes
0.002 ms 76190 cook Chain Start /ui/dialogs/keyframer/timeline/timebar (CHOP:select)
0.006 ms 76190 cook /ui/dialogs/keyframer/timeline/mode (CHOP:switch)
0.007 ms 76190 cook /ui/dialogs/keyframer/timeline/timebar1 (CHOP:select)
0.002 ms 76191 cook /ui/dialogs/timeline/finalindex (CHOP:null)
0.002 ms 76191 cook /ui/dialogs/timeline/replace1 (CHOP:replace)
0.007 ms 76191 cook /ui/dialogs/timeline/getframe (CHOP:select)
0.013 ms 76191 cook Chain Start /ui/dialogs/palette/palette/list/text/scrollbar (COMP:container)
0.032 ms panel Update Panel /ui/dialogs/palette/palette/list/text/scrollbar (COMP:container)
0.004 ms 76191 cook /ui/dialogs/palette/palette/list/text/text/null1 (CHOP:null)
0.005 ms 76191 cook /ui/dialogs/palette/palette/list/text/text/constant1 (CHOP:constant)
0.041 ms 76192 cook Chain Start /ui/dialogs/mainmenu/fps1/textbg (COMP:text)
0.017 ms 76191 cook /ui/dialogs/mainmenu/fps1/eval1 (DAT:eval)
0.003 ms 76191 cook /ui/dialogs/mainmenu/fps1/limit1 (CHOP:limit)
0.002 ms 76191 cook /ui/dialogs/mainmenu/fps1/lag1 (CHOP:lag)
0.005 ms 76191 cook /ui/dialogs/mainmenu/fps1/envelope1 (CHOP:envelope)
0.004 ms 76191 cook /ui/dialogs/mainmenu/fps1/select2 (CHOP:select)
0.008 ms 76191 cook /ui/dialogs/mainmenu/fps1/perform1 (CHOP:perform)
0.009 ms panel Update Panel /ui/dialogs/mainmenu/fps1/textbg (COMP:text)
0.008 ms 76215 cook Chain Start /ui/dialogs/timeline/currentframe (COMP:container)
0.017 ms panel Update Panel /ui/dialogs/timeline/currentframe (COMP:container)
0.004 ms 76192 cook /ui/dialogs/timeline/framepixel (CHOP:null)
0.003 ms 76192 cook /ui/dialogs/timeline/limit2 (CHOP:limit)
0.019 ms 76192 cook /ui/dialogs/timeline/math3 (CHOP:math)
0.005 ms 76217 cook Chain Start /ui/dialogs/timeline/framebar (COMP:container)
0.005 ms panel Update Panel /ui/dialogs/timeline/framebar (COMP:container)
0.093 ms 76189 cook Chain Start /ui/dialogs/timeline/transport/timecode/bg (TOP:text)
0.012 ms 76189 cook /ui/dialogs/timeline/transport/timecode/stream (DAT:eval)
0.006 ms 76189 cook /ui/dialogs/timeline/transport/timecode/select1 (DAT:select)
0.018 ms 76189 cook /ui/dialogs/timeline/transport/timecode/chopto1 (DAT:chopto)
0.090 ms 76189 cook Chain Start /ui/dialogs/timeline/transport/frame/bg (TOP:text)
0.008 ms 76189 cook /ui/dialogs/timeline/transport/frame/stream (DAT:eval)
0.014 ms 76189 cook /ui/dialogs/timeline/transport/frame/eval1 (DAT:eval)
0.079 ms 244 cook Chain Start /project1/render1 (TOP:render)
0.027 ms render Prepping Nodes For Render /project1/render1 (TOP:render)
0.006 ms 77 cook /project1/geo1/out1 (POP:out)
0.005 ms 77 cook /project1/geo1/in1 (POP:in)
0.050 ms 3276 cook /project1/copy1 (POP:copy)
0.073 ms 3285 cook /project1/sprinkle1 (POP:sprinkle)
0.119 ms 3281 cook /project1/noise1 (POP:noise)
0.008 ms 3330 cook /project1/lookup2 (CHOP:lookup)
0.006 ms 3329 cook /project1/math1 (CHOP:math)
0.007 ms 3329 cook /project1/timeline1 (CHOP:timeline)
0.002 ms 3330 cook /project1/lookup1 (CHOP:lookup)
0.008 ms render Rendering /project1/render1 (TOP:render)
0.001 ms render Sorting Geometries /project1/render1 (TOP:render)
0.001 ms render Updating Camera View /project1/render1 (TOP:render)
0.093 ms render Pre-Render /project1/render1 (TOP:render)
0.012 ms 1 render Rendering a group of SOP(s) /project1/render1 (TOP:render)
0.003 ms render Setting Up Material /project1/render1 (TOP:render)
0.009 ms gfx Enabling Phong Shader
0.012 ms 1 render Rendering Primitive Batch(s) /project1/geo1/out1 (POP:out)
0.000 ms render Post-Render /project1/render1 (TOP:render)
0.282 ms panel Laying out panel /ui/dialogs/timeline (COMP:container)
0.004 ms misc Draw All TouchDesigner Windows
1.615 ms misc Rendering a Window
173.692 ms gfx Preparing frame for presentation
0.038 ms misc Presenting Windows
0.009 ms 12 cook Forcing nodes to cook at end of frame
0.000 ms misc Garbage collecting GPU memory
0.022 ms misc Frame End Global Maintenance
0.000 ms misc Check For Redraws /sys/TDTox/popViewer/graph_/opview (TOP:opview)
0.000 ms misc Check For Redraws /ui/dialogs/palette/palette/list/loader/tmp/icon (TOP:opview)
0.009 ms misc Check Execute DAT /sys/TDResources/threadManager/ThreadManagerExecute (DAT:execute)
0.007 ms 76191 cook Chain Start /sys/TDResources/local/time/clock (CHOP:null)
0.017 ms 76191 cook /sys/TDResources/local/time/scrubber (CHOP:switch)
0.008 ms 76191 cook /sys/TDResources/local/time/independent (CHOP:switch)
0.016 ms 76191 cook /sys/TDResources/local/time/cframe (CHOP:speed)
0.556 ms script /sys/TDResources/threadManager/ThreadManagerExecute /sys/TDResources/threadManager/ThreadManagerExecute (DAT:execute)
0.002 ms misc Check Execute DAT /sys/TDResources/TDAppLogger/execute1 (DAT:execute)
0.007 ms script /sys/TDResources/TDAppLogger/execute1 /sys/TDResources/TDAppLogger/execute1 (DAT:execute)
0.001 ms misc Check Execute DAT /sys/TDResources/TDSysLogger/execute1 (DAT:execute)
0.004 ms script /sys/TDResources/TDSysLogger/execute1 /sys/TDResources/TDSysLogger/execute1 (DAT:execute)
0.001 ms misc Check Execute DAT /sys/TDResources/threadManager/logger/execute1 (DAT:execute)
0.003 ms script /sys/TDResources/threadManager/logger/execute1 /sys/TDResources/threadManager/logger/execute1 (DAT:execute)
4.187 ms frame Total CPU Processing Time
175.728 ms frame Total Window Redraw Time
0.492 ms frame Unaccounted Frame Time
178.146 ms frame Total Frame Time
16 misc Active Ops
79 misc Total Ops
Thanks for sharing the file, so taking a look at it, the very slow operation you’re doing is the sprinkle volume (in volume mode it’s currently tracing a lot of rays and similarly to the ray POP not very optimized, it’s on our list though), and since the sprinkle is after an animated POP, the noise, it’s being recomputed every frame.
The copy POP which was my initial guess is the second most expensive but not that expensive in comparison.
See attached for much better performance, swapping the order of the POPs.
SprinkleColorNoiseVolume_cheaper.toe (4.5 KB)
One way to troubleshoot issues/optimize, you can middle click on each POP and look at GPU cook time, you can also try the probe palette component (in tools) in GPU mode which will give you an overview, see screenshot
The performance monitor really only gives you information about CPU usage, not GPU, so won’t be super useful with POPs.
We’ll update Optimize - Derivative to emphasize the above
I hope that helps!