[ Seyokiller @ 06.10.2017. 17:15 ] @
Info o novoj seriji procesora I9 u linku ispod

https://www.intel.com/content/.../processors/core/x-series.html


[ Branimir Maksimovic @ 06.10.2017. 17:50 ] @
L3 cache mu je katastrofa spor. Ja sam razmisljao da uzmem 7800X zbog avx512, ali kad sam saznao da je cache bas toliko spor
odustao sam i cekam Ice Lake. Kome treba vise korova mislim da je threadripper povoljnije resenje.
[ Ivan Dimkovic @ 07.10.2017. 12:34 ] @
Moje iskustvo sa AVX-512 nije bas bilo spektakularno zato sto je procesiranje koje sam testirao prakticno ograniceno memorijskim bandwidth-om, na kraju AVX jedinice cekaju na podatke da dodju iz DDR4 memorije i nista ne vredi sto procesiram 16 float-ova odjednom.

Naravno, neki drugi algoritmi koji imaju veci lokalitet mogu profitirati.
[ Branimir Maksimovic @ 09.10.2017. 04:26 ] @
Problem je sto u proseku avx donosi oko 25% ubrzanja taman toliko koliko moras da spustis klok zbog pregrevanja (podesivi offset). Na comp.arch nisu time bas nesto odusevljeni. A upravo to ogranicenost memorijom je najveci problem i zbog toga ne donosi 100% nego samo 25%.
Jedino kad su podaci u L1 donosi 100%. Ono sto mi kod Skylake-X najvise smeta je to sto je L3 samo 25% brzi od RAM-a (doduse mozes da overklokujes cache pa da bude 100% brzi koliko sam video).
[ Ivan Dimkovic @ 13.10.2017. 10:41 ] @
Pa da, mozes da overklokujes L3, samo osim npr. HFT tradera (i, naravno, neke kucne varijante overklokovanja "zato sto mogu" i sl.) sumnjam da ce neki ozbiljni biznis da rizikuje rad van specifikacije i sve moguce greske koje mogu da nastanu. Mislim da ce ti CPU-ovi prodati za poslovnu (WS) primenu vrlo verovatno trcati na fabrickim podesavanjima.

Ja nemam jos pristup Skylake X procesorima, ali sam testirao dosta Xeon varijantu (Skylake SP) i bar za ono sto je mene zanimalo (skupovi diferencijalnih jednacina sa jako malim odnosom kalkulacija : memorijski I/O) performanse su prakticno bile iste kao Broadwell EP.

E sad ja sam testove radio na Google-ovim Compute Cloud masinama, koje abstrakuju NUMA topologiju tako da pojma nemam koliko je optimalan memorijski pristup i da li sam dobio 2 fizicka NUMA noda koja su apstrakovana kao jedan sto u mojim testovima moze da napravi i 30% usporenja.

Sve u svemu, moje iskustvo je "meh" kada je "compute" u pitanju... doduse za server/datacenter stvari koliko znam Skylake SP je nabijen svim i svacim novim tako da ne sumnjam da ce biti jako interesantan.
[ Branimir Maksimovic @ 20.10.2017. 04:11 ] @
Pa ako imas slucaj da citas sekvencijalno onda prakticno mozes samo da se oslanjas na L2, L3 je neupotrebljiv zato sto se puni samo onda kada nesto izleti iz L2, pa se prebaci (ne radi readahead kao u slucaju inclusive cache-a). Otud verovatno i los Aida score za L3 na ovom procesoru.

edit: to znaci da ako ti je data set veci od megabajt da je sve jedno da li ces koristiti sse2 ili avx 512.
[ Ivan Dimkovic @ 26.10.2017. 12:02 ] @
Upravo, interesantno AnandTech koristi programcic koji sam raspisao kao jedan od sistemskih benchmarka, i evo rezultata ovde:

https://www.anandtech.com/show...xe-and-core-i9-7960x-review/12



Mislim da AnandTech i dalje koristi staru verziju bez AVX-512 ali u praksi se nista vredno pomena ne dobija na ovom problemu koji se sastoji od ogromnog broja citanja iz memorije u odnosu na racunanje sa podacima koji mogu stati u L2 kes.

