Portál AbcLinuxu, 5. května 2025 18:38

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
20.8.2012 01:52 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Odpovědět | Sbalit | Link | Blokovat | Admin
Achjo, tyhle volatile prasarny fakt stoji za to. To makro ma fungovat presne obracene. Volatile ma byt default a pokud z nejake promenne nepotrebuju cist z vice vlaken tak si ji poznacim jako ne-volatile.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
20.8.2012 07:54 dumblob | skóre: 10 | blog: dumblog
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
+1
20.8.2012 08:07 Michal2
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Já jsem člověk, který ten kód musí psát, takže by mě SRALO kdybych v 99.99 (spíše ještě více) % pripadu musel předepisovat nonvolatile. Tudíž ti dávám -1
D.A.Tiger avatar 20.8.2012 08:23 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
+1
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
20.8.2012 09:05 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
A vy běžně v kódu běžně píšete třeba takové auto?
When your hammer is C++, everything begins to look like a thumb.
20.8.2012 12:26 Sten
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
auto označuje automatický typ, ne automatickou dedukci kompilátoru za pomoci binární křišťálové koule, jestli něco má být volatile nebo ne.
20.8.2012 16:02 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
S tím souhlasím, ale jak to souvisí s tématem vlákna?
When your hammer is C++, everything begins to look like a thumb.
20.8.2012 19:09 Sten
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
To, že nonvolatile by se muselo předepisovat i u všech prototypů funkcí a definicí struktur.
20.8.2012 20:03 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
No ono by hypotetické --std=little.owl bylo asi dost nekompatibilní s jakýmkoli jiným C, takže asi ne :)
When your hammer is C++, everything begins to look like a thumb.
little.owl avatar 20.8.2012 20:27 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
ono by hypotetické --std=little.owl bylo asi dost nekompatibilní s jakýmkoli jiným C
Ja se rad pobavim na svuj ucet, ale tady mi nejak nedochazi. Proc --std=little.owl ?
A former Red Hat freeloader.
20.8.2012 21:48 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
No už jenom změna typu proměnné na volatile a zavedení nového klíčového nonvolatile slova je přeci na nový standard ;-) A jiné jméno, než --std=little.owl mě prostě nenapadlo. Nic ve zlém.
When your hammer is C++, everything begins to look like a thumb.
little.owl avatar 20.8.2012 21:51 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Spojovat muj nick s takovou, od zacatku, peachovinou me temer urazi! ;-)

A former Red Hat freeloader.
20.8.2012 13:53 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Jasne. 99.99% promennych sdilenych mezi vlakny nepotrebuji byt volatile. To je fakt dobry blabol.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
20.8.2012 19:55 tom
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
* Zjevne jste nepochopil, jak to Michal2 myslel.

