Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-04-20

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

All times shown according to UTC.

Time Nick Message
07:14 spito joined #divine
07:18 spito m
07:18 spito safra...
07:19 spito mornfall: tak jsem nasel klienta, ktery neumi m<TAB>
07:29 spito joined #divine
07:29 mornfall heh
07:33 spito mornfall: nojo, mobilní klient
07:34 spito mornfall: jinak mám upravenou tabulku s testy a testy pro bitové operátory, mám to pushnout, nebo počkat, až to všechno opravím?
07:35 spito a pak vše naráz?
07:42 mornfall Co všechno opravíš?
07:42 mornfall Jestli to funguje tak to klidně pošli.
07:48 spito chtěl jsem opravit testy visitora
07:49 mornfall Jak chceš, on ti do toho teď asi nikdo nevleze. :)
08:02 spito he, tak jsem zprovoznil nativní mapování linuxího disku pod widlema
09:22 spito mornfall: jiank co se týká těch testů visitoru, tak například TerminableCheck cyklí v Parallel na pending connections
09:35 mornfall Zajímavé, a jak často cyklí?
09:39 spito neustále
09:40 spito resp ještě jsem neměl běh unit testu, aby to necyklilo
09:40 spito ale funkcionální testy projdou všechny
09:40 spito což je hodně divné
09:47 mornfall Hm. To je divný, protože mně se to nezacyklilo nikdy.
09:47 spito no, já to nechal běžet asi 2 minuty a pak jsem to zabil
09:48 spito protože dřív ty testy běžely rychle
10:00 xstill joined #divine
10:09 xstill spito: no ono by to ještě šlo zjednodušit, problém je že mi ten návrh trochu rozhodila NTree tabulka, jsem to neudělal dost obecný
10:09 spito hele a s tou kompresí - t máš několik variant?
10:09 spito *ty
10:09 xstill spito: a ten SharedStore jsem zrušil hlavně proto že pak bysme měli moc storů se skoro stejn ým kódem
10:10 xstill no TreeCompressed je stará verze ta půjde pryč brzo
10:10 xstill ona nefunguje paralelnÄ›
10:10 xstill a původní idea byla že těch kompresí vznikne víc, jako třeba huffman
10:11 xstill ale to je jaksi mimo možnosti BC práce už
10:16 spito jo tak....a nakonec v divine budou, nebo tam bude jenom na NTree kompresní tabulka?
10:17 xstill to záleží na Jiříkovi a Mornfallovi
10:18 xstill ale neměl by to být takový problém tam ještě něco dodělat
10:19 xstill nicméně s huffmanem je problém že on potřebuje "trénovací data" aby fungoval dobře
10:19 spito coto?
10:20 xstill huffmanovo kódování potřebuje znát pravděpodobnost výskytu bitových vzorků
10:20 spito no, tak jo :D
10:21 xstill no a to nejde odhadnout pro všechny modely dopředu
10:36 spito tak terminable chack mi už necyklí
10:36 spito *check
10:37 xstill spito: super, v čem byl problém?
10:38 spito nevím, asi mu chyběly metody a ty defaultní nebyly moc eňoňuno
10:38 spito teď to vypadá, že partitioned visitor nenastartuje ve vláknech, ale jenom v jednom
10:38 xstill to se mi nezdá
10:39 xstill v testech nebo normálně?
10:40 spito právě že v unit testech
10:40 spito funkcionální testy projdou všechny
10:42 xstill hmm je to podezřelé
10:43 spito tak parallel_blob si cyklí
10:45 spito a když se to pustí v cgdb, tak to vyassertí
10:45 xstill sakra
10:45 spito můžu poslat změny, který jsem udělal
10:46 xstill asi jo, měl bych si to opravit já když jsem to způsobil
10:48 spito maííííl
10:48 spito a splnil se ti sen, rostoucí tabulka už je na světě
10:48 spito ale musí se ozkoušet, protože si nejsem jistý vzorečkem na počet kolizí na žádku
10:50 spito resp. v testech to je hodně pomalé, ale testy jsou zase koncipovaný na to, aby to hodně rostlo, standardně budeš chtít, aby se ti cache-line nepřekrývaly
10:50 spito he? ono to ještě neodešlo
10:52 xstill já už mail vidím
10:55 spito mornfall: mrkni na to pls, došel ti mail
10:55 spito teď už by tam mělo být všechno, co jsi chtěl
11:01 mornfall :-))
11:01 mornfall Došlo.
11:04 spito a nemáš s tím nějaký morální problém (jako minule)?
11:04 spito všecko štymuje?
11:04 spito mě testy s tímto prochází
11:06 mornfall Jo, už se to sype do mainlinu.
11:06 mornfall Ty morální probléme. ;-)
11:10 spito mornfall: a měl jsi pravdu, měl jsem chybu v těch bitových funkcích
11:10 spito přesně off by one
11:11 mornfall :D
11:11 spito taky byla v patchi oprava
11:11 mornfall To jsem si snad ani nezasloužil. :-)
11:12 spito ale to byla chyba jenom v generické verzi, která se stejně nepoužívá
11:12 mornfall No, to by někdo hodně nadával kdyby na ni došlo.
11:12 spito :D
11:12 spito jako jasný
11:13 spito ale ona je i tak špatně napsaná - má velkou složitost
11:13 mornfall Vždycky můžeš do generický napsat assert_unreachable().
11:13 mornfall Místo kódu.
11:13 spito no, ale někdo ji někdy bude třeba chtít použít
11:13 mornfall :-)
11:15 spito mornfall: sharedhashset.h : 81
11:15 spito a 68
11:15 spito tam je cache-line walking
11:15 spito a nastavování mezí
11:15 spito jestli je tohle dobře z hlediska efektivity
11:16 spito getBorder říká, kolik maximálně může nastat kolizí na řádku tabulky
11:16 spito thresh je cacheline/sizeof(Cell)
11:17 mornfall Je to trochu divočina. :)
11:17 spito initialSize je log2(size)
11:19 mornfall Na to se ještě podívám pak.
11:19 spito no já to věděl, že budeš brblat :D
11:20 spito ale víš jak, ještě nemám takový skill, abych program viděl v cache-miss-ech
11:23 mornfall No, to nakonec stejně řekne jen profiler co tam máme blbě.
11:24 mornfall Pár věcí bych přejmenoval, ale to má čas.
11:27 mornfall Btw. existuje i možnost ty data přemigrovat v tom grow(), jen potřebuješ ještě jednu speciální hodnotu Cell (forward), která řekne že tady sice nic není, ale máš koukat dál.
11:27 spito já nepotřebuju nic migrovat
11:27 mornfall Pak bys mohl v tom vlákně co to narostla přesouvat data ze starý do nový, označovat je jako "forward" a když to dojede tak to zrušit.
11:28 mornfall No, kdyby se ti chtělo experimentovat, možná by celkový výsledek fachal rychlejc.
11:29 mornfall Jediný co by mohla být challenge je jak oznámit zbytku světa, že už tam nic není. :-)
11:33 spito to si myslim, že by byl fakt problém bez počítadel
11:34 mornfall No, potřebuješ na to atomickej pointer, to by nebyl problém, ale není jasný kdy tu paměť vrátit OS.
11:35 mornfall No, možná to problém bude.
11:35 mornfall Tak, food for thought.
11:36 mornfall Další možnost je udělat cikcak lookup chain. :-)
11:37 spito co?
11:38 mornfall Třeba 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, 5, ...
11:39 mornfall Vždycky když se zmenší číslo řádku tak udělat kvadratickej hop.
11:39 mornfall (A v každým řádku vždy koukat na jeden cacheline.)
11:41 spito nějak to asi nepobírám
11:42 mornfall Jakože bys koukal vždycky na souřadnice (1, h % s1) (2, h % s2) (1, (h + 1 + 1^2) % s1) (2, (h + 1 + 1^2) % s2) (3, (h + 1 + 1^2) % s3) (2, (h + 2 + 2^2) % s2) ...
11:42 mornfall Kde sN je velikost řádku N
11:42 mornfall h je hash
11:42 mornfall (x, y) je (řádek, sloupec)
11:43 spito myslíš, že by to bylo rychlejší?
11:44 mornfall To nedokážu odhadnout, a spočítat to bude dost bolet. Nejlepší je to zbenchmarkovat.
11:46 mornfall Když bude spookyhash, tak taky můžeš rozsekat hash na 4 kusy a používat to místo tý kvadratický funkce.
11:46 mornfall To by se mohlo chovat ještě o kus líp.
11:48 mornfall (Dáš tim teda limit na poslední řádek 2^32, ale to taky nemusí nutně vadit.)
11:48 spito nad tím by se dalo uvažovat, ale do bc bych to už asi necpal
11:49 mornfall Jo to asi ne. :) Můžeš to tam napsat jako future work.
11:49 spito jde o to, že jsi říkal, že je velký předpoklad, že naposledy vložené prvky se budou hledat jako první
11:50 spito a nevím, jestli tohle tvoje cikcak bude zohledňovat
11:50 mornfall No, tam to nevyhraješ tak jako tak.
11:50 mornfall Jak ta funkce vypadá je úplně jedno, z tohohle hlediska.
11:50 mornfall Vždycky to musíš proskákat všechno.
11:51 mornfall Čím kratší average collision chain, tim líp.
11:51 spito a je v divine spíš šance na nalezení prvku v tabulce, nebo to, že nam není?
11:51 mornfall Ten cikcak má teoretickou výhodu, že má rychlejc větší rozptyl.
11:51 mornfall No, srovnej si počet hran a počet stavů.
11:52 spito jo a předpoklad je, že tabulka je spíš široká než vysoká
11:52 mornfall JasnÄ›.
11:53 spito kdežto cikcak jde asi spíš do hlouky
11:53 spito ....co jsem pochopil
11:53 mornfall No, nejde.
11:53 mornfall Ty máš nějakou sekvenci pozic, (x, y) ...
11:54 mornfall To co tam je teď generuje (1, h) (1, h + f(1)) (1, h + f(2)) ... pro nějaké f
11:54 mornfall Pravděpodobnost kolize na (1, h) je 1 / s1, zhruba.
11:54 mornfall Na (1, h + f(1)) jakbysmet.
11:55 mornfall Ale pravděpodobnost kolize na (2, h) je 1 / s2, což je polovina.
11:55 mornfall Plusminus konstanty, a minus to, že se to mění podle loadu.
11:57 mornfall Intuitivně by teda mělo docházet k tomu, že cikcak bude mít kratší chainy při stejném loadu.
11:58 spito oka, tak jako myšlenka to je pěkný, až budu mít po bc, tak na to kouknu
11:59 spito teď bych ji měl spíš sepsat, páč samo se to neudělá, není to ženská :D
12:00 mornfall No, v tomhle spíš excelujou chlapi...
12:01 spito tak a sežral jsem nutelu
12:01 mornfall Super. :D
12:02 spito vzhledem k tomu, že jsem měl nechat min. půlku Zuzce, tak asi půjdu na nákup
12:02 mornfall To bych taky mohl, nemám ... skoro nic.
12:02 mornfall Vlastně tam je pomeranč.
12:02 mornfall Jdu ho sníst. ;-)
12:03 spito toho se člověk nenají
12:03 spito já to zkoušel jako malý
12:03 spito jedno sousto, ble a od té doby pomeranče e-e
12:04 spito In file included from sht.cpp:7:
12:04 spito ./atomic:14:15: error: namespaces can only be defined in global or namespace scope
12:04 spito namespace std {
12:04 spito co je tohle za chybu?
12:05 mornfall Nechybí ti někde konec struktury nebo fce?
12:06 spito no...ne
12:07 spito no lol
12:07 spito a jsem zase za tukana
12:07 spito jasně, že chyběl
12:11 mornfall to se stává aj v lepších rodinách
12:13 spito je možné, že něco zverifikuju přes partitioned visitora a má to cca 3000 stavů a pokud to jdu přes shared, tak to skončí na 21 stavech?
12:14 mornfall sounds like a bug
12:18 spito jo a statistiky jsou  pro shared visitora chybné
12:18 mornfall to by taky stálo za to spravit :-)
12:21 spito jo a u pomalých modelů to stojí na tom, že než se zaplní chunkq jednoho pracujícího, tak ostatní jenom čekají
12:22 spito tj u LLVM mi skoro pořád pracoval jenom jeden
12:22 mornfall Ten quickstart tomu nepomáhá?
12:22 spito ani moc ne
12:23 mornfall Zajímavé. :-)
12:23 spito jako jo, střídají se, ale ono to je rychle naplněný a protože je to pomalý, tak si práci spíš přehazují
12:24 mornfall To by mělo spíš záviset na délce aktivní fronty než na rychlosti ne?
12:25 spito no, myslím si, že to je zbytečně dlouhý ta maximální délka stavů
12:25 spito já to zkusím zmenšit na třeba 64 prvků ve frontě, co to udělá
12:28 spito hehe, při vygenerovaným celým st. prostoru jsou partitioned i shared stejný
12:28 spito a shared je asi 2x pomalejší
12:29 spito kvůli těm dlouhým frontám
12:29 mornfall Zajímavé.
12:34 spito to by se skoro mělo parametrizovat generátorem, jestli to bude rychlé, nebo pomalé
12:34 xstill_ joined #divine
12:34 xstill left #divine
12:34 spito xstill_: blbne irc?
12:35 xstill_ spito: nahodil jsem zpět znc, spadnul mi v noci NAS
12:35 xstill_ a teď koukám že máme doma IPv6 nebo co
12:35 spito co jsi to měřil, že byl shared rychlejší než partitioned visitor?
12:35 mornfall Možná proto spadnul. ;-)
12:36 mornfall spito: Zkus si CESMI.
12:36 xstill_ mornfall: možná ale on je za NASem tak nevím
12:36 mornfall (přelož si nějaký DVE)
12:36 xstill_ *NATem
12:36 spito to je rychlé?
12:36 mornfall ZatracenÄ›. :-)
12:37 mornfall Uplně nejrychlejší je teda --dummy.
12:38 mornfall Ale možná je na čase to vyhodit, přecijen to není zas tak užitečný.
12:38 mornfall Aby to stálo za ty instance.
12:38 spito a co to má dělat?
12:38 mornfall No, generovat stavovej prostor. Rychle.
12:39 mornfall V podstatÄ› nejrychlejc jak to jde.
12:41 mornfall Ale jinak teda CESMI je v podstatě nejrychlejší co v praxi potkáš.
12:42 spito mornfall: jsem si říkal, jestli by nešlo některé věci vyhodit z *.h a dát do .cpp, třeba story by totiž asi šly.....nad tím by se udělaly malé šablonové wrappery, které by pak pokrývaly všechny kombinace instancí
12:45 xstill_ mornfall: pošlu fix na Map a OWCTY s NTree a jdu se podívat na testy visitora.
12:46 xstill_ spito: ty na těch testech nic neděláš, že?
12:46 mornfall Fajn. :-)
12:46 spito ne, co jsem udělal, to šlo patchema do mainline
12:46 spito xstill_: tak si udělej pull
12:46 xstill_ spito: ok
12:46 xstill_ spito: už jsem udělal
12:47 mornfall Já se na chvíli vzdálim, ale vrátim se.
12:47 spito xstill_: jediný, co jsem udělal, tak je metoda transitionFilter a parallel_filter
12:47 xstill ok
12:48 spito xstill: sis změnil v průběhu přezdívku....dostal bych SEGV :D
12:48 xstill spito: znc si všimlo že je přezdívka volná a skočilo po ní
12:48 spito mornfall: tak pokud snížím velikost fronty na 64 prvků, tak shared předběhne partitioned
12:55 spito xstill: ten test sdílené tabulky v llvm je hustej, shared skončí po 21 stavech
12:55 spito partitioned jich potřebuje asi tak 1000
12:56 xstill spito: není to divné?
12:56 spito to mi mornfall říkal taky
12:56 spito ale ono to dá i správný protipříklad
12:56 spito a řekne kde to selhalo
12:56 spito a všechno
12:56 xstill možná je to těma frontama --> jiný pořadí procházení
12:57 xstill skus jestli metrics vrací stejný počet stavů
12:58 spito no, pokud příklad opravím, tak vrací stejný počet stavů i hran
12:58 spito tedy projde celý stavový prostor a nenajde assert
12:58 spito ...špatný assert
12:59 xstill no ale i na tom špatným by metrics měl vracet totéž
13:04 spito jo, v metrics to sedí
13:04 spito ale shared je pomalejší
13:04 spito a perla na závěr - je to debug mód :D
13:04 spito achjo
13:05 xstill spito: no ono to může být právě tím, že je to debug ne?
13:06 spito no, však už to kompiluju
13:07 spito btw: víš co je veselý? když jsem v práci řekl, že po státnicích tam končim, tak mi řekli, že OK, že jestli bych jim pomohl najít náhradního brigádníka a když ho budu 2 měsíce zaučovat, tak dostanu o polovinu víc, než když tam brigádničim :D
13:10 xstill spito: zajímavé
13:10 xstill jinak je divné že ty testy visitora lehnou ne v testu ale ve statistikách
13:11 spito no to proto, že si myslí, že thread.size()==1
13:12 xstill no jo
13:12 xstill kde se ty thready spouští?
13:12 mornfall A proč to neinstancujete s NoStatistics radši?
13:13 xstill mornfall: no to nevím
13:13 mornfall Předtim to taky bylo, co pamatuju.
13:13 spito mornfall: souhlas
13:13 spito jsem si nevšiml, že by se to změnilo
13:14 spito xstill: jo a možná zkus změnit jméno testovacího Hashera, nějak se generátoru testů nezamlouvá jeho jméno
13:14 xstill no asi je problém v tom, že se udělá typedef NoStatistics Statistics a ono to kompilátor nepocholí (jeak v Setup)
13:14 spito že by?
13:14 xstill spito: proč? jméno by mělo být jendo ne?
13:14 spito no, nadává....
13:15 xstill spito: kde?
13:15 spito no, nevim kde přesně, ale nadává
13:16 spito za mmt ti pošlu, co říká
13:16 spito [ 51%] Generating sha1.cpp.fake
13:16 spito [ 82%] Built target libdivine
13:16 spito [ 82%] Generating divine-test-generated-main.cpp
13:16 spito W: test found out of scope of a Test structure, ignoring
13:16 spito [ 83%] Generating divine-test-generated-_home_xweiser1_divine_divine_graph_visitor.cpp
13:17 xstill aha
13:17 spito tak mě napadlo, že to může být tím, jinou změnu jsem nepostřehl
13:17 xstill asi jo
13:18 xstill sakre nemůžu se zbavit těch statistik, nevím kudy tam lezou
13:19 spito mornfall: jak se dělá s tím --dummy?
13:19 mornfall spito: divine metrics --dummy
13:19 mornfall xstill: Problém je, že "Statistics" jsou in scope takže když je nepředefinuješ tak tam vlezou.
13:19 mornfall xstill: Chtělo by to přejmenovat.
13:20 mornfall TrackStatistics vs NoStatistics?
13:20 spito mornfall: a jde říct  tomu dummy, kolik toho má vyrobit?
13:20 mornfall Jako ty možnosti co dosadit za Statistics?
13:20 mornfall spito: Jo, vi divine/generator/dummy.h :-)
13:20 mornfall Teda, prostě zedituješ ten soubor.
13:20 spito mornfall: já myslel na příkazové řádce....tak nic
13:20 mornfall Nejde.
13:20 xstill mornfall: to by asi Å¡lo
13:21 mornfall Tak já du zase chvíli hrát. :-)
13:21 spito tyjo, se divím, že tu nejsou ostatní, tady se rodí tolik nápadů pro divine
13:21 xstill jen nechápu proč se ten dypedef tiše ignoruje
13:21 spito tak ten se neignoruje :P
13:28 spito kde se bere v generátoru alokátor?
13:29 spito v dummy.h je prostě z čista jasna alloc a nic kolem něho
13:29 xstill mornfall: proč je v Queue natvrdo Statistics?
13:30 spito xstill: hraje
13:30 xstill mornfall: aha to je asi chyba, který vznikla když jsem vyhodil parametr statistoics a dal tam Setup
13:31 xstill spito: testy visitoru prošly
13:31 spito xstill: bude se muset napsat statistika pro shared
13:32 spito protože neodpovídají velikosti tabulek, není žádné queue pro každýho a tak
13:34 xstill spito: oni velikosti odpovídají, jen se všichni tváří jako že ta tabulka je na každém workeru a tak nesedí součet
13:34 spito no právě
13:36 spito xstill: bude patch?
13:36 xstill spito: bude
13:38 xstill ale jen přejmenovávám strukturu Statistics na TrackStatistics
13:38 spito :D
13:39 xstill mornfall: jsi tu?
13:39 spito ale to je stejně C++ věc tohleto.....nefungují ti testy visitora, tak přejmenuješ cizí strukturu a ono to jede....(že tam jsou hluboko nějaký závislosti, to je šumák)
13:39 spito xstill: ne, hraje
13:39 spito psal to
13:39 spito před 20 minutami
13:41 xstill jeÅ¡tÄ› pÅ™i té příležitosti spravím 245         delete &Statistics::global(); // uh-oh
13:41 spito kde to je?
13:41 xstill divine.cpp
13:42 xstill tak nevím ono tam vlastně nejde dát shared_ptr když se vrací reference
13:43 spito jakto?
13:43 spito muselo by se to jenom přepsat
13:43 spito :D
13:43 xstill no tak jako pokud jde jen o to aby se to uvolnilo před konce programu tak by to šlo
13:43 xstill (on je to jaksi singleton)
13:43 spito no já vim
13:44 spito a destruktory by se ti měly volat samy
13:44 spito tzn přepsat na std::shaer a hotovo
13:44 xstill spito: nehodil by se tady vím unique_ptr?
13:44 spito no....
13:44 spito určitě
13:45 xstill hmm nevidím nic jako std::make_unique
13:45 spito neexistuje
13:45 spito nedali ho do standardu
13:45 xstill proč?
13:45 xstill ach jo
13:46 spito "nevím asi reflex"
13:46 spito citace z Asterixe
13:46 xstill :-D
13:46 spito on tam třeba není spinlock a tak
13:46 spito prostě už se to do standardu nevešlo
13:51 xstill zajímavé rozbil jsem kompilaci IDE ta sviňa má skara štěstí, že jsem jí nevipnul v konfiguraci
13:52 spito vYpnul
13:52 spito co je IDE?
13:52 spito to nebude editor....
13:52 spito budeme mít novou hashovací fci
13:53 xstill divineIDE (alias divine GUI)
13:53 xstill spito: no jde to s mou češtinou do háje
13:54 spito jo, v pohodÄ›
13:55 xstill co to je za bordel to GUI si teď vzpomělo že jsem přesunul interface blobů do poolu a nechce se skompilovat
13:56 xstill aha ono jsem to asi nikdy nenechával kompilovat :-D
13:56 xstill ==> má to zatím smůlu
13:56 spito _Z_kompilovat
13:57 spito jinak mě se nelíbí ta 3 v návalu
13:59 xstill spito: no mě právě taky ne, ale nevím co s ní
14:00 xstill spito: nějaký kontrétní problém?
14:00 xstill *konkrétní
14:02 spito tak nějak...nepochopil jsem , co se tam děje
14:04 xstill hups pad mi test visitor (jinde)
14:05 spito nelíbí se mi, že "    \item pro $v_{i}$: projdeme pÅ™es vÅ¡echna $v_j, j\in \langle 0, i )$ a
14:05 spito vyzkoušíme na které z nich je nejvýhodnější přejít, ostatní vesnice
14:05 spito v mezi $i,j$ dáme $B$"
14:07 xstill spito: no on se snaží vždycky zvolit najít další vesnici na kterou má pokračovat, problém je že tam tak nějak předpokládám, že pokud je něco optimální řešení pro kratší sekvenci a pak se k tomu něco předřadí, že se tím to řešení nezmění
14:08 xstill spito: nějak mě nenapadá jak to pěkně vyřešit
14:08 mornfall Zde.
14:08 xstill spito: myslel jsem že to mám ale pak jsem zjistil že to asi nedokážu (protože to asi neplatí)
14:09 xstill mornfall: opravil/přejmenoval jsem statistiky, ale testy furt padaj (pokud jedou na poolu)
14:09 spito xstill: myslím, že ti tak sice vznikne minimální cesta pro A, tak to nic neříká o cestě pro B....a může asi nastat varianta, že existue A' a B' takové, že A < A', ale A+B > A'+B'
14:09 xstill mornfall: máš tam patche na to přejemenování
14:10 mornfall (čtu backlog)
14:10 spito :D
14:10 spito to nemá cenu
14:10 spito mornfall: ztráta času
14:10 mornfall spito: mně se nelíbí* :-)
14:11 spito tss
14:11 spito hej ty to normálně cíleně vyhledáváš
14:11 spito mornfall: už jsi jak automatický Krob
14:13 spito xstill: asi bych tu 3 udělal tak, že si necháš vygenerovat všechny možnosti, jak poskládat vesnice za sebe, a z toho vybereš tu nejnižší hodnotu součtu...nešlo by to tak?
14:13 spito já takhle budu asi dělat tu 4.
14:14 xstill hmm pokud se pro každou vesnici budeš rozhovat zda patří do A nebo B máš 2^n možností, nebo jak jsi to myslel?
14:14 mornfall spito: Nevyhledávám, jen když už jsi opravoval Vláďu... tak mi to přišlo vhodný.
14:14 mornfall :-)
14:15 spito ale můžeš si něco zapamatovat....nebo ne?
14:16 xstill spito: no nevím, počkej
14:18 xstill spito: já mám problém s tímto: pokud máš podposloupnost a na ní optimální řešení, je toto řešení součástí optimálního řešení celé posloupnosti? Pokud tohle neplatí tak mi totiž asi nezbývá než si zapamatovat celé to rozdělení a těch je 2^n.
14:19 xstill mornfall: ty testy visitoru padají jen na poolech a bez nich neříká nic ani valgrind
14:19 xstill mornfall: ale s pooly řve
14:20 xstill mornfall: sakra už zase
14:20 mornfall Zachvíli na to mrknu.
14:20 xstill mornfall: nacpal jsem tam pooly a nechal více vláken v nich alokovat
14:20 spito mornfall: Za __ chvíli
14:20 spito :P
14:21 mornfall Jo, no.
14:21 mornfall To je klub tohleto.
14:21 spito (Grammar nazi fight)
14:25 mornfall xstill: (13/13) Visitor: ...../home/mornfall/dev/divine/mainline/divine/graph/visitor.test.h: 497: assertion `transitions == _transitions' failed; got [403] != [405] instead
14:25 mornfall xstill: Tohle?
14:26 spito který visitr to je?
14:26 spito *visitor
14:26 xstill mornfall: já mám jiné asserty, padá mi parellel_blob a partition_blob
14:27 xstill mornfall: a valgrind řve na poolech
14:27 mornfall Hm. Mně se to teď pro změnu zacyklilo.
14:27 mornfall (13/13) Visitor: ...../home/mornfall/dev/divine/mainline/divine/graph/visitor.test.h: 236: assertion `node( std::get< 1 >( next ), pool ) % this->peers() == this->id()' failed; got [3] != [1] instead
14:27 mornfall To ani nemůže fungovat. :D
14:27 mornfall Někde je rozbitý owner.
14:28 xstill mornfall: no ono to bude silně nedeterministický s tím rozbitým Poolem
14:28 mornfall Nebo, no.
14:28 mornfall Pokud si to válcuje paměť tak to nemůže fungovat už vůbec. :-)
14:28 xstill mornfall: a ten se rozbít asi docela musí pokud se z něj alokuje vícevláknově
14:28 mornfall To musí no.
14:28 mornfall Ale proč by se to mělo stát?
14:29 mornfall Hm. Proč je v NMTree reference na pool?
14:29 xstill mornfall: protože pool je v Check a ne v grafu, což je chyba
14:29 xstill mornfall: no právě to je špatně
14:29 mornfall 7: Tue Apr  2 17:12:30 CEST 2013  Vladimir Still <xstill@fi.muni.cz> * tests: Fix visitor.test.h.
14:29 xstill mornfall: tam musí být pool (teda očekávám že stále je generátor per thread)
14:29 mornfall ^^ tenhle patch to rozbil :-))
14:30 mornfall Jo, generátor je a vždy bude per thread.
14:30 xstill mornfall: jo rozbil, ale bylo to maskovaný jinýma
14:30 xstill mornfall: opravím
14:30 mornfall To co si chcou generátory sdílet můžou.
14:30 mornfall Super.
14:31 mornfall A já bych teď rád věděl proč mi alloca alokuje jen polovinu paměti...
14:40 spito já na chvilku mizim, jdu nakoupit a takový ty věci..... teda ne že byste mě potřebovali :D
14:42 mornfall Hm. Řekl bych že tohle nemohlo nikdy ani trochu fungovat. Wat.
14:42 xstill spito: zkus jestli tě ještě něco nenapadne do návalu
14:42 xstill mornfall: co?
14:42 mornfall alloca v llvm
14:46 xstill mornfall: ale vždyť llvm celkem funguje a alloca je dost běžná věc ne?
14:47 mornfall Je, no.
14:47 mornfall Ale fakt nefunguje. :-)
14:59 mornfall Třeba jsem to rozbil ještě nějak jinak.
15:08 xstill mornfall: jsi si jistý že ty testy vůbec můžou fungovat?! jako třeba ten std::set<...> seen do kterého se přidává ze všech vláken paraleně, totéž pro čítače
15:09 xstill (což přivádí otázku jakto že to do teď šlo)
15:11 xstill (chtělo by to testovat unit testy divinem :-D)
15:11 mornfall Proč by to tak mělo být?
15:12 mornfall ParallelCheck instance je per vlákno.
15:12 mornfall Nebo aspoň vždy byla. :-)
15:12 mornfall To je jak algoritmus.
15:12 mornfall Ten set co se tam podědí z Check je v každý instanci zvlášť.
15:12 xstill mornfall: aha, ale potom se neměl rozbít ani ten pool ne?
15:13 xstill to jsem asi opravoval chybu která tam nebyla
15:13 mornfall No, on by se nerozbil kdyby se používal ten v Check.
15:14 mornfall |     static void _parallel( int n, int m ) {
15:14 mornfall xstill@fi.muni.cz   #7 |         Pool p;
15:14 mornfall |         T< NMTree< N > > pv( std::make_pair( NMTree< N >( p, n, m ), n ), true );
15:14 xstill mornfall: aha jasně ještě tenhle
15:15 xstill mornfall: ale stejně teď je v grafu a je to pořád rozbitý
15:15 xstill (nedeterministicky)
15:15 mornfall To bude ještě něco jinýho pak.
15:16 mornfall Ale tohle bylo určitě taky blbě, takže teď by to mohlo padat jinak. :-))
15:16 xstill no hlavně teď to padá jen občas
15:17 xstill dají se nějak ručně spustit jen visitor testy?
15:17 xstill (všechny)
15:17 spito divine-test Visitor
15:17 xstill spito: díky
15:18 spito ale pozor, v gdb ti to je nanic
15:18 spito protože to forkuje
15:18 spito *na nic
15:18 spito pokud chceš debugovat, tak musíš jednotlivý
15:18 xstill spito: chci to pustit v cyklu
15:19 xstill rádo padá třeba toto: /home/xstill/DiVinE/mainline/divine/graph/visitor.test.h: 496: assertion `n == _nodes' failed; got [7] != [9] instead
15:19 xstill ale stále se zdá, že bez poolu to nepadá
15:21 xstill spito: napadlo tě ještě něco k tomu návalu?
15:25 xstill super když to zrovna nepadá tak to cyklí
15:42 mornfall Hm, to mám radost. Zase jsem jednou obrátil směr kopírování. :D
15:42 mornfall alloca funguje...
15:42 xstill mornfall: snad to nebylo memcpy?
15:43 mornfall Ne, kopíroval jsem místo z inicializátorů do pole přesně opačným směrem.
15:43 xstill aha, no mě se povedlo v implementaci NTree asi ve většině případů otočit memcpy
15:44 xstill to se potom člověk diví
15:44 mornfall Hm, a proč používáš memcpy? :)
15:44 xstill protože kopíruju data z blobu
15:44 mornfall Máme std::copy.
15:44 mornfall std::copy(from, from + size, to)
15:44 mornfall char * je normální iterátor ;-)
15:45 xstill mornfall: ha, je v tom rozdíl (kromě parametrů)?
15:45 mornfall Nevím, ale neplete se odkud kam.
15:45 xstill mornfall: jo
15:46 xstill mornfall: podle dokumentace copy typicky používá memcpy pokud pokud je objekt TriviallyCopyable
15:47 xstill mornfall: už fakt nevím co s těmi testy visitora
15:47 xstill asi jim budu vyhrožovat
15:47 mornfall :D
15:48 mornfall Já svou chybu s alloca našel. :-)
15:49 xstill je to divný
15:51 xstill mornfall: je nějaká šance že by ten unit divine zvládnout zverifikovat?
15:52 xstill (asi ne co je tam std::set)
15:52 mornfall Nevim. Záleží jestli dokážeš vyrobit bitcode z toho set-u.
15:54 mornfall Ale visitor.h toho do sebe táhne hrozně moc.
15:54 mornfall Takže to může dost bolet.
15:54 xstill dostal jsem asert v HashSet::grow
15:54 xstill to je fakt divný
15:54 mornfall No, jedna možnost je unpullnout ty grow patche. :-)
15:54 mornfall A zkusit to znovu.
15:54 mornfall Aha.
15:55 mornfall Tenhle grow.
15:55 xstill no právě
15:55 mornfall Někde si tančíš po paměti.
15:55 mornfall To je skoro jistý.
15:55 mornfall Nebo furt na něco hrabeš paralelně když nemáš.
15:56 mornfall Ale nevim proč by se to mohlo dít.
15:56 xstill asi jo ale nevím do čeho
16:00 xstill mornfall: dá se sehnat libstdc++ samostatně?
16:00 mornfall Jo, svn co http://gcc.gnu.org/svn/gcc/tags/gcc_4_7_3_release/libstdc++-v3/
16:01 xstill jo a kde jsou ta vygenerovaná cpp k testům?
16:02 mornfall (Včera jsem z toho vytahoval libsupc++, tzn ABI support.)
16:02 mornfall xstill: V _build
16:02 mornfall Ale ty asi stejně nechceš.
16:02 xstill proč?
16:02 mornfall No, uvidíš. :-)
16:02 xstill aha vidím
16:03 xstill jak se tohle sakra kompiluje?
16:03 mornfall Co přesně? :)
16:03 xstill ten test ale to je jedno můžu si main napsat i vlastní
16:04 mornfall Jo, to je asi nejjednodušší.
16:20 xstill tak asi nic: 'pthread_cancel' is unavailable: the function is currently unsupported by system-space (a podoblé věci jsou v .h k gcc)
16:21 mornfall To bys mohl obejít natvrdo, ale nevim jestli se dostaneš nějak moc daleko.
16:22 mornfall Já jdu nakoupit, od skromné snídaně jsem nejedl.
16:22 mornfall Teda ten pomeranč. :D
16:22 xstill no ono stejně aniž bych zkompiloval knihovnu divinem tak to asi nemá moc smysl
16:23 xstill mornfall: jo jo, uvidím jestli mě ještě něco napadne
18:19 mornfall Btw. až budete chtít testovat, tak elevator2 mi za poslední 2 hodiny nageneroval 875k stavů (debug mode).
18:34 spito mornfall: hele, to co jsi přidával v patchích, to není kompletní stl, že?
19:33 mornfall spito: Ani zdaleka. :-)
19:34 mornfall To je jen ABI support.
19:34 spito a to je co?
19:34 mornfall No, symboly na který generuje C++ odkazy samo od sebe.
19:35 spito eh? to jako ta část c++ knihovny, na kterou se odkazuje sám jazyk?
19:35 mornfall J.
19:38 mornfall Pomalu by to skoro chtělo opravdovej mailinglist.
19:38 mornfall Na kterej se dá subscribovat a kterej má archiv a tak.
19:39 mornfall xstill: Můžeš mi poslat ten patch co opravuje ty pooly? Že bych se na to zase chvíli díval já?
19:40 xstill mornfall: ale jo já to zarecorduju a pošlu ti to
19:40 mornfall Dík.
19:40 spito já se na to taky koukám, ale nic nevidim :/
19:40 mornfall To bude nějaká hrozná kravina, uvidíte.
19:41 spito tak můžeme rozjet sázky
19:41 spito reference
19:41 spito chybně napsaný ctor
19:42 mornfall 1.3M stavů a konec v nedohlednu...
19:42 mornfall Jdu to zabít. ;-)
19:43 mornfall No, nejdu, už to zabil OOM.
19:43 spito kde jsi to běhal?
19:43 spito na co to umřelo? málo paměti
19:43 mornfall Na svým notebooku. :-)
19:43 mornfall OOM = out of memory
19:43 spito tak že bychom zkusili anteu?
19:43 xstill mornfall: poslal jsem
19:44 mornfall Můžeš, je to mainline.
19:44 mornfall elevator2.bc
19:44 spito a najdu ho v examplech?
19:44 mornfall spito: Jj.
19:45 spito jinak llvm/constants.cpp : 40
19:45 xstill já jdu spát, tak zase zítra
19:45 spito assert porovnává (un)signed čísla
19:45 spito xstill: brouk
19:45 mornfall xstill: Už? :) Dobrou.
19:46 spito mornfall: ale je to samo jenom warning
19:46 xstill není mi moc dobře
19:46 spito damn...to bude ten stres před pondělní přednáškou
19:46 mornfall Hmh.
19:46 spito já to budu mít příští týden
19:46 spito :D
19:46 mornfall xstill: Tak se z toho vyspi. :-)
19:46 spito ale ne ze stresu, ale že jsem si to nepřečetl....už to vidim
19:51 spito mornfall: že máš zaplou kontrolu aliasingu, když v llvm to máš porušený?
19:52 mornfall Myslíš strict aliasing?
19:52 spito jop
19:52 mornfall Stává se i v lepších rodinách.
19:53 mornfall Můžeš to spravit. ;-)
19:53 spito počítám, že v llvm to tak je správně
19:53 mornfall Ne nutnÄ›.
19:57 mornfall Hm. Vláďa nebude nadšenej.
20:00 spito co? už jsi našel chybu?
20:00 mornfall Jo, viz divine@.
20:01 spito no ty vole......holt nemáme ještě tvůj skill
20:03 spito mornfall: ale ono to takhle dřív bylo
20:04 spito jakto, že se to rozbilo?
20:04 mornfall No, jenže předtim se to alokovalo na haldě.
20:05 mornfall A teď v poolu kterej žil jen tak dlouho jako první instance NMTree na kterou se zavolalo initial.
20:05 mornfall Ale protože to byl statickej inicializátor, tak ten pointer tam zůstal na věky.
20:05 mornfall (Nebo spíš navěky? :)
20:07 spito takže předtím tam byl memoryleak
20:07 spito a pak ukazatel na neexistující paměť
20:08 mornfall konstantní leak v unit testech je big deal :)
20:08 mornfall Ale jo, po ~Pool to zůstalo ukazovat do nikam.
20:09 spito jaktože mu tohle nevadí
20:09 spito *reinterpret_cast< uint32_t * >( this ) = x;
20:09 mornfall Podle toho čím se to jak přepisovalo to pak generovalo různý zhovadilosti.
20:10 mornfall spito: Komu?
20:10 spito ale tohle vadí
20:10 spito *reinterpret_cast< uint32_t * >( this ) = *reinterpret_cast< uint32_t * >( &x );
20:10 spito g++
20:11 mornfall Řekl bych, že to je bug v tom warningu.
20:12 spito že tohle porovnání je správně?
20:12 spito *přiřazení
20:12 mornfall No, ono asi není o nic správnější.
20:13 spito a union můžu použít?
20:13 mornfall Můžeš to prohnat char *.
20:13 mornfall char * může aliasovat cokoliv
20:14 mornfall V podstatě bys tam měl napsat std::copy na char *, nebo něco podobnýho.
20:14 mornfall Ono je to asi jedno, protože ta fce nic jinýho nedělá, tak se nemá co rozbít.
20:39 spito jak se dá zbavit hlášky, že do proměnné přiřazuješ, ale nečteš z ní?
20:39 mornfall Tak že tu proměnnou smažeš. :-)
20:39 mornfall Nebo static_cast< void >( x );
20:40 spito problém je, že se assertuje
20:40 mornfall Tak ten static_cast
20:42 spito to je pěkný, ale nepomohlo to
20:42 spito předtím jsem zkoušel ošklivé (void)r, ale to taky nepomohlo
20:44 mornfall Zajímavé.
20:44 mornfall To asi pomáhá jen když to nepoužiješ vůbec.
20:44 spito tak release build
20:44 spito když dávat tam ifndefy je fujky
20:44 mornfall Řekl bych že nasrat. :-))
20:47 spito já su krokos
20:48 mornfall Wieso?
20:48 spito fakt tukan
20:49 spito jsem to dával do špatného souboru
20:49 mornfall http://kamilpelka.com/wp-content/uploads/2008/10/tukan.jpg ?
20:49 spito jo, jsem tukan
20:49 spito (ale ne varan, to ne)
20:54 spito mornfall: kde seberu "#include ''new'"?
20:54 spito to by rádo elevator2.cpp
20:54 mornfall Asi v stdc++.
20:55 mornfall -isystem/nix/store/bsw34rzr26clnarkxzgnfqa2la9gx5fy-gcc-4.7.2/include/c++/4.7.2 -isystem/nix/store/bsw34rzr26clnarkxzgnfqa2la9gx5fy-gcc-4.7.2/include/c++/4.7.2/x86_64-unknown-linux-gnu/ snad
20:55 spito jo, koukám na to, ale že teď to tam nepřidalo samo? dřív to dělalo
20:56 mornfall Rozbitej clang. :-)
20:56 spito nojo, na antee je
21:09 spito mornfall: /home/xweiser1/divine/_build/wibble/wibble-test: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/xweiser1/divine/_build/wibble/wibble-test)
21:09 spito tohle dostanu na uaře
21:09 spito auře
21:10 spito kde může být problém? všechno ostatní mi funguje
21:10 mornfall Smaž a přelož znovu, asi to zůstalo přilinkovaný ke špatný libstdc++?
21:10 spito tohle byl čistý bild
21:10 spito build
21:11 mornfall A kde se bere /usr/lib64/libstdc++ vůbec?
21:11 spito a děje se mi to jenom s make unit a vyžaduje to wibble-test
21:11 mornfall aha.
21:11 mornfall aura
21:12 mornfall No, wibble-test máš z nějakýho důvodu přilinkovanej k novější libstdc++ než je v systému.
21:12 mornfall Nemáš třeba gcc modul a nenastavený LD_LIBRARY_PATH?
21:13 spito jak to poznám?
21:13 mornfall which g++
21:13 mornfall Resp. v CMakeCache.txt je napsaný čím to je přeložený.
21:13 mornfall Jo, no /packages/run.64/gcc-4.7.2/bin/g++
21:14 spito přesně
21:14 mornfall No, a libstdc++ používáš /usr/lib64/libstdc++.so.6
21:14 mornfall To nemůže fungovat. :-))
21:14 spito takže to je porouchaný modul?
21:15 spito (to dělal Vláďa... :D )
21:15 mornfall LD_LIBRARY_PATH=/packages/run.64/gcc-4.7.2/lib64 /home/xweiser1/divine/_build/wibble/wibble-test
21:16 mornfall No, Vláďa možná nechtěl aby ostatní programy používali tu novou libstdc++ jenom proto že používáš ten modul.
21:16 spito já ten test nepotřebuju doběhnout, já se pak nedostanu k unit testům, protože to make zabije
21:16 spito ale ono to je jedno
21:17 mornfall Tak export LD_LIBRARY_PATH=/packages/run.64/gcc-4.7.2/lib64 :-)
21:17 mornfall A už to bude fungovat.
21:17 spito dík
21:29 spito zmlátil jsem myš
21:30 spito mornfall: maíííl
21:33 mornfall ismaiiiil
21:33 spito a už se lýsá.....ten myš
21:43 spito mornfall: eh_ptr.cc:34:10: fatal error: 'unwind-cxx.h' file not found
21:43 spito tohle dostanu při kompilaci clangem na auře
21:43 spito kompilace elevator2.cpp
21:43 mornfall Zajímavé. To je asi bug.
21:43 mornfall Ale já jdu spinkat.
21:43 spito brouk
21:43 spito asi to nevyřeším, co?
21:43 mornfall To bude potřeba dořešit v libsupc++.
21:44 mornfall No, možná stačí smazat eh_ptr.cc z external/libsupc++ a překonfigurovat a přebuildit.
21:44 mornfall On tam asi nikdy neměl bít.
21:44 mornfall být
21:44 mornfall Fuck.
21:44 mornfall Co říkám? Že jdu spát.
21:44 mornfall Bbl.
21:44 mornfall searching... 131134 states, 510695 edges
21:44 mornfall =============================================
21:44 mornfall The property HOLDS
21:44 mornfall =============================================
21:45 mornfall (lamport.c -p assert ... to je na dobrou noc zřejmě)
21:58 spito mornfall: divine: /home/xstill/llvm/3.1/llvm-3.1.src/lib/Target/TargetData.cpp:514: unsigned int llvm::TargetData::getAlignment(llvm::Type*, bool) const: Assertion `Ty->isSized() && "Cannot getTypeInfo() on a type that is unsized!"' failed.
21:58 spito Neúspěšně ukončen (SIGABRT) (core dumped [obraz paměti uložen])
22:00 spito mornfall: snaha o spuštění zkompilovaného elevator2.cpp

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