This is a Development general question, I recall a couple of years ago you saw this and that is running on OpenMP. Contemporary development on Mantaflow you can see OpenMP mentioned.
I also recall, multi-threading with vanilla code wasn’t that super straigh-forward back in the days, that’s the first time I ever heard of OpenMP as an solution.
The reason why is that I just casually browse around, and ended up check out openmp.org and found this blog-post that peaked my interest.
In the past decades, we see that the increase in CPU speed is slowing down and the problems that we want to solve become more complex. With the advancement of the GPU technology, utilizing the computing power of GPU becomes a promising approach. This presents a challenge to the programming model as the architecture is no longer homogeneous. Programmers may not want to deal with different ISA (Instruction Set Architecture) in a single application if they want to offload the compute intense part of the application to the GPU or other devices. A programming model that makes the underneath hardware transparent and provides a high level of usability is needed.
It’s a bit NVIDIA centric in the article, I don’t know how AMD card works on this level. Also I suspect not all NVIDIA cards has that POWER processor? wasn’t that a big deal with Pascal or Maxwell?
Does anybody know of a page on blender.org where there’s an actual list of which libraries that are used to compile blender? and also what version? Otherwise one might wanna make that, could be neat to know. Exactly which Bullet Physics version is used, and ditto with OpenMP.
I don’t know coding on this C level, but wouldn’t it be really compelling to try and use OpenMP where ever possible? To get the multi-threading without much knowledge of coding it vanilla in C?
Also the benefit would come in later, when more GPU support is added to OpenMP. You could try and offload some parts of the code to GPU and get better performance if there’s a supported GPU.
I kinda get that this is not really for rendering engines like Cycles, there it’s smarted to go straight down closer to the metal. So you have C code for CPU, then CUDA/NVIDIA and OpenCL/AMD.
I wonder maybe if sculpt, paint could benefit from OpenMP, obviously simulations have benefited from being multi-threaded.
Anyways just a casual development question about OpenMP and Blender, if anyone have deeper knowledge and time to try and explain how much OpenMP is used in Blender and what version, I would be thankful.
// Martin