* Promenne chranene mutexy/semafory/syscallem opravdu volatile byt nepotrebuji a takovych promennych je v userspace programech vetsina.
21.8.2012 10:48 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Ale na ty snad tohle makro (o kterem se tady bavime) pouzivat nebudu, ne?
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
20.8.2012 08:59 R
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Bud by si mal vsade volatile, alebo by bol vykon vies kde...
20.8.2012 13:48 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Ano protoze je mnohem lepsi mit v pripade chyby podivne chovani kodu a nahodne hodnoty v promennych nez mit v pripade chyby nizsi vykon :-/
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
20.8.2012 12:24 Sten
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Takže kód by vlastně vůbec neměl používat registry? (To je totiž význam volatile) Měl by taky za každou operací, která modifikuje paměť, provést memory barrier, aby se změna skutečně projevila na všech jádrech, protože jinak na to bude potřeba nějaká „další prasárna“? Tipuji, že jste nikdy nic takhle nízkoúrovňově nedělal, proto nemáte tušení, jak pomalá by taková aplikace byla.
20.8.2012 13:51 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Mam pocit ze neumis cist. Protoze to co pises se absolutne nevztahuje k tomu co jsem napsal ja. Cely vyznam toho makra je totiz v tom ze se volatile nepouziva a jenom tam kde je to potreba se pouzije tohle makro. Coz je prasarna.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
20.8.2012 16:03 Sten
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
To ale může způsobovat výkonostní problémy v zamčených místech, kde je vhodné, aby se zámek držel co nejkratší dobu.
21.8.2012 10:47 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
No a prave proto by to makro melo fungovat obracene. Kdyz mas vykonnostni problem (coz je vec, ktera se hleda mnohem lepe, nez vznik nahodne hodnoty) tak si tu promennou poznacis jako ne-volatile.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
20.8.2012 21:17 Kvakor
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Normální SMTP procesory memory barrier nepotřebují, mají speciální obvody, co zajíšťují koherenci cache a paměti mezi jádry (tj. tu "prasárnu" dělá hardware :-) ). Memory barrier je třeba až když se přistupuje k MMIO, ale jen pokud procesor neumí vypnou cachování jinak, např. u x86 jsou na to MTRR a u x86_64 atributy stránek.
20.8.2012 21:20 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Normální SMTP procesory
SMP nebo link! :-O
20.8.2012 23:05 Kvakor
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Jasně že tam mělo být SMP, tohle byla jen IT varianta freudovského přeřeknutí :-)
20.8.2012 23:21 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
A já se tak těšil na novou architekturu :-(.
21.8.2012 10:45 Sten
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Já se teda na SMTP procesory netěším. Toho spamu je už teď hodně :-)
little.owl avatar 20.8.2012 21:43 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Svet je pestrejsi a na jinych platformach to neplati, tohle jsou implementacne a platforme zavisle veci.
A former Red Hat freeloader.
20.8.2012 12:48 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
To mi prijde jako nesmysl, mnozstvi sdilenych promennych by melo byt co nejmensi, aby v tom byl poradek. S tvou logikou by se dalo tvrdit, ze vsechny promenne by mely byt z podstaty globalni a kdyz ji chci lokalni, tak si ji tak mam deklarovat.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
20.8.2012 13:52 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Co ma pocet sdilenych promennych spolecneho s tim ze ty ktere jsou sdilene maji byt volatile?
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
20.8.2012 16:30 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
ze ve slusnem kodu mas male mnozstvi sdilenych promennych (nejlepe) na jednom miste a mas je oznacene jako volatile a ostatni promenne to nepotrebuji, ergo implicitni volatile je nesmysl.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
21.8.2012 10:46 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Ale o nesdilenych promennych se tady vubec nevime. Bavime se tady o tomhle makru, ktere umoznuje mit sdilene promenne implicitne ne-volatile.
Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
20.8.2012 13:07 pc2005
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Všechny proměnný ne, ale všechny proměnný definující zámky ano. Zajímalo by mě kolik se na tom ACCESS_ONCE ušetří času.

P.S. Nejvtipnější pak je, když se přetypovává proměnná, která už volatile je :-D. Např. tady.
little.owl avatar 20.8.2012 13:15 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Tam nejde o usporu casu, ale o to, ze promenna muze byt asynnchronne zmenena z jineho threadu a tudiz nektere predpoklady na zaklade nichz kompilator muze udelal optimalizaci proste neplati.
A former Red Hat freeloader.
20.8.2012 17:39 Ivan
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
JJ, tohle jsou ty nejnechutnejsi chyby. Takovy system muze bezet mesice a vsechno krasne funguje. A najednou se pri vetsi zatezi vyhrouti s nejakou obskurdni chybou. Lidi co umi tohle fixnout jsou fakt machri, vetsinou se ale takova chyba vyresi az kompletnim prepsanim kusu aplikace.
20.8.2012 18:49 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Jo a buď by měly být všechny takový proměnný, kde může zapisovat 2 a více vláken, definovaný jako volatile (pak je ACCESS_ONCE zbytečné a je to workaround špatně definovaného kódu) a nebo se ptám jak velký výkon získám variantou: nesdílené proměnné + zamykatelné proměnné + proměnná, kterou mám nadefinovanou jako neměnnou, ale občas ji použiju jako volatile.

(když se nějaká proměnná jmenuje "lock" tak bych čekal, že bude už jako volatilní definovaná a nebudu ji muset přetypovávat)

