Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-05-23

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

All times shown according to UTC.

Time Nick Message
00:29 Erbureth mornfall: pro dnešek asi už poslední dávka patchů
06:18 Erbureth joined #divine
06:59 spito joined #divine
07:30 xstill mornfall: co mám rozbitý?
07:36 xstill ono by to mělo fungovat is 1B stavem klidně, jen ne efektivně
07:39 xstill spito: ty jsi si zase nenatáhl mainline než jsi poslal patche
07:39 xstill spito: vrátil jsi mi do NTree statistiky který jsem těsně před tím odstranil
07:41 xstill ještě k tomu jenom částečně
07:42 xstill aha tak to tak jen vypadá z patche ale v mainline je to v pořádku
07:53 xstill hm fakt je to rozbitý
07:57 xstill no jo ale špatnej je jen ten assert v podstatě ;-)
07:57 xstill ono ten stav má totiž 65B a řeže se na kousky po 32B, takže tam zbyde 1B Leaf
07:58 xstill a já jsem si z nějakého důvodu myslel,  že nejkratší leaf může mít 2B :-)
07:59 xstill přidám časem nějaký test na okrajové případy
08:03 xstill spito: nevidím žádné warningy v NTree ani pod gcc, cos tam viděl?
08:13 xstill mornfall: máš tam patch s popisem delším než opravou ;-)
08:22 xstill a já jdu na zkoušku
09:16 mornfall :D
09:47 spito left #divine
11:06 mornfall Až bude někdo pracovat na scheduleru pro benchmarky, tak by bylo asi hrozně dobrý pouštět všechno v cgroupách.
11:06 mornfall S přesnými limity.
11:08 xstill mornfall: no na tom asi budu pracovat já, ne?
11:09 mornfall Snad, nevím. :)
11:09 xstill proč nevíš, chceš to dělat ty?
11:09 mornfall Každopádně cpu, cpuset a memory.
11:10 mornfall Ne, ale naposled dělal na scheduleru spito a na frontendu ty, ne?
11:11 xstill to se uvidí jestli bude spito chtít, ale on by asi spíš měl dělat na dvouvrsvé architerkuže ne?
11:11 mornfall asi jo
11:11 xstill budu muset zjistit co jsou cgrupy
11:11 mornfall https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch01.html :-)
11:11 xstill a mě se ta idea scheduleru celkem líbí
11:13 xstill ale teď je přednější MPI, snad dneska...
11:13 mornfall jasně
11:13 xstill už mám po zkoušce
11:13 mornfall dopadla dobře?
11:14 xstill tak mám A, což jsem se divil ;-)
11:14 mornfall tak vidíš
11:38 xstill sakra dostali jsme do tracu bug na ten hang v gcc 4.8, ono je to i v RC
11:59 mornfall Hh, UTwente.
12:04 mornfall Hm. Přeložil jsem první dva soubory z libstdc++...
12:09 xstill co UTwente?
12:09 mornfall No ten bugreport.
12:09 xstill oni chtějí používat divine? ;-)
12:09 mornfall Freark van der Berg -- píše s Alfonsem :)
12:10 mornfall zdá se že stojí za SpinSem...
12:10 mornfall jinej paper na researchgate nemá
12:11 xstill hm, máš nějakou ideu proč to cyklí?
12:12 mornfall zatím ne
12:15 mornfall prvně budu muset sehnat gcc 4.8 :-)
12:16 xstill nix ho ještě nemá?
12:16 mornfall asi jo, ale můj laptop ne
12:17 xstill já už ho mám asi dva měsíce v archu
12:18 spito joined #divine
12:19 mornfall hm, v mainline fakt není
12:21 xstill to se teda NIX moc nesnaží
12:21 mornfall nesnaží co? :)
12:22 xstill no mít aktuální veze
12:22 mornfall no, otázka je jak moc je to rozbitý
12:23 mornfall expression tam na to ty 2 měsíce už je
12:23 mornfall jen se asi ani neinstancuje
12:24 mornfall v stdenv-updates je dokonce default
12:24 mornfall ale asi to nikdo nemá odvahu zmergovat :D
12:26 xstill co si to sakra gcc spomělo, že si bude stěžovat na multiline komentáře...
12:33 mornfall tady ty stdlib věci jsou složitý jak rádio
12:34 xstill co? libstdc++?
12:35 mornfall všechny :)
12:38 xstill složitější než divine? ;-)
12:41 xstill mornfall: mě se ty inity v algorithm/topology furt nelíbí, hrozí tam, že se některý věci budou muset nastavovat 2x (pernode a tak)
12:42 mornfall který inity?
12:42 mornfall jako becomeMaster/becomeSlave?
12:43 xstill jo no
12:43 mornfall no, je těžký udělat to hezky :-)
12:43 xstill i když ono to nebude potřeba tam do těch initů předávat znova asi
12:43 xstill a teda stejně je většinou this == self takže je to tam 2x
12:44 mornfall no, this == self je v podstatě nutný
12:44 mornfall (plusminus násobná dědičnost)
12:45 mornfall kde potřebuješ předávat this?
12:45 xstill takže je to v podstatě jen aby se nemuslo explicitně šablonovat?
12:45 xstill no AlgorithmUtils::init
12:45 xstill a becomeMaster
12:45 xstill berou this
12:46 mornfall Jo, věci v common.h v algorithms berou Self v metodách protože kdyby to byl parametr třídy, tak bude spousta věcí hrozně škaredá
12:47 mornfall Ale self musí být vždycky this castovaný na toho potomka.
12:47 xstill no ono kdyby se volalo init< This >() tak by to šlo taky.
12:48 xstill nebo ne?
12:48 mornfall Jistě.
12:48 mornfall To není rozdíl.
12:48 xstill to by byl stále static_cast?
12:48 mornfall J.
12:48 mornfall Taky tam můžeš dát static_assert self == static_cast< Self * >( this )
12:48 mornfall teda.
12:48 mornfall assert :-)
12:49 xstill Otázka potom je jestli je init< This >() není lepší.
12:49 mornfall Asi jo, ona nejspíš byla doba když This nebylo v algoritmech definovaný a muselo by se tam psát docela dlouhou věc.
12:50 xstill Bych to docela přepsal na init< This >().
12:50 mornfall Ok.
12:56 mornfall ./bits/stl_algo.h:5221:40: error: no member named 'rand' in namespace 'std'
12:56 mornfall dafuq :-)
12:59 mornfall nj, on using v C++98 funguje jinak než v C++11...
13:02 spito xstill: jak jsi získal 10 kreditů za bakalářku?
13:02 spito mě jiřík píše, že to neumí ovlivnit
13:02 xstill spito: no nastavil jsem to po zápisu ;-)
13:03 xstill teď už s tím něco zmůže jedině studijní asi
13:03 spito super
13:05 mornfall tak, to je stejný jako kdyby sis teďka chtěl zapsat předmět :)
13:09 xstill mornfall: ten void parallel( Self *self, void (Instance::*fun)(), wibble::sys::Thread * extra = 0, int offset = 0 ) se někdy volá i s těma axtra parametry (teda hlavně offset)?
13:10 xstill jde mi o to, že pokud tam ten offset má být tak nemůžu zavolat becomeSlave v konstruktoru...
13:10 mornfall no, parallel se v konstruktoru nevolá
13:11 mornfall hmm, to je zajímavý ale
13:12 mornfall offset je mpi.rank() * m_local.peers() žejo
13:13 xstill no ne, se nikdy nenastavuje.
13:14 mornfall parallel.h:460
13:14 xstill hm tak jo ten jsem přehlídl
13:14 xstill no takže je pro Local konstatní
13:15 mornfall jo
13:16 xstill pak ho z toho parallel volání vyhodím
13:16 mornfall ale ten offset ti dokáže říct topology
13:16 mornfall no počkej
13:16 xstill no je potřeba ho uložit do local
13:16 mornfall pro Local jako topology jo, ale pro Local jako třídu ne
13:17 xstill ?
13:17 mornfall Local< Instance > m_local;
13:17 mornfall v Mpi
13:17 xstill no jo a v rámci té instance m_local je to konstatní, ne?
13:17 mornfall jo to jo
13:18 mornfall ale není to konstantní 0
13:18 xstill to vím
13:18 xstill (teď už)
13:18 mornfall ok
14:00 xstill mornfall: Tak this->init< This >() se kompilátoru nelíbí, že prej tam má být this->template init< This >(), což teda moc nechápu proč najednou, když šablona to byla už před tím.
14:03 xstill (to druhé se zase nelíbí mě)
14:03 mornfall xstill: no, to je normální, to template tam je kvůli špičatým závorkám, ne proto že to je instanciace
14:03 xstill to je otrava
14:03 mornfall je :-)
14:04 mornfall jen kdyby to byla proměnná tak this->init < x > () je asi syntakticky validní expression s relačníma operátorama
14:05 mornfall zejména kdyby v těch závorkách něco bylo
14:05 xstill hmm to je taky fakt
14:07 xstill no jenže this->template init< This >() je fakt dost ošklivé, to byl ten this->init( this ) asi lepší...
14:07 mornfall :-)
14:07 xstill je to boj
14:08 mornfall je to trochu nevýherní :)
14:08 xstill jo no
14:25 xstill mornfall: už se k něčemu snad blížím, ale teď se půjdu na hravé odpoledne a dodělám to večer nebo zítra.
14:29 mornfall ok
15:02 spito mornfall: jak si můžu zjistit pozici nějakého bitfieldu?
15:03 spito resp. ty jsi tehdy něco vykódil
15:18 Erbureth joined #divine
15:28 mornfall spito: to nejde :)
15:29 mornfall spito: jde zjistit pozici člena
15:29 spito já na to taky koukám a začíná se mi to nelíbit
15:32 spito left #divine
15:34 spito joined #divine
16:05 spito mornfall: ono to asi nepůjde vymyslet nějak elegantně
16:06 mornfall no to je možný :)
16:06 spito ono to totiž nepůjde vymyslet ani škaredě
16:06 mornfall :D
16:06 mornfall jakto?
16:06 spito protože na CAS se hodí mít rozumnou délku struktury
16:06 spito a to extension jaksi nemá
16:06 mornfall jak nemá?
16:07 mornfall CASovat můžeš jeden bajt, nemůže to být menší než jeden bajt
16:07 spito ale ty nevíš kde to v tý struktuře je
16:07 spito nebo to můžeš vědět?
16:07 mornfall musíš :-)
16:07 mornfall otázka je co...
16:08 mornfall ta extension prostě musí nějak říct na kterej bajt/bit ten zámek přijde
16:08 mornfall jinak teda nepotřebuješ celej bit
16:08 mornfall na zamykání
16:08 spito kompilátor to sice ví, ale mrcha to neřekne
16:10 mornfall stačí ti jedna konkrétní třeba čtyřbajtová nebo osmbajtová hodnota o které víš že se tam jinak nemůže dostat
16:11 mornfall nebo teda to záleží -- pokud to chceš umět číst bez čekání na odemčení, tak potřebuješ ten bit
16:11 mornfall ale jinak to můžeš celý přepsat speciální hodnotou a odemčít to tím že tam dáš nějakou novou
16:13 mornfall taky to můžeš vyřešit tím, že naimplementuješ atomic bitfield :-)
16:13 mornfall (rádoby)
16:14 mornfall nebo místo zamykání používat restarty
16:14 spito teď jsem to nějak nepobral
16:15 mornfall to nic, zamýšlej se dál :-)
16:20 spito pokud je bitfield délky 1 na prvním místě ve struktuře, asi nebude vždycky na nejnižším bitu, že?
16:22 mornfall ne
16:22 spito bitfield může mít proházená políčka mezi sebou?
16:23 mornfall já myslim že záleží jestli to je big nebo little endian
16:24 mornfall a jak širokej je ten bitfield jako celek
16:24 mornfall ale ono by fakt mohlo být lepší ty bitfieldy zrušit a vyrobit nějakou alternativu
16:24 spito he, ale to bys pak neušetřil paměť, ne?
16:24 mornfall která se schová za shifty, andy a ory
16:27 spito takže přepsat Extension, přistupovat k políčkám přes metody a shiftování si řešit sám?
16:28 mornfall no, spíš jsem si představoval že napíšeš nějakej bitovej tuple :)
16:29 mornfall když to budeš ručně maskovat, nasekáš tam spoustu bugů
16:30 spito není tuple řešený pomocí dědění?
16:31 mornfall nemluvim o std::tuple
16:31 spito protože pokud dědíš, tak jenom po celých bajtech
16:31 mornfall tuple = uspořádaná ntice
16:31 mornfall hej, já nejsu úplně blbej...
16:31 spito ale to vím
16:32 spito jenom netuším, jak by to mohlo jít
16:35 mornfall no, nějak podobně jako toolkit/lens.h
16:35 mornfall v podstatě to stejný, jen s adresama v bitech
16:36 mornfall a nepotřebuješ pole, fakt stačí ten tuple
16:37 mornfall (podívej se do lens.test.h jak se to zhruba používá -- jen s bitovou adresací bys potřeboval settery, který lens nemá)
16:38 mornfall v podstatě by ty struct IntA mohli mít nested static const int "bitwidth" nebo tak něco
16:38 mornfall a pak by se to používalo úplně stejně, jen teda krom get by to mělo aj set
16:38 mornfall a v set bys mohl kontrolovat že se to do těch přidělených bitů fakt vejde
16:39 spito koukám na to
16:40 mornfall a já dojel na to, že nemáme math.h ...
16:49 spito v llvm?
16:49 mornfall no, v pdclib
16:52 spito no, to lens vypadá hezky, ale tam je všude využitá dědičnost
16:54 mornfall ...
16:55 spito :)
16:55 mornfall tys to asi nepochopil :)
16:55 mornfall přečti si to ještě jednou...
16:55 mornfall a zamysli se nad tím, co znamená když dědíš od třídy která nemá žádný data
16:56 spito jo, proto ten smajlík
16:56 spito no, ale shiftovat budu stejně jak šílenej
16:56 mornfall stejně tu poznámku o dědičnosti nechápu...
16:56 mornfall smajlík tomu moc nepomohl
16:57 mornfall shiftovat sice budeš, ale jen na jednom místě
16:58 xbarnat joined #divine
17:35 Erbureth|2 joined #divine
17:51 Erbureth mornfall: hlavičkový soubor s gregoriánským kalendářem není zrovna šťastně pojmenovaný :]
18:07 mornfall pff
18:07 mornfall za to já nemůžu :-)
18:10 Erbureth nj :)
18:11 mornfall ale potřebuju implementaci libm...
18:11 mornfall asi ukradnu z newlibu nebo co
18:12 Erbureth btw, divine v release buildu se mi na služebním noťasu kompiluje rychleji než debug build na tom mojem starém dyčku
18:12 mornfall to asi není úplně překvapivé?
18:13 Erbureth release build býval tak 3x náročnější na čas...
18:14 mornfall no, on asi furt je, ale máš 3x rychlejší počítač (nebo i víc)
18:15 Erbureth ivy bridge i5 vs. C2D
18:15 mornfall tak 2x rychlejší je to určitě, jestli 3x nevím... co ramka?
18:16 Erbureth 8 vs. 4
18:17 Erbureth jsem si ho donesl práce přávě kvůli performance testům
18:37 Erbureth mornfall: btw, díval ses na ten poslední patch?
18:37 Erbureth DVE: Process instances part 2
18:40 mornfall díval
18:40 mornfall jen mi to není úplně jasný
18:40 Erbureth reference na proces z pole procesů je statická
18:41 Erbureth jinak by to zhoršilo performance a zničilo POR
18:41 Erbureth a Fairness možná taky
18:41 mornfall no, mně spíš není jasné jak adresovat instance procesů
18:42 mornfall takhle to je takový dost ad-hoc
18:42 Erbureth templatename[pořadovéčíslo]
18:42 mornfall asi by se mi víc líbilo kdyby se adresovalo stejně jako se vytváří
18:43 mornfall to by sice znamenalo že můžeš mít max. jednu identickou kopii
18:43 mornfall ale v podstatě to ničemu nevadí
18:43 Erbureth ono je to ale v celku ošemetné
18:44 Erbureth kdybys tam chtěl mít více parametrů a z jednoho procesu volat druhý, tak bys při změně něčeho se docela dost nadřel
18:44 mornfall tzn. kdybych měl process a( int x, int y ) a instance a( 4, 2 ), a( 5, 7 ) tak je smysluplný je volat jako a( 4, 2 ).proměnná...
18:45 mornfall no, máme expression makra takže si ty instance můžeš pojmenovat když je potřeba
18:46 mornfall případně můžeš napsat expression a( x ) { proces( 4, x ) } :-)
18:47 Erbureth a co když mám dva procesy, které se potřebujou volat vzájemně?
18:47 mornfall příklad?
18:48 mornfall ono stejně musíš ty instance globálně vyrobit, takže je jich fixní výčet...
18:48 Erbureth budou tam forloop makra na to
18:49 mornfall jo, jenže pak dojde na to, že stejně nevíš jaký index má kterej proces
18:50 mornfall stejně jako bys mohl nevědět jaký má parametr
18:50 Erbureth index budeš moct spočítat
18:50 mornfall a parametr bys nemohl?
18:51 Erbureth pokud budeš chtít předat procesu i jiný proces...
18:52 mornfall hm, to povede na docela škaredý kód tak jako tak
18:53 Erbureth zatím mě žádný jednodušší způsob nenapadl
18:54 mornfall for ( i : 1 .. 10 ) process x( i, x[(i + 1) % 10] ) ; for ( i : 1 .. 10 ) process x( i + 10, x[10 + (i + 1) % 10] )
18:54 mornfall tohle je tak nějak z principu mrzuté
18:56 mornfall no, tak jako tak, je to dost nesystémový a určitě to chce vymyslet něco lepšího
18:57 Erbureth for ( i : 1 .. 10 ) process x( (i + 1) % 10 ) ; for ( i : 1 .. 10 ) process x( 10 + (i + 1) % 10 )
18:59 Erbureth index se momentálně přiřazuje automaticky
18:59 mornfall pokud chceš předávat procesy tak asi budeme fakt potřebovat rekurzi
18:59 Erbureth nechci právě
19:00 mornfall 20:51 ( Erbureth ) pokud budeš chtít předat procesu i jiný proces...
19:00 Erbureth dalším složitostem se momentálně chci vyhnout
19:00 mornfall cos myslel tímhle?
19:00 Erbureth no, potřebuješ nějak identifikovat proces, se kterým chceš komiunikovat
19:01 Erbureth s/miu/mu/
19:01 mornfall no, když máš těch procesů matici, tak je asi tisíckrat přehlednější zapisovat to jako x( 1, 3 ) ručně počítat indexy
19:01 mornfall a spolíhat na to, že pořadí indexace se nezmění
19:02 mornfall když změníš pořadí loopů který to instancujou tak se ti celej model kompletně rozsype
19:02 mornfall kdybys ručně počítal indexy
19:03 mornfall +než :-)
19:03 Erbureth matice by ti vyřešilo expression macro
19:03 mornfall nevyřešilo :)
19:04 mornfall furt bys měl tu informaci o tom jak se to indexuje zakódovanou jak ve struktuře loopu tak v tom makru
19:04 Erbureth holt se vracíme ke kořenům jazyka C :)
19:04 mornfall a kdyby ta matice byla sparse, tak z toho porodíš
19:05 mornfall hm?
19:05 Erbureth indexování vícerozměrných dynamicky alokovaných polí jako jeden velký kus paměti
19:07 mornfall meh ... s tímhle nesouhlasim
19:07 Erbureth a myslím, že u dvourozměrných polí, které se potřebujou odkazovat na sebe, porodíš ještě víc, protože tím, že změníš kanál, kterým proces komunikuje, změníš i definici toho procesu
19:07 mornfall je to prostě škaredý a hrozně rozbitný
19:08 mornfall ?
19:08 mornfall to je snad jedno ne?
19:08 Erbureth a vůbec, vždyť řešení je jednoduché
19:08 Erbureth process a(params)[index];
19:09 mornfall to je jako vytvoření instance?
19:09 Erbureth jo
19:10 mornfall to není úplně řešení
19:10 mornfall jen tím je ten problem vidět od začátku
19:11 mornfall resp. jestli umožníš nespojitý indexy, tak tím něco málo vyřešíš
19:11 Erbureth jj, nespojité, ale unikátní
19:12 mornfall ale jinak jednoduchý věci jako dva komunikační ringy, jeden po sloupcích a jeden po řádcích bude stejně obsahovat spoustu škaredý matematiky
19:12 mornfall o nějakých hyperkostkách ani nemluvě
19:12 Erbureth process a(params)[index][index]...;
19:12 mornfall (a torusy, hyperkostky a podobně jsou docela oblíbené...)
19:13 mornfall no a nebylo by lepší některý parametry označit jako "key" nebo tak něco?
19:13 mornfall stejně je tam budeš muset předat v cca 95 % případů, aby ten proces znal vlastní adresu
19:13 mornfall takže to bude vypadat jako a(1, 2)[1][2]...
19:14 mornfall process a( key int a, key int b, int qlen )
19:14 mornfall a( 1, 2 )
19:14 mornfall a( 1, 2 ).queue
19:14 Erbureth a[1, 2] raději
19:14 Erbureth () instancuje makro
19:14 mornfall však jo :)
19:15 mornfall vždyť to je přesně to -- z hlediska jazyka
19:15 Erbureth to už ale nemá být instance, jen reference na vytvořenou instanci
19:15 Erbureth zkusím to tam nějak zakomponovat, jen co se vrátím z billy
19:15 mornfall to je implementační detail ale
19:16 mornfall jazyk nemusí explicitně rozlišovat deklaraci instance a použití instance
19:16 Erbureth to je pravda
19:17 mornfall alternativa by byla a( 1, 2, ? ).queue s tím že by byla chyba kdyby existovalo víc než jedna taková instance
19:17 Erbureth pushni mi to zatím, prosím, trochu to předělám, ale esence zůstává
19:17 mornfall případně implicitně doplnit otazníkama z prava
19:20 mornfall A já si pustim MASH.
19:20 Erbureth thx, enjoy
20:51 spito left #divine

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