Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-11-19

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
02:47 _ilbot joined #divine
02:47 Topic for #divine is now DIVINE: A Parallel LTL Model Checker (http://divine.fi.muni.cz) | http://irclog.perlgeek.de/divine/
08:55 spito joined #divine
11:53 mornfall joined #divine
11:59 mornfall joined #divine
12:32 mornfall joined #divine
13:13 mornfall joined #divine
15:08 mornfall joined #divine
15:28 spito joined #divine
15:34 spito left #divine
15:36 mornfall joined #divine
15:40 spito joined #divine
15:42 mornfall joined #divine
16:14 mornfall http://pastebin.dqd.cz/OoOE/ kdyby to někoho zajímalo :D
16:15 mornfall otázka je jen jestli to je bug v clangu nebo v gcc
16:15 mornfall každopádně to mám asi opravený, čekám co řekne překladač...
16:16 spito int == uint32_t?
16:17 spito ale to je asi jedno
16:17 mornfall ani omylem
16:18 mornfall int je vždycky signed, uint*_t vždycky unsigned
16:19 mornfall otázka je jestli ten static cast může jít X -> unsigned -> signed ... clang říká že jo, gcc že ne
16:19 spito mornfall: na toto jsem narážel
16:19 mornfall a mám skoro pocit že by mohlo mít gcc pravdu :-)
16:19 spito jinak vím, že uint* je unsigned, to se neboj
16:21 mornfall no, ale signed a unsigned určitě není ten stejnej typ
17:26 spito left #divine
18:19 spito joined #divine
19:09 xstill spito: kolik máš z listu 2?
19:10 xstill já blbec pouze 4 ze 6
19:10 xstill z čiré nepozornosti zase
19:37 spito 5
19:37 spito a z listu 3 mám jenom 2 body
19:38 spito protože neumim číst
19:38 spito důkaz, že regulární jazyky jsou všechny parsovatelné LL(1) jsem ale měl správně
19:39 spito jo a už jsem jiříkovi odevzdal 7. úkol
19:40 xstill hm, já to vlasntě nestihl s kontrolou, no nevadí
19:40 xstill ale začínám být docela ve skluzu
19:40 spito no, dnes to ještě stíháš
19:40 spito :)
19:40 xstill nestíhám
19:40 xstill a list 3 jsem ještě asi neviděl
19:40 spito já našel toto: __m128 (4 flouty za sebou)
19:41 spito a pak fce _mm_add_ps( __m128, __m128 ) sečte 2 4-prvkový vektory floutů
19:41 spito http://www.cs.uaf.edu/2010/fall/cs441/lecture/10_04_sse.html
19:42 spito jo a fci _mm_hadd_ps použít nemůžeš, protože je až součástí SSE3
19:43 xstill a to nemůžeme?
19:43 mornfall co to zase bastlíte?
19:43 xstill jinak dík
19:43 xstill nějakou vektorizaci pro Jiříka
19:43 mornfall s floatama?
19:44 spito mornfall: jaká jiná vektorizace je, než s floutama?
19:44 spito já nic jinýho, než co by pracovalo s floutama, nenašel
19:46 mornfall to nevim kde hledáš teda :-)
19:52 xstill podle wikipedie by mělo jít i celočíselné
19:53 spito nojo, taky už na to koukám
19:54 spito jenom že všude povídají jenom o floutech
20:05 xbarnat joined #divine
20:06 xbarnat nazdar, tak ja mam porad bad op
20:06 mornfall neštvi
20:06 mornfall kde zas?
20:07 xbarnat aha, a to proto, ze jsem to jeste cele nezkompiloval ... tak nic ...
20:07 xbarnat to chce klid a nohy v teple ..
20:07 mornfall to teda, trvá to dobrou půlhodinu
20:08 xbarnat hele neslo by nejak umravnit ty warningy pri volani divine compile -l ?
20:08 spito :D
20:08 xbarnat je to slusne receno nehezke
20:08 mornfall určitě šlo, patches welcome :D
20:09 mornfall hele jak jste na tom s karmou na stackoverflow? :)
20:10 xbarnat karma mi nehori, topime teplem vyzarenym z monitoru, obrazovek a CPUcek
20:10 mornfall reputací :-P
20:13 xstill já jsem dost neaktivní
20:14 mornfall já tam postnul to s těma castama, ale ten výsledek je fakt trapnej :-) http://stackoverflow.com/questions/20077027/static-cast-and-explicit-conversion-operators
20:18 Erbureth M.M. je Martin Mačo?
20:18 mornfall to nevim, ale když to teď říkáš trochu to tak vypadá :D
20:21 spito no, nejsou moc přítulní
20:22 spito spíš mají pocit, že asi neumíš programovat v C++
20:22 mornfall přítulní? hlavně jsou blbí
20:23 mornfall resp. MM je blbej jak tágo :D
20:26 mornfall xbarnat: tak co, přeloženo?
20:28 Erbureth mornfall: standard píše, že `static_cast` je expclicit conversion
20:29 xstill tak to jistě, tam spíš jde o to jak dlouhý může být conversion-chain
20:30 mornfall Erbureth: to vím taky :-)
20:30 mornfall co říká xstill
20:30 mornfall ale Hinnant tvrdí že clang head hází error tak tomu snad věřím
20:31 Erbureth mornfall: aha
20:31 mornfall přecijen dělal na standardu a tak
20:32 Erbureth mornfall: pmsn abys mohl castovat na int, tak se to nejdřív musí implicitně převést na ten uint_32
20:33 Erbureth X -impl-> uint32_t -expl-> int
20:33 mornfall X -impl-> uint32_t se stát fakt nemůže
20:34 Erbureth a proto chyba :)
20:34 mornfall jediná cesta jak z X dostat uint32_t je ten explicit operátor
20:34 mornfall ...!
20:35 mornfall ale tak ten clang to očividně dokázal udělat jako X -expl->uint32_t -impl-> int, žejo :)
20:35 Erbureth anebo to byl jenom bug
20:35 mornfall otázka byla jestli to je nebo není bug a proč
20:46 xstill hm, když to sčítám do floatu tak mi průměr konverguje k nule :-D
20:47 mornfall surprise :D
20:47 spito mornfall: nevíš, jestli existuje něco jako _mm_load_ps pro vektory  něčeho jinýho, než floatů?
20:48 spito nebo aspoň jak se dá přetypovat ukazatel na short na intrinsic GCCéčka
20:50 xstill mornfall: no právě že pro mě docela jo, asi teda nechápu jak ten float reálně funguje...
20:51 mornfall hej já do toho zadání nacpal nehorázně moc hintů :-P
20:52 mornfall xstill: double je limitovanej velikostí mantisy
20:53 xstill hm, aha teď mi došlo, že k tomu přičítám dost malá čísla, takže to časem přestane mít efekt
20:53 mornfall bingo :)
20:57 mornfall můžeš to chápat tak že sčítání floatů není asociativní
21:00 xstill :-)
21:00 xstill svině
21:00 mornfall na tom je nejlepší že na první pohled si řekneš jak to není triviální
21:03 mornfall koukám že autovektorizace je furt stejně na prd jako kdysi :D
21:32 xstill mě nefungovala vůbec
21:33 xstill (ne že by mě teď fungovala ta ruční)
21:36 xstill hm, ovšem ten scalar je moc rychlý
21:36 mornfall jak moc?
21:37 xstill tak, že vector je jen 2x rychlejší
21:37 xstill (což teda může taky zmamenat, že vector je pomalý)
21:37 mornfall dokud je rychlejší tak je to asi OK :-)
21:38 xstill asi 288ms scalar, 140ms vector
21:39 mornfall jo, "vzorovej" scalar tady běží ~650, vector ~130
21:39 xstill ješt2 je teda problém. že vetor dává dvojnásobné výsledky :-D
21:39 mornfall :-)))
21:39 xstill ty časy jsou u tebe?
21:39 mornfall j
21:39 spito xstill: a na čem běháš? mě scalar běhá cca 110ms
21:39 xstill to bych potom s 140ms na tom byl dobře
21:40 xstill u sebe
21:40 spito nymfe50
21:41 xstill hm, to je pouhé core 2 duo
21:41 xstill zajímavé
21:42 spito kecám...běhá o 10ms pomaleji
21:48 mornfall no, já to trochu zoptimalizoval a teď je scalar rychlejší než vector :P
21:49 mornfall resp. vyjde to na stejno, 140ms
21:49 spito tak teď mě vector předběhl scalar o těžkou 1ms
21:49 spito tedy 120 vs 121 ms
21:54 mornfall hm, on totiž autovektorizuje aj bez -msse2
21:56 mornfall když ručně vytáhneš akumulátor ven z cyklu tak to ten překladač dokáže vektorizovat
21:57 mornfall když si disassembluju scalar tak tam mám   40129e:       f2 0f 58 c1             addsd  %xmm1,%xmm0
21:58 mornfall s -fno-tree-vectorize je to 236ms vs 130ms
21:59 xstill jak vytáhneš akumuátor z cyklu?
21:59 mornfall no myslel jsem počítadlo hodnot
21:59 mornfall count += d.size() místo ++ count uvnitř cyklu
22:00 xstill aha jako počítadlo počtu položek
22:01 xstill hm, scalar 250 vs auto 250 vs 130 vector
22:01 xstill a scalar je s -fno-tree-vectorize
22:01 mornfall takže auto pobít nejde, a do zadání by se mělo dopsat -fno-tree-vectorize :-)
22:02 mornfall xbarnat: dáváš pozor? :-)
22:02 xstill (není možné že v x86-64 je sse2 vždycky? ta archytektura je dost nová)
22:02 mornfall bylo by hrozně hezký kdyby šlo nějak lidem vnutit aby na tohle všechno přišli
22:03 mornfall architektura*, nějaký sse tam určitě vždycky je
22:03 mornfall ale já to psal na 32b překladači asi ještě
22:04 xstill jsem už jednou slyšel že x64 vlastně má dost lepší optimalizace v "kompatibilním" režimu
22:04 xstill teda jako že x86 musí kvůli kompatibilitě málo optimalizovat
22:05 xstill (32b)
22:05 mornfall na tom něco je, i když většinou je default i686
22:05 mornfall a to už nedělá zas tak velkej rozdíl, asi
22:06 mornfall resp. -march=i686 a nějakej divokej -mtune
22:06 mornfall ale na i686 dostaneš leda tak klasický mmx
22:06 xstill a teda autovektorizace ti funguje?
22:07 mornfall funguje no
22:07 xstill mě totiž ne
22:08 mornfall dost záleží jak vypadá ten sčítací cyklus
22:08 xstill a nebo možná jo ale jen málo
22:09 xstill klasickej for ( int i = 0; i < size; ++i ) sum += data[ i ]
22:09 mornfall teď to vypadá zhruba 220 150 140
22:09 xstill u mě 270 240 140
22:09 mornfall ale muselo by se to trochu líp měřit, protože to dost fluktuuje
22:09 xstill mě taky
22:09 xstill podle mě je to moc krátkej test
22:10 mornfall podle toho co přesně chceš zjistit :-)
22:10 mornfall furt to je víc než 50% speedup
22:10 mornfall tohle zjištění ti na tenhle úkol úplně stačí
22:11 mornfall délka testu tě stejně nezachrání, to chce vytáhnout statistický metody
22:11 mornfall ala criterion
22:12 xstill zkus si do auto dát -mavx místo -msse2
22:13 xstill u mě to dělá větší rozdíl než -msse2 proti -fno-tree-vectorize
22:13 mornfall žádnej zásadní rozdíl
22:14 mornfall tak jako tak vždycky to je nějakej loop kolem addsd
22:14 xstill hm, jenže mě to lítá +-20ms a rozdíly mám cca 20ms to je pak těžký
22:14 xstill co je addsd?
22:15 mornfall vektorovej add, až na to že je floating point, tak mam možná blbej loop :D
22:16 mornfall samozřejmě to je všechno zainlinovaný až do mainu, to se pak blbě čte
22:21 xstill ach jo. vector mi lítá od 117 do 180ms
22:21 xstill pak má člověk něco vědět
22:21 xstill asi to odevzdám
22:22 xstill podle mě to nestojí za snahu ta vektorizace teda
22:22 mornfall to hrozně záleží co děláš
22:25 xstill hm, ovšem když to nenechám blít mezivýsledky do terminálu (grep done) tak to jede o dost rychlejš :-D
22:26 xstill 173 vs 150 vs 140 vs 70
22:26 xstill scalar/auto/avx/vector
22:26 xstill to je docela zásadní problém toho mainu ovšem
22:29 mornfall cool :-) jen ten výstup je fakt užitečnej... hm
22:29 mornfall asi to chce celý spustit 2x
22:29 mornfall nebo to psát do bufferu a vypsat najednou
22:30 mornfall jak to vleze do kernelu tak je zle, asi
22:30 xstill no pokud ten výstup zakomentuju tak to gcc velý vyhodí (a je výsledek 0ms)
22:30 xstill nebo nevím no
22:30 mornfall :D
22:35 spito left #divine
22:38 xstill hm a já zítra asi nevstanu (na 8)
22:39 mornfall no, já určitě ne

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary