Fusion 9’s OpenCL “Acceleration”

I promised in my initial review of Fusion 9 to do some speed tests. Blackmagic claims that every tool has been rewritten to offer GPU acceleration with OpenCL. Naturally, that’s of great interest to pretty much everyone, especially those of us with access to overpowered Titan X cards. Alas, the news is not so good.

Although I can say for certain that almost every tool does, indeed, now run in OpenCL mode, the results of my testing indicate that most of them are now slower. There are a couple of exceptions, and in those cases the improvement is dramatic, but by and large, your comps will probably run faster with OpenCL disabled, regardless of your hardware.

I began my tests with the tools in the Blur category, comparing Fusion 8 and Fusion 9. Generally, Fusion 8 rendered around 30% faster. The notable exceptions were the Directional Blur and Vector Motion Blur nodes, which were up to 10x faster in Fusion 9. Since those have always been among Fusion’s slowest tools, the speed-up there is most welcome. If it means everything else is 30% slower, though, the savings are quickly squandered.

Some test comps from Teen Wolf and NCIS showed similar results—in general, Fusion 8 was faster. To eliminate the possibility that there was some other factor in play, I decided to start testing Fusion 9 against itself with varying OCL settings as I moved into the Color tools.

OCL caching is turned off by default. One of the slowest parts of an OCL process is moving images in and out of the GPU’s memory. By setting Caching to Full, the image should remain in GPU memory until all of the needed OCL calculations are finished, and only the final image should be moved back into system RAM. Testing showed that Full Caching did indeed speed up the tools significantly; they were up to twice as fast with it on, and as much as 50% faster with it set to Basic. However, the CPU mode still smoked OCL.

In order to sanity check myself, I shared my findings with the beta testers, and at least one reported similar results (if anyone else ran tests, they did not publish the findings).

Hopefully BMD will do some benchmarking of their own to either confirm or dispute my tests, and if it’s found that I’m right, they can tune things for better performance. In the meantime, it might be worth setting defaults on most tools to turn OpenCL off (the switch is in the Common Controls tab).

Fusion 9 still needs its shakedown cruise—there are still some unfortunate bugs, and it tends to be a little bit unstable. I am pretty happy with most of the new features, though. I’ve been using the Delta Keyer in production for the past couple of weeks, and it does a marvelous job. So by no means am I saying don’t use Fusion 9. Just don’t use it because you’re expecting it to be faster than 8.

Bryan
Web admin for the Christian Gamers Guild and co-host of the Geek @ Arms podcast. Bryan primarily runs character-driven narrativist RPGs such as Primetime Adventures and Tales From the Loop.

