Currently for windows only, this is an initial commit towards native
support of NUMA.
Current commit makes it so Cycles will use all logical processors on
Windows running on system with more than 64 threads.
Differential D2049
Cycles: Add support of processor groups Authored by Sergey Sharybin (sergey) on Jun 3 2016, 6:02 PM.
Details
Currently for windows only, this is an initial commit towards native Current commit makes it so Cycles will use all logical processors on
Diff Detail
Event TimelineComment Actions Couple of notes:
Comment Actions I'd ideally see this patch extended to offer the option of setting a render threads affinity to a specific core in a group (with the idea being, if a thread runs on the same core , it can re-use the l1/l2 caches on the cpu), I ran some tests on an i7-3770 recently and got some small but measurable gains. (Regular being a master build, TA same build but with each render thread assigned a specific core) bmw 27 cpu Regular 17:00.12 1020.12s 100% TA 16.33.25 993.25s 97.4% Koro Regular 34.52.51 2092.51s 100% TA 32:37.37 1957.37s 93.5% Fishy_cat Regular 24:29:23 1469.23s 100% TA 24:03.96 1443.96s 98.3% could be interesting to re-run a test like that on a larger box to see if it was a fluke or not. Comment Actions @Ray Molenkamp (LazyDodo): those are very nice speedups, would be great to see this confirmed. Getting a 6% speedup in a scene like that is usually hard work. Agreed about the overflow.
Comment Actions Wow, that's quite measurable speedup! However, a bit skeptical to just enable such affinity without extra tests. Will do it on various hardware in the studio and if nothing bad happens will enable that.
Comment Actions Address review feedback. Constant thread affinity i'll test later this weekend, Comment Actions Forgot to mentionm, inbalanced groups are now solved as well. So currently my TODO list about this patch is empty. Comment Actions Seems fine except the Windows 7 minimum requirement, we still support Vista so I guess this needs a solution before it can be committed. Comment Actions Eeeeh, sorry of the spam... One thing which is separate form code and everything: would need to clarify whether this breaks Vista, whether we support Vista or whether we need to dlopen something to prevent compatibility issues. Comment Actions I don't have a vista box to test it on, but i'm about 99.9999% sure if one would run this code on vista ,at process creation time you'd get a popup telling you While there might not be many vista users, Vista shares the kernel with windows server 2008, which is probably worth supporting (as in groups don't work, but atleast blender should start) so yeah lower _WIN32_WINNT back to 0x600 and get the functions you need using LoadLibrary/GetProcAddress. Comment Actions Use GetProcAddress() to get Group/NUMA specified functions (well, it's only Group for now, NUMA is on TODO) Comment Actions Well it is not really on topic here blender.org stats indicate < 0.7% marketshare for vista. http://windows.microsoft.com/en-gb/windows/lifecycle would make us support it till next summer not sure I am up for that
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||