No, kako stvari stoje izgleda je Intel odlucio da AVX-512 postane deo i konzumerskih procesora od Cannon Lake generacije (https://www.anandtech.com/show...t-by-consumer-cannon-lake-cpus), pretpostavljam da su nasli neki scenario gde trosenje tranzistora na ove instrukcije ima smisla van serverskog/HPC/WS trzista.
[ Branimir Maksimovic @ 26.10.2017. 12:14 ] @
Intel obecava jos od Skylake-a, AVX 512 u konzumerskim procesorima, a ako to iskombinuje sa inclusive L3 cache-om, jos ce biti nekih poboljsanja ;p
Ovaj benchmark upravo pokazuje koliki je non inclusive L3 flop ;)

PS: Svaka cast na programu!


[ Ivan Dimkovic @ 27.10.2017. 10:25 ] @
Hvala (bio sam prilicno iznenadjen kada je AnandTech odlucio da ga koristi kao benchmark)!

Mislim da sam se profesionalno malo udaljio od industrije razvoja CPU-ova tako da ne znam sta se trenutno kuva za 2020+, ali me zivo zanima zbog cega je Intel odlucio da (mozda) stavi AVX-512 u konzumerske procesore.

Meni pada na pamet par mogucnosti:

a) Postoje novi desktop/laptop/portable aplikativni scenariji gde bi AVX-512 doneo solidna poboljsanja
b) Postoji ozbiljna mogucnost da im AMD uzme deo trzista pa moraju da poboljsaju ponudu
c) Ne kosta ih puno da stave te instrukcije u procesore a mogu da koriste te instrukcije kao segmentator (kao sto rade sa skoro svim ostalim)

Mozda se te instrukcije pokazu odlicnim za video editing, obradu zvuka i sl. gde je i dalje skupo bacati podatke na i nazad sa GPU-a u odnosu na kalkulacije koje se rade.

Nesto a-la "Macbook Pro" segment.
[ Branimir Maksimovic @ 03.11.2017. 12:58 ] @
"b) Postoji ozbiljna mogucnost da im AMD uzme deo trzista pa moraju da poboljsaju ponudu"

Mislim da je ovo, Da avx 512 nesto znaci na desktopu stavili bi te instrukcije jos u Skylake kao sto su prvobitno obecali.
Najveci problem kod avx 512 je pregrejavanje procesora koji oni prodaju na frekvenciji toj i toj, a zapravo ako hoces zaista
da teras te instrukcije, treba da spustis klok za 25% (najmanje). To prakticno ponistava bilo kakav benefit ovih instrukcija.
AMD nije hteo da zagrize tu jabuku pa je jednostavno napravio tako da AVX instrukcije imaju pola thorughoutputa (nesto
kao 1 fma avx512 jedinica na jeftinijim X modelima) ;)
[ Branimir Maksimovic @ 30.11.2017. 07:01 ] @
Hm , po prvi put i (jedini) da vidim neki benchmark za avx512 gde se vidi benefit:
https://www.pugetsystems.com/l...s-AVX2-Linpack-benchmark-1068/

"The following chart show the significantly better performance of the core i7-7800X over the i7-8700K when using 1, 2, 4, and 6 cores running the Linpack benchmark."

Izgleda da cu ipak da zagrizem jabuku i uzmem 7800X ;)
[ tuxserbia @ 30.11.2017. 08:07 ] @
I Phoronix uradio. Rezultati mešani.

https://www.phoronix.com/scan....mp;px=GCC-8-AVX-512-Benchmarks
[ Branimir Maksimovic @ 30.11.2017. 08:24 ] @
Ma to je gcc, nisu oni majstori da optimizuju ko Intel ;)
Kad se docepam ovoga, postacu i ja neke rezultate na podforumu za asembler ;)
[ Ivan Dimkovic @ 30.11.2017. 10:15 ] @
Citat:
Branimir Maksimovic
Hm , po prvi put i (jedini) da vidim neki benchmark za avx512 gde se vidi benefit:


Mislim da je pitanje da li za konkretan zadatak na kome odlicno uposljavas AVX-512 ne bi mogao jos solidno da profitiras seleci ga na GPU.