16 Comments

  1. Hello. 2 days ago Fusion 9 became wicked slow when rendering with Software Rendering (it’s about 20 times slower than it was before, sometimes taking up to 3 minutes to render a single frame). OpenGL Rendering works just fine. I set the OpenCL to full cache as recommended above. I’m not sure what else might be contributing to the apparent bottleneck in the software rendering mode; I haven’t done any upgrades to the software or the system. Any advice you have would be greatly appreciated.

    1. I’m afraid that whatever you’re experiencing isn’t something I’ve yet seen. There is a limited amount of help I can offer with regard to performance issues.

      OpenCL isn’t likely to be the culprit, at least not directly, because the software renderer by definition doesn’t use GPU acceleration. Still, since you did change that setting, you might try setting it back to see if it solves the problem.

      Is this slowdown related to a specific Renderer3D, or is it affecting every scene you make? Sometimes nodes or even entire comps can become corrupted. When that happens, deleting the offending node and making a new one can clear it. If it’s a comp-wide problem, try copying all nodes and pasting them into a new comp file.

      It’s possible that it’s not actually the Renderer that’s the problem but something upstream of it (this is assuming the problem is affecting just one comp and isn’t systemic). Try disabling sections of your 3d tree to see if it suddenly speeds up more than you would expect.

      If it’s a systemic problem, you could try renaming your Fusion preferences file. Fusion will automatically regenerate the file with default settings the next time it starts up. If the problem goes away, then it was a corrupted Prefs file. If not, you can just delete the new one and restore the name of the old one.

      Sometimes reinstalling graphics drivers can fix some problems, especially intermittent or spontaneous ones like this, although since this is an issue with the Software renderer and not the GL one, I doubt that’s the case. Still, it’s a non-destructive and easily performed option.

  2. I would also point out that the issue could very well be the graphics card: OpenGL and OpenCL are different. Some cards work a lot better with OpenGL. For example, if you’re running an nVidia card, OpenGL and CUDA are fast and great, however OpenCL performance on nVidia (even the high end cards) is still subpar.

    If you want strong OpenCL performance, you need to start looking at the AMD RX VEGA 64 cards. AMD’s implementation of OpenCL, both hardware and driver, are spade-loads above nVidia at this point. In fact, AMD is now regularly beating CUDA in Blender for this exact reason.

  3. We’re pretty well tied to CUDA due to Redshift. I don’t think a speed up in comp is worth losing the gigantic 3d gain we’ve seen by getting off of V-Ray.

    Anyway, even if Nvidia doesn’t do OpenCL as well as AMD, it *should* still be better than CPU rendering, but the simple fact is that it’s not. I haven’t found the time yet to redo these tests in 9.0.1, and I have a feeling that 9.0.2 is not far off, which may bring some additional fixes and optimizations. We’ll see.

    If there’s anyone with some beefy AMD GPUs who wants to do some benchmarking of their own (anyone with one of those new iMac Pros want to give it a whirl?), I’d be very interested in hearing the results. It’s not something I’m going to be able to do any time soon. I’m really not interested enough to spend $700 on the project!

  4. My issue appears to have been corrupted nodes. It isn’t affecting new renders. Thanks for taking the time to address this.

  5. thank you for this interesting, but worrying article! it is very unfortunate that the Software Renderer cannot use GPU. regarding the Fusion 3D rendering situation more widely, it sounds like using a plugin for final 3D render is something worth trying, not least because Renderer3D (‘Software’) has so few controls, unless i am missing something (and i have checked both the Fusion manuals). the Redshift website () does not mention compatibility with Fusion, but is it compatible? this page – https://lesterbanks.com/2018/02/redshift-aovs-blackmagic-fusion/ – has a tutorial using redshift & fusion, but uses the maya plugin, which is of no use to me as i use blender.
    a search for fusion-compatible renderers has produced no useful results, so i will contact blackmagic this morning and try to find out directly.

    1. At present there aren’t any third-party render plugins available for Fusion. Someone did some experimenting several years ago with making a 3Delight (Renderman compatible) renderer for Fusion, but it was just a proof-of-concept thing and was never finished. I wouldn’t hold out too much hope to see Redshift making plugins for compositors, at least not in the near future. Chaos Group has a version of V-Ray for Nuke; if Fusion gets enough traction in feature films, they might do the same for it. I also think it would be feasible to port Cycles. But a ray-tracer in Fusion would solve only a few small problems and would be hampered by slow speeds. Even the fastest ray-trace engine would slow down compositing, so you wouldn’t want to use it often, and in many cases it may well be better to let the ray-tracer handle just the things only it can do, like reflections and GI, while rendering most of the rest of the scene in the OpenGL renderer for better speed.

  6. Congratulations for this post. Since BM-Fusion did not make any big update since Dec 2017. In your experience and opinion, what the best Hardware to the best performance in Fusion. (Operating system, RAM, Graphics card, processor, …) ??? Thank you Bryan.

    1. I don’t really have the resources to do too much in the way of testing platforms; all I can give you is my preferences based on a very small sample size. I run Fusion in Windows 7 Pro at work, 10 Pro at home. Since the built-in tools are all OpenCL when they’re GPU accelerated, your choice of graphics card is open to any vendor—you can even process OCL on a CPU, although you lose most speed benefits from doing so. Some plug-ins do use CUDA, though, so I generally stick with Nvidia. I wouldn’t go any lower than their 600 series GPUs, but obviously newer and faster is better. In a decision between more cores and more VRAM, take more VRAM. My home PC has a GTX 1070. At work I have two Titan X. My previous home workstation was a 900 series.

      As much RAM as possible. The more you have, the more you can cache, and the faster working in Fusion will be. CPU clock speeds have tapered off; they’re not improving as quickly as GPU tech, so anything in the middle of the pack will do. More cores is usually more important than a faster clock. Some old processors won’t run Fusion 9 because of a requirement for SSE 4.1, but if you happen to run into that, you’ll probably be able to run Fusion 8. I had 8 running on a Pentium fairly recently. It wasn’t fun to work with, but I could at least do some experimenting and teaching on that platform.

      Fusion’s pretty forgiving of underpowered computers; it doesn’t have a lot of overhead, and it seems to be pretty efficient at leveraging all the power you can give it.

      1. Thanks for sharing your experience, Bryan. I am asking those questions because we have a lot of crashes in Fusion randomly. I thought it was because of RAM… but we can not guess the main problem…

        1. Fusion’s pretty sensitive to video card drivers. If you’re not on the latest, try upgrading. If you are on the latest, try stepping back to a previous one. It took us a while to find the perfect driver that would be stable for Fusion, allow a Wacom tablet to work in Generation, and not foul up the viewport in 3DS Max.

          1. Also, it depends on what you’re doing. Some users report that complex BSplines are crashy. Others that the CameraTracker is unstable. I keep my splines fairly simple, and I have PFTrack, so I never use CameraTracker. I’m unlikely to encounter either of those conditions. Anything I know about crashes is mostly gleaned from forum posts, and folks have an unfortunate tendency to only report what fails and never what works. :/

          2. Thanks Bryan, thank you for your time to answer me. You are very kind !!! Greetings from Spain !!!

  7. Hello Bryan.
    Thanks for share! Do you have a tutorial to make a good benchmarking?

    Thank you.

    1. I’ve never written anything on the topic, no, and I have the bad habit of losing track of my testing comps. I need to be more organized about that.

      The basics are to create a chain of nodes you want to test; they should typically all be the same node, and they should perform serially. You want 20 – 30 of them, usually, to even out statistical variation and make the render times long enough to show easily-detected differences. Use a Fusion-generated image as the source so you can take I/O speed out of the equation. Always clear the cache by right-clicking the readout in the lower-right corner, where it says something like “1% – 913 MB,” and choosing “Purge Cache.” You need to do that before starting each test to be certain Fusion isn’t holding onto cached data, which will make it appear artificially faster.

      Perform a render, and you’ll get the overall speed readout in the status bar when it’s finished. Make the change you wish to test, then clear the cache and render again to see what kind of difference it made. I recommend doing each test at least three times and averaging to get reasonably reliable results.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.