I had been struggling trying to optimize an admittedly very simple notch block that presented poor performance when displayed at full scale. Messing around with multiple TD instances trying to optimize I came across some odd behavior; there seems to be a penalty of ~8ms CPU and GPU on this system executing the block in the FIRST TD instance, whereas additional instances show no such behavior (attached screenshot).
The block performs great on FXPlayerHost at the same resolution with minimal CPU and GPU footprint. I can send the block to whoever needs it.
This has a somewhat big impact on our work since we integrate with Notch a lot, hope you can have a look.
OK, this probably goes deep. The issue can even be replicated by mixing Notch Builder and TouchDesigner ; if I open the project in Notch Builder first, the editor shows high compute usage, if I then concurrently open the block in TouchDesigner, the cook times are as expected, and vice-versa. If I close the slow-running instances then the compute times of the remaining instances goes to crap, there’s some sort of process affinity going on here, probably driver or API related.
I’m able to reproduce the issue. But I can also reproduce the issue if I run the block in FXPlayerHost while running TD or Notch Builder, so that furthers your point of it not just being an issue with the host.
I tested a little bit and removing the NDI video source from the dfx file and recompiling the block improved the issue significantly for me, so that does narrow the issue down a bit.
Interesting, I can’t see the benefits from removing the NDI source, I still see a heavy load on the first instance. Actually, I’ve made sure that I launch FXPlayerHost without any other running instances this time and I can’t even set the resolution to the baseline anymore (3704x1144), it crashes! Original report probably had another instance running in the background and that’s why I saw better performance.
I haven’t heard from Notch support yet, if you have a privileged report channel between both teams it may be worth a ping. I can be contacted privately and will gladly help with the resolution process if this goes up in priority.
I’ve tried dissecting Notch Builder’s event log in RenderDoc and see some suspiciously expensive copy operations (~5ms) between textures and render targets, keeps me wondering…