Intel verovatno cilja na gomilu koda gde je neisplativo seliti kod na GPU (skupo portovanje / implementacija) ili performanse ne mogu da se postignu zbog drugih faktora, tipa velicina zadatka u odnosu na ukupnu brzu GPU memoriju pa data I/O ubija sve ili mozda kod zahteva stvari koje GPU ne moze da izvrsi efikasno.

Ako mozes da "pokupis kajmak" jednostavnim rekompajliranjem ili bar samo sa pisanjem malog broja f-ja sa AVX-512 intrinsic-ima to ima svoje trziste i to verovatrno solidno inace sumnjam da bi se Intel trudio da ubaci ceo instrukcijski set u arhitekturu.

Citat:

Ma to je gcc, nisu oni majstori da optimizuju ko Intel ;)


Koliko vidim, FFTW (na kome je Phoronix bench. pokazao dobitke) ima rucno napisane AVX-512 kernele tako da mislim da gcc vs. icc nece tu napraviti neku razliku.

Za TSCP je verovatno kompajler nesto izbunario tako da icc mozda donese jos performansi.
[ nkrgovic @ 30.11.2017. 10:37 ] @
@Bane: A sto, umesto da spucas brdo para odma, ne uzmes na par sati neku cloud masinu i probas? Imas sad m5.large na amazonu, dobijes Xeon Platinum core-ove sa AXV-512, mislim da pocinju oko 80$ mesecno, ali placas na sat. Ugasis kad ne koristis i za 4 sata dnevno platis, mesecno, nekih 15-tak USD....
[ Branimir Maksimovic @ 30.11.2017. 10:37 ] @
Ivan:"Mislim da je pitanje da li za konkretan zadatak na kome odlicno uposljavas AVX-512 ne bi mogao jos solidno da profitiras seleci ga na GPU."

Pa ne znam, mislim da i dalje 64-bitne operacije nisu brze na GPU. Tu vidim neki benefit. AVX512 je prvo zaziveo na Xeon Phi-ju koji je zapravo obican pentium kec sa mnogo jezgara. To se sad ugradjuje u super kompjutere.
Nisam nesto radio sa GPU, nisam imao prilike ali mislim da 'general purpose CPU' tu mozda i nesto znaci ;)

Nikola: "@Bane: A sto, umesto da spucas brdo para odma, ne uzmes na par sati neku cloud masinu i probas?"

Pa ne znam sta stavljaju tamo, to je ipak virtualka, a da je brdo para jeste i to za neki ne bash najbolji CPU ;)
Al nista drugo me ne bi navuklo da kupujem pa eto ;)


[Ovu poruku je menjao Branimir Maksimovic dana 30.11.2017. u 11:48 GMT+1]
[ Ivan Dimkovic @ 30.11.2017. 12:15 ] @
Mislim da ti virtualka radi posao za eksperimentisanje da utvrdis koliko ti AVX-512 nudi poboljsanja u odnosu na referencu tipa AVX(2) ili cak "obcan" legacy x86 kod sa SSE-om.

Jedino gde bi ti cloud virtualka kvarila posao je ako ti softver bas zavisi od NUMA topologije (performanse ti padaju drasticno ako moras da pristupas podacima na "dalekoj" memoriji) ili ti treba bas svaki promil performansi, ali mislim u tom slucaju isto vidi da li ti se mozda isplati vise za eksperimentaciju unajmiti "bare metal" server dok ne utvrdis sta ti najbolje radi posao.

Sto se GPU-a tice, pitanje je sta tacno radis za sta bi koristio AVX-512? GPU-ovi danas mnogo bolje trce cak i neoptimalan kod nego pre nekoliko godina pa nije lose da i to probas ako ima smisla (tj. hotspotova koji su povoljni za masivnu paralelizaciju).
[ Branimir Maksimovic @ 30.11.2017. 12:46 ] @
Nema veze, sad sam bas pogledao po gradu, cene memorije su postale besmislene, tako da necu kupovati dok se to ne unormali. Sto se tice avx 512, nemam potrebe za time jos, ovo je bila cista znatizelja da vidim kolko mogu da izvucem iz toga.
[ Zlatni_bg @ 30.11.2017. 16:53 ] @
Coffee lake ima offset podesavanje u BIOSu za AVX. Cim pokrenes softver s tim funkcijama, ode clock unazad :)

