Zanimljivo, za compute-bound problem (inicijalizacija neuralne mreze gde neuroni "rastu") je isplativo da niti smeju da "kradu" posao nitima sa drugih NUMA nodova. Ovo se desava ako neko jezgro dobije mnogo "nezgodnih" neurona koji se mnogo vise granaju sto scheduler ne zna unapred, posto je odnos racunanja i pristupa memoriji povoljan, kradja posla drugom jezgru nije skupa i pozitivno utice na performanse zato sto ce se iskoristiti sva jezgra maksimalno.
U ovom slucaju je OK da radna nit na NUMA nodu X "ukrade" task od niti na NUMA nodu Y.
Ali kada se predje na simulaciju, koja je cisto ogranicena memorijskim bandwidth-om je stetno da nit krade posao nitima na stranim NUMA nodovima. Na Intel platformama kradjom dolazi do saturacije QPI/UPI linkova i performanse se gube zato sto sistem gubi vreme sa ogromnim bus traffic-om. U ovom slucaju je bolje da nit ode da spava i ceka kraj koraka nego da pokusava da krade posao nitima sa drugih NUMA nodova. Igrao sam se i sa threshold-ovanjem tipa koliko jedna nit treba da bude "iza" u poslu da postane isplativo krasti joj posao sa drugog NUMA noda, odgovor: skoro nikad.
Ovo vazi za vecinu sistema (nisam probao na 32-core TR-u!)... osim za par oddball Haswell EX 4S sistema gde, mislim, da prijavljena NUMA topologija ne odgovara pravom stanju stvari pa work-stealing zapravo smanjuje pad performansi.
Nisam nikad probao 2990WX, ali pretpostavljam da bi 2990WX bio bas takav oddball sistem - ako neko ima 2990WX bio bih zahvalan za volontiranje :-)
Ljudima koji rade HPC/serverske aplikacije ovo nije nista novo. Sta je bolje zavisi od konkretnog problema. Silne disertacije su napisane na ovu temu.
Ali AMD je celu problematiku sada uveo na desktop polje sa TR procesorima.
Ako neko ocekuje da OS scheduler to magicno resi... hahaha :)
Windows ocigledno ima TR-specific bag. Ali ni Windows ni Linux ne mogu biti pametniji od samih aplikacija.
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey