Tweaks for threading schedule for Threadripper2 and EPYC
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 27 Nov 2018 17:21:43 +0000 (18:21 +0100)
committerSergey Sharybin <sergey.vfx@gmail.com>
Wed, 28 Nov 2018 13:41:22 +0000 (14:41 +0100)
commitce927e15e0e3570a02834b6001519a024ca1e2b6
tree0a11c6b8eabe4f42999844cebd0eba941fa66765
parentb3e2c6941620773ccfba833f9945e2fce5169bb7
Tweaks for threading schedule for Threadripper2 and EPYC

The idea is to make main thread and job threads to be scheduled
on CPU dies which has direct access to memory (those are NUMA
nodes 0 and 2).

We also do this for new EPYC CPUs since their NUMA nodes 1 and 3
do have access but only to a higher range DDR slots. By preferring
nodes 0 and 2 on EPYC we make it so users with partially filled
DDR slots has fast memory access.

One thing which is not really solved yet is localization of
memory allocation: we do not guarantee that memory is allocated
on the closest to the NUMA node DDR slot and hope that memory
manager of OS is acting in favor of us.
source/blender/blenlib/BLI_threads.h
source/blender/blenlib/CMakeLists.txt
source/blender/blenlib/intern/threads.c
source/blender/windowmanager/intern/wm_jobs.c
source/creator/creator.c