A memoriju nece unormaliti narednih 2 god sigurno. I ja sam isto u problemu, razmisljam dal da kesiram RAM ili ne.
[ Branimir Maksimovic @ 30.11.2017. 19:53 ] @
Nisam mislio na Coffee, on nema avx 512, ,u pitanju je ovaj Skylake-X. Da, imaju AVXoffset, da se ne bi przili na 90+ pod vodenim hladjenjem ;p

Sto se cena tice, bas ovog meseca je skocilo sa ~40-45k dinara na ~55-60k za 32GB rama quad channela kitova, a meni je ambicija 64GB;)
E sad uzeti neki spor, a a bi vozio avx 512 je besmisleno. Ispod ~3200Mhz se ni ne isplati uzimati, bar po meni.
Mislim da ne moze to dugo da se odrzi ovo je neki bubble koji ce potrajati ne duze od nekoliko meseci mislim. Prodavac mi je rekao da je
u zadnjih 2 meseca pocela nestasica RAM-a i da od tad cene stalno skacu ;)
[ Zlatni_bg @ 01.12.2017. 00:35 ] @
3200MHz je vrh, i svi testovi, i sinteticki i realni su pokazali da brzi RAM ima OGROMNE razlike u odnosu na sporiji. na 3200MHz ta razlika postaje izrazena, drasticno raste do 3886, posle vec krece neisplativost. Ja isto snajpujem neki 3200MHz kit od 16GB i to mi je zao da kesiram. Secam se pre 15-16 god kad sam imao Pentium 1 i 32MB RAMa, bilo je valjda ili 1DM = 1MB ili 1EUR = 1MB, sad kamo srece da nadjes 1GB za 10EUR (ne pricam o 2400MHz memorijama). Ja ciljam CL14 3200Mz i koliko vidim nestali su, svi su CL16. A CL14 bi mi znacio zbog overkloka jer opet ne planiram da ga drzim na stock frekvenciji, jurio bih samsung cipove i nabio 3400MHz bar ili eventualno 3600 sa CL15/CL16.

Ali eto... lepo se isplanira budzet za 8700K + Hero X plocu, i onda prvo nestasica kvalitetnog rama i cene kvalitetnog RAMa kod madjara u123bu celu pricu. Cela X299 struktura meni ne odgovara za ono sto radim. Al bilo kako bilo, u istom smo sosu, samo sto tebi jos treba verovatno quad channel. Bezobrazni su, znaju da svako ko uzima sistem 2014. na ovamo mora da uzme RAM i lupaju po usima sve koji rade apgrejd. Ne daj Boze da izadje DDR5 pre 2020.
[ Branimir Maksimovic @ 01.12.2017. 00:56 ] @
Mislim da je ovo neki globalni trend sa RAM-om verovatno zato sto masovno sad kupuju, pa trziste reaguje kako reaguje, sa cenama. Izlazak x299 je zasigurno uticao na cene RAM-a u globalu i nadam se da ce se to smiriti u narednih 6 meseci ;)
Jer sad su bas bas prenaduvane. Hteo sam da uzmem cisto iz znatizelje, ali kad vec ovo ispada silovanje sa cenama, sacekacu bolja vremena ;)
[ Zlatni_bg @ 01.12.2017. 02:05 ] @
Eh da je samo X299, tu ti je i ceo Ryzen... skuplja memorija nego procesori. Za onaj G Skill FlareX deru kozu s ledja koliko kosta, a nista drugo ne radi garantovano ni tih 3200MHz na Ryzenu. Cene RAMa su manje vise ovakve vec godinu-dve... "nestasica" satro a RAMa na sve strane, kao pogasene neke silne fabrike... sigurno. K'o u BGu, sve se nema, a guzva u saobracaju 24/7 ;)
[ Zoran Milovanovic @ 01.12.2017. 10:40 ] @
I cene SSDova su otisle na gore, kako sam nacuo, globalna potraznja za fles memorijama je upravo razlog za vecu cenu. Pre 5 godina, sam za 8GB RAMa davao tacno upola manje nego danas. :/

Zlatni, mozes li neke linkove da bacis za ovo "3200MHz je vrh, i svi testovi, i sinteticki i realni su pokazali da brzi RAM ima OGROMNE razlike u odnosu na sporiji."?