Taky by mě zajímalo zda je nějaké využití efektu, kde musí být proměnná v jednu chvíli aktuálně načtená a po zbytek programu už může zůstat v registru.
little.owl avatar 20.8.2012 20:22 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Jo a buď by měly být všechny takový proměnný, kde může zapisovat 2 a více vláken, definovaný jako volatile
Ani volatile vam moc nepomuze,to je jen hint pro kompilator aby to nezoptimalizoval, volatile nevklada memory barrier.
A former Red Hat freeloader.
20.8.2012 20:40 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Ovšem ACCESS_ONCE je volatile taky, nebo nějak paměťovou bariéru řeší? Jinak je to offtopic.

Samozřejmě v případě potřeby paměťové bariéry by se tam nějaká hodila.
little.owl avatar 20.8.2012 21:09 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
ACCESS_ONCE je volatile a to resi jen to ze vam kompilator neudela nejake nepredlozenosti pri optimalizaci. To zdali to budete moci bezpecne pouzit z vice vlaken, bude zalezet na implementaci kompilatoru a kontextu v jakem je kod pouzit - jedno jadro, pres stejne cache a podobne, cele je to implementacne zavisle.
A former Red Hat freeloader.
20.8.2012 21:15 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Mě jde o to, proč a zda je výhodnější přetypovat proměnnou někde v kódu a ne rovnou v definici.
little.owl avatar 20.8.2012 21:44 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Protoze to nemusi nestacit. Vy muzete napriklad k promenne pristupovat neprimo pres pointer jako k mistu v pameti a tam snadno kompilator dostanete do uzkych. Navic tohle reseni vam umozni toto chovani lokalizovat tam kde je to potreba.
A former Red Hat freeloader.
little.owl avatar 20.8.2012 21:44 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Ehm: Protoze to nemusi stacit.
A former Red Hat freeloader.
20.8.2012 22:21 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Aha, tedy vzhledem k tomu, že lze udělat volatile pointer i pointer na volatile i volatile pointer na volatile proměnnou a za předpokladu, že tohle kompilátor ustojí. Pokud ne, tak je dost slabej (což ale klidně může být).

Tedy některé programy používaj pointery, které občas ukazují na volatile proměnnou a občas na normální? To mě přijde ale dost hazardní.
21.8.2012 07:58 Sinuhet
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Ted byste mel jeste vysvetlit, jak vam pomuze, ze pri pristupovani k promenne z vice vlaken si ji oznacite jako volatile.
21.8.2012 17:59 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
[rejp] Kromě speciálních případů nebude potřeba používat žádné makro :-D [/rejp]
20.8.2012 09:03 Anonymous
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Odpovědět | Sbalit | Link | Blokovat | Admin
Náhodné generátory čísel, nebo generátory náhodných čísel?

P.S.: Děti věděly.
Luboš Doležel (Doli) avatar 20.8.2012 09:58 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Díky.
20.8.2012 12:17 Sten
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Náhodné generátory náhodných čísel :-D
20.8.2012 13:12 Marek
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Odpovědět | Sbalit | Link | Blokovat | Admin
…Concurrency není věcí vestavěnou přímo do jazyka C…
od dubna 2011 a C verze C11 to už umí. Je otázka jak to umějí kompilátory a jak se s tím popasují při kompilaci kernelu.
little.owl avatar 20.8.2012 16:10 little.owl | skóre: 22 | blog: Messy_Nest | Brighton/Praha
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Vzhledem k tomu, ze kernel se nedostal plne ani k C99, je mluveni o C11 v tomto kontextu z rise snu.
A former Red Hat freeloader.
20.8.2012 16:49 JoHnY2
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Souhlas. Na druhou stranu, nikdo nerika, ze jadro musi pouzivat zrovna uplne vsechno z C99 nebo C11. Pokud se dobre ohlidaj konflikty, tak neni problem pouzivat casti C11 relativne brzo.
21.8.2012 14:39 zulu
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Odpovědět | Sbalit | Link | Blokovat | Admin
Já bych teda od "access once" čekal právě to, že první for se má chovat jako ten druhý.
21.8.2012 18:00 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jaderné noviny – 2. 8. 2012: Jak se kompilátorům brání v optimalizacích
Jo mě to taky mate: Access once = načti jednou a pak recykluj hodnotu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.