Sve sto sam citao/gledao razlike su 1-2-3max%
[ Branimir Maksimovic @ 01.12.2017. 11:19 ] @
Tamo gde su razlike 1-2-3% max, ne testiraju RAM uopste, nego pristup cache memoriji. Evo meni kad kloknem moj RAM sa 1600 na 2133 sekvencijalni pristup odmah skoci tacno za taj postotak. Naravno random access je druga prica, posto moram da dignem latencije, da bi radilo
na toj frekvenciji, pa mu onda dodje na isto ;)
[ Branimir Maksimovic @ 01.12.2017. 12:50 ] @
I jos nesto, bolje je uzeti 2133 sa CL 10 nego 3600 sa CL 17-18 ;) Performanse ovog sa CL10 su nesto bolje ;)

PS, a od pre nedelju dana RAM kosta kod nas 3x onoliko kolko je kostao 2012 ;)
Probao sam u tri radnje , zadnja mi je rekla nije vise ta cena nego je druga, programeri pogresili pa povukli stare cene ;)
Definitivno sam odustao, i pored najvece zelje...
[ Zoran Milovanovic @ 01.12.2017. 13:28 ] @
Sad se setih, 2012 je porez bio manji na racunarsku opremu. Tako da ima i zbog toga ove razlike :)
[ Branimir Maksimovic @ 02.12.2017. 02:23 ] @
Kako god, po mojoj proceni, standard namje opao u proseku za 50% od 2012 ;)
[ Zlatni_bg @ 02.12.2017. 16:35 ] @
https://www.techpowerup.com/re...erformance_Benchmark_Analysis/

https://www.techspot.com/article/1171-ddr4-4000-mhz-performance/

Ipak malo vise skejlinga ima na skajlejku, ali ovo je samo par testova koje sam sad iskopao. Nagledao sam se jos nekih, ako nadjem postovacu ovde. U igrama je najosetljivije, razlike idu i po 10-15% pa i jace, pogotovu za minimum frametimes.
[ Branimir Maksimovic @ 03.12.2017. 00:30 ] @
Nego, podigoh opet sa 1600 na 2133 za 2 takta, CAS sa 11 11 11 28 na 12 13 13 28 i gle WCG taskovi, konkretno 'microbiome immunity project', se izvrsavaju za oko 25% brze na istom kloku procesora!
WCG programi zestoko koriste AVX, takodje

[ Zlatni_bg @ 05.12.2017. 09:09 ] @
Ja gledam kako mi je za 25% podizanja performansi isplativije da uzmem EK full hladjenje za FX procesor nego nov DDR4 za Coffee lake :)

DDR4 jeste brz... ali poredimo cene PCIE SSDova koji imaju koji GB/s sa njima i 10x nizu cenu... Evo sad gledam domace radnje, DDR4 3200/3400MHz oko 30ak hiljada 16GB. Toliko me izadje Hero X ploca... Izgleda cemo morati da budemo zadovoljni sa ovim sto imamo narednih godinu-dve ili da nam padne par stotina jura s neba koje ne moramo da pravdamo za RAM.
[ Branimir Maksimovic @ 05.12.2017. 18:32 ] @
Ove cene RAM-a su od pre dve nedelje, to je bilo do 24k max. Sad su digli pred novu godinu ;)
Evo neki kumov lik pokusava da mi uvali 32GB 2400 DDR4 za 388 evra ;)
A taj se do pre dve nedelje cenio oko 36k dinara ;)
Ne moze ovo dugo da traje, racunam da ce cene splasnuti u prvoj polovini 2018.
U svakom slucaju kupovati sad kad su naduli rukavicu za samaranje je bleskasto ;0)
[ Zlatni_bg @ 06.12.2017. 03:51 ] @
Bleskasto kome se ne zuri... ja spremio pare al' za RAM vala ne dam. Prebacio sam se na gledanje EKWB stvari dok se cene ne smire :)
[ Ivan Dimkovic @ 21.06.2018. 08:40 ] @
Da malo ozivim temu,

Naleteh na interesantnu stvar vezanu za Skylake arhitekturu (@edit - izgleda problem kaci i Skylake, ne samo Skylake SP):

https://aloiskraus.wordpress.c...ntel-has-broken-existing-code/

Citat:

Why Skylake CPUs Are Sometimes 50% Slower – How Intel Has Broken Existing Code


TL;DR: Pause instrukcija na Skylake arhitekturi traje ~10x vise ciklusa!!!

Pause instrukcija se cesto koristi za tzv. "busy waiting" npr. u spinlock-ovima, gde nit koji se izvrsava ceka na nesto ali se ne zeli dati kontrola OS scheduler-u zbog latencije koja bi usledila ako bi scheduler suspendovao nit. Pause instrukcija daje nagovestaj procesoru da trenutna nit ne radi nista pametno osim cekanja, tako da procesor moze da optimizuje potrosnju energije i optimizuje izvrsavanje.

Idealno, takvi konstrukti ne bi uopste trebalo da se koriste u korisnickom kodu vec samo u kernelu i drajverima (a i tu bi trebalo da ih ima sto manje). Ovoj instrukciji je mesto samo tamo gde se vreme cekanja meri nanosekundama.

Naravno, praksa je daleko od idealnog, pa je svet pun loseg userland multithreading koda sa nitima koje koriste busy-wait zato sto programer nije umeo bolje.

Sta je ovde problem?

Problem je sto se neke implementacije oslanjaju na konkretno ponasanje pause instrukcije koja je do Skylake arhitekture trajala nekoliko ciklusa, dok je Skylake latencija drasticno porasla:

http://www.agner.org/optimize/instruction_tables.pdf

Citat:

Sandy Bridge 11
Ivy Bridege 10
Haswell 9
Broadwell 9
SkylakeX 141


(Los) kod koji se oslanja na pretpostavku da pause instrukcija traje ~10-tak ciklusa moze imati probleme na Skylake arhitekturi koji mogu biti drasticno losije performanse (50% u primeru) pa sve do izlazenja na videlo bagova koji su bili maskirani brzinom izvrsavanja u predhodnim generacijama procesora.

Naravno, optimalno resenje je eliminacija busy-wait konstrukata iz userspace koda i kernel kod koji je optimizovan za svaku platformu.

Na zalost, realnost je drugacija i verovatno ce biti puno ovakvih primera.

[Ovu poruku je menjao Ivan Dimkovic dana 21.06.2018. u 10:15 GMT+1]
[ Ivan Dimkovic @ 21.06.2018. 09:07 ] @
Ako vec ne moze da se izbegne backoff resenje je rucni tuning koda za Skylake arhitekturu. Tipican problem je backoff strategija gde je fiksiran broj izvrsenih pause instrukcija, taj broj je obicno izabran zato sto "radi dobro" na kakvom god kodu je testiran. Kada dodje do znacajne promene latencije taj kod vise nije optimalan.

Microsoft je resio problem u svom .NET kodu, ali samo u preview verziji 4.8-mice:

https://github.com/Microsoft/d...tnet-build-3621-changes.md#clr

Na zalost, ovakva resenja su samo "zakrpe" posto moze da se pojavi neka nova arhitektura sa drugacijim ponasanjem pause instrukcije.

Optimalno resenje je uopste ne oslanjati se na latenciju pause instrukcije (zapravo najoptimalnije resenje je uopste ne koristiti tu instrukciju). Intel nigde ne garantuje vreme izvrsavanja pause instrukcije niti konzistentnost izmedju arhitektura. Oslanjanje na ponasanje pause instrukcije je bukvalno trazenje nevolje.

Inace za one koji se pitaju zasto su spinlock-ovi i busy-waiting uopste losa ideja u korisnickom kodu, razlozi su sledeci:

a) OS scheduler u bilo kom momentu moze da suspenduje vas thread cime je busy-wait petlja potpuno obesmisljena: tada placate i trosak OS context switch-a (koji ste hteli da izbegnete), plus vreme izvrsavanja busy wait-a postaje poptuno nepredvidljivo

b) Za vreme dok radite busy wait OS je mogao da na CPU-u izvrsava kod od neke druge niti koja radi neki konkretan posao umesto nepotrebnog przenja CPU resursa
[ Branimir Maksimovic @ 21.06.2018. 18:08 ] @
pause instrukcija ima legitiman usage kod implementacije spin lockova ili cekanja na spin lock, a tu i nije nesto bitan taj 141 takt kad se vec ceka. Ova instrukcija bese spusta? u nizi C state pa se przenje procesora ne oseca toliko.
[ Ivan Dimkovic @ 21.06.2018. 20:21 ] @
Nesporno je da pause instrukcija ima legitimnu upotrebu u implementaciji spinlock-ova.

Problem je sto je neki ljudi zloupotrebljavaju i oslanjaju se na njenu latenciju koja nije fiksna iako u Intel dokumentaciji pise da latencija nije garantovana i moze biti i 0 ciklusa.

I onda dodje do promene u arhitekturi kao sto se desilo sa Skylake-om koja dovede do problema zato sto se kod oslanja na nedefinisanu funkcionalnost.

Citat:

Ova instrukcija bese spusta? u nizi C state pa se przenje procesora ne oseca toliko.


Nije problem przenje procesora vec vreme izvrsavanja koda zbog pogresnih pretpostavki. Odjednom tvoj "spinlock" (koji zapravo to nije) umesto 10 ns ceka 150 ns, naravno za sve to vreme zauzimajuci nepotrebne CPU cikluse.

Ukombinuj to sa podjednako pogresnim kodom koji ce silovati taj "spinlock" npr. prevelikim zauzecem deljenog resursa i kao konacan rezultat dobijas pad performansi od nekoliko puta, kao sto je opisano na linkovanom sajtu.

Sto je najgore u ovoj prici i Microsoft je deo "kluba" krivaca. Covek bi se nadao da sistemski programeri i arhitekte OS vendora znaju bolje.
[ Branimir Maksimovic @ 21.06.2018. 20:33 ] @
"Odjednom tvoj "spinlock" (koji zapravo to nije) umesto 10 ns ceka 150 ns,"

Pa u principu pozivas pause samo ako ne mozes dobiti lok,a to ionako traje vise od 150ns. U principu i ne moras da stavis pause , to se stavlja samo iz razloga da se procesor manje przi.

[ Ivan Dimkovic @ 21.06.2018. 21:20 ] @
Ima tu vise problema.

Prvi problem je koliko "vise" traje i sto pause >nije< instrukcija za cekanje.

Ako cekas neki znacajan % od vremena koliko traje context switch, spinlock je neoptimalan zato sto ce procesor biti zauzet cekanjem umesto da radi nesto drugo. OK, potrebna ti je odluka posle koliko iteracija da prestanes da spinujes. Ako si tu odluku bazirao na pretpostavci "pause = 10tak ciklusa" onda ona moze biti vrlo pogresna ako je pause zapravo 150 ciklusa :-)

Sledeci problem je uopste koristiti takav konstrukt u usperspace kodu... zato sto OS moze prekinuti izvrsavanje tvoje niti u sred petlje sa pause instrukcijom. Kod nema pojma o tome i nastavlja slepo da se vrti N puta sa pogresnom pretpostavkom da su proveli N * 10-tak ciklusa u cekanju.
[ Branimir Maksimovic @ 22.06.2018. 04:27 ] @
Gledaj CAS (lokovani cmpxchg) verujem uzima vise taktova nego prosta pauza tim pre sto mora da lokuje bus, invalidira cache i dira memoriju ;p
Kazem, nema smisla uopste ocekivati kolko pause uzima zato sto to koristis da bi procesor trosio manje vati, dakle totalno nebitno ;p
E sad dal ces koristiti spin lok u odredjenoj situaciji ili ne uopste ne ulazim u to.
[ Ivan Dimkovic @ 22.06.2018. 09:06 ] @
Mi se skroz slazemo, ali vidi sta su radili MSFT-ovci u problematicnim .NET rutinama - oni koriste, tj. zloupotrebljavaju, pause instrukciju u eksponencijalnoj backoff strategiji.

Takvog koda ima jos, neko primeti da pause instrukcija na njegovoj platformi pravi delay i onda strpa N pause instrukcija kao backoff za vruci "spinlock".

Onda Intel poveca latenciju 15x i backoff "delay" odjednom postane drasticno veci nego ranije - i, naravno, ako si pravio nekakav "tuning" koda na drugoj platformi, vrlo verovatno ce na Skylake-u trcati bedno.
[ Branimir Maksimovic @ 22.06.2018. 17:54 ] @
Mikrosoft je poznat po tome da pravi traljavi kod. U svakom slucaju ko god se oslanja na timing pause instrukcije je u problemu.