Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2017-03-31

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

All times shown according to UTC.

Time Nick Message
01:48 ilbot3 joined #divine
01:48 Topic for #divine is now DIVINE | http://divine.fi.muni.cz | http://irclog.perlgeek.de/divine/
05:48 xstill yaqwsx: co je to za kód?
05:54 xstill yaqwsx: zkus tam přidat dump té funkce (před ten řádek 60: if ( !load ) call->getParent()->getParent()->dump()) a pošli mi výsledek
06:22 mornfall xstill: odkud jsou ty llvm-bench?
06:23 xstill llvm testsuite
06:23 xstill normálně z webu LLVM
06:23 mornfall xstill: ten stejný co xheno naimportoval jako 'microsoft'?
06:23 mornfall (je tam jiný výběr, ale vypadá to jako to stejný)
06:24 mornfall viz microsoft/README.txt
06:24 mornfall (navíc se zdá že to všechno přišlo z computer language shootout)
06:25 xstill zdroj je asi stejný ale příklady jiný, počítám, že jsme každej naimportovali jinou podmnožinu
06:25 mornfall navrhuju to všechno přesypat pod 'shootout' a v postgresu přetagovat
06:26 mornfall jinak v tom bude zachvíli mega bordel
06:26 xstill až na to, že jen část těch benchmarků co jsem importoval já je z shootout
06:27 xstill (jen single.benchmark-game.pkg)
06:27 mornfall ok, tak nevim, ale takhle to být nemůže
06:29 xstill no pokud jsou zkutečně ty Heňovi z llvm testsuite benchmarků tak bych to dal pod llvm-bench
06:30 xstill on je tam bordel ve víc věcech
06:31 mornfall divine by se mohl teoreticky přesunout pod bricks, jinak nevim
06:31 xstill hlavně se mi dost nelíbí, že ten import skript slučuje všechno v pkg, ve spoustě případů by bylo by praktičtější aby vytvořil pro každý skript model, ne variantu (možná by i mělo smysl mít dva typy balíků, nebo to nějak kódovat do názvu skriptu jestli je to varianta nebo samostatný model)
06:32 xstill takhle se v tom nedá moc vyznat totiž
06:32 xstill a typicky libc++ testy s sebou dost často táhnou tunu věci, bricks nakonec taky, takže importovat to jako .cpp nejde
06:34 mornfall to se může řešit někdy jindy, ale tagy je potřeba uklidit dneska, jinak tu evaluation nejde moc dobře napsat (resp. je tam krásně vidět že v tom máme bordel)
06:35 mornfall (taky je možnost vyrobit tag 'other' a dát tam divine/ + ty 2 ne-shootout modely z llvm-bench, s tím že až toho bude víc tak se to z toho přesune ven)
06:35 mornfall (případně taky libc-posix, kde jsou taky 3 modely)
06:36 mornfall hmmm, a taky pb161 jeden valid model, to je taky asi zbytečná kategorie
06:37 xstill ono by možná stálo za to všechny ty benchmarky z programovací předmětů tagovat jako courses, to alespoň má šanci někomu něco říct
06:39 xstill jo ty Heňovy benchmarky jsou test-suite-4.0.0.src/SingleSource/Benchmarks/Shootout-C++
06:39 xstill takže bych je klidně přetagoval na llvm-bench, to mi příjde nejjednodušší
06:40 xstill libc-posix se dá klidně vynechat, je tam jeden model kterej se ve všech třech nástrojích spočítal za míň jak vteřinu
06:41 xstill no dobře, DIVINE 3 ho nedal, ale DIVINE 4 i ESBMC tam mají 0:00
06:42 xstill případně sloučit cryptopals, divine a libc-posix pod other
06:46 xstill každopádně já se jdu přesunout na FI
07:50 xstill_ přetaguješ si to teda nějak podle sebe předpokládám?
08:00 yaqwsx xstill: Vyřešeno, omylem se mi povedlo vygenerovat kód který se snaží z va_listu unpackovat va_list
08:32 yaqwsx Už jsem to chvilku nedělal; jaký je teď správný postup na to si spustit testy?
08:34 mornfall make validate a/nebo make {debug,semidbg}-functional
08:34 mornfall (spíš semidbg, je to výrazně rychlejší)
08:34 yaqwsx mornfall: Díky
08:34 mornfall xstill_: no, doufal jsem že to nebudu muset dělat
09:05 mornfall yaqwsx: můžeš mrknout na arke:/tmp/syscall.cpp? není to úplně moc hezký, ale v podstatě by to mohlo fungovat?
09:11 yaqwsx mornfall: Nevadí ničemu, že budu cpát zbytečné argumenty do va_listu?
09:12 mornfall yaqwsx: (v tom do_syscall se ty Padding pak lehce vyfiltrujou)
09:12 yaqwsx mornfall: Jo, takto.
09:12 mornfall yaqwsx: ale kdyby to bylo ve va_listu tak to taky ničemu nevadí
09:12 mornfall (jen s va_listem to asi překladač nedokáže vymlátit pryč, takže se promarní kousek paměti)
09:13 yaqwsx Jj,ale pokud se to v do_syscall naskládá to tuplu, tak není problém padding odstranit...
09:13 mornfall přesně tak
09:13 yaqwsx Ok, tohle je celkem chytré řešení!
09:14 mornfall v principu to nechám na tebe, jestli se ti víc líbí metaprogramování v preprocesoru nebo tohle
09:15 yaqwsx mornfall: Líbí se mi více to tvé, ale momentálně mám už v podstatě rozchozený preprocesor. Takže to vidím tak, že to konečně dotáhnu do použitelné podoby s preprocesorem, abych nebrzdil Zuzku a Katku a pak to překlopím na tohle. "Rozhraní" pro ty dvě se totiž nezmění.
09:16 yaqwsx PS: Ani jedno ale nemá hezké chybové hlášky.
10:27 xstill_ mornfall: divine jsem hodil k bricks, cryptopals + alg + libc-posix pod other a microsoft jsem reklasifikoval na llvm-bench
10:28 xstill_ jo a sloučil jsem programovací kurzy pod courses
11:35 xstill_ mornfall: nové ESBMC 17243070
12:59 xstill_ tak ještě jednou (když se k C benchmarku includuje C++ knihovna tak se to rozbije): 17253816
13:38 yaqwsx Testy neběhají paralelně, že?
13:39 xstill_ yaqwsx: make functional JOBS=N
14:08 yaqwsx xstill_: Díky
14:09 yaqwsx mornfall: Testy na konfiguraci téměř procházejí - mám jenom problém s tím, že mi verify vyproduje nereprodukovatelný trace v simu
14:09 mornfall yaqwsx: to zní jako problém no
14:15 yaqwsx Jojo, zatím nemám tušení čím to. Ale dělám na tom.
14:20 yaqwsx mornfall: Co byla nutná podmínka k tomu, aby to fungovalo? Bylo třeba deterministicky naalokovat rámec hlavního vlákna?
14:20 xstill_ jo to bylo potřeba před tím, než se řešilo cokoliv s konfigurací co mohlo alokovat
14:21 yaqwsx Jo, tak to bude to, co se rozbilo...
14:25 yaqwsx Musí to být kontext anebo skutečně rámec hlavního vlákna? Protože v původním kódu nevidím, že by se nějak speciálně alokoval rámec hlavního vlákna
14:27 xstill_ myslím, že rámec vlákna, ale řešil jsi to ty s mornfallem, takže jistě to nevím
14:29 yaqwsx xstill_: Jj, to vím, ale už si nejsem jistý. mornfall to tehdy nějak záhadně a rychle vyřešil.
14:42 mornfall yaqwsx: jo, ten rámec se musí naalokovat deterministicky
14:49 yaqwsx mornfall: Ok, paměť pro rámec hlavního vlákna je to první, co si naalokuji, ale i přesto se to chová stále špatně. Stav a všechno ostatní aokuji nedeterministky
14:52 yaqwsx Umím nějak ověřit (vytracovat), že je ta paměť skutečně deterministická? Bude mít stejnou adresu?
14:56 mornfall xstill_: tst-strxfrm.uclibc.pass (libc-std) a partialsums (single.benchmark-game)
14:58 mornfall yaqwsx: jo, o tu adresu právě jde
15:40 yaqwsx Můžu si nějak zapnout zobrazování tracu z bootu ve verify?
15:41 mornfall yaqwsx: můžeš umřít počas bootu pak by to měl ukázat
15:43 yaqwsx Ok, tak adresy rámce jsou potom totožné, ale tracy nejsou občas reprodukovatelné.
15:44 xstill_ a čím se liší ta konfigurace v simu a ve verify?
15:45 yaqwsx Předají se jiné argumenty a dle nich se navíc ve scheduleru začnou traceovat vlákna.
15:45 yaqwsx Jinak by měly být totožné.
15:47 yaqwsx Samozřejmě se poté liší adresa kontextu a všech pointerů uvnitř nej (vyjma rámce hlavního vlákna).
15:48 yaqwsx Nemůže být problém v řazení vláken uvnitř Scheduleru?
15:50 mornfall yaqwsx: 5d469b2048cafa7df4d0d93cd0b6f61f14f56888 tohle je ten patch kterej to opravoval naposled, myslím
15:51 mornfall yaqwsx: podle toho ta klíčová věc je TLS a ne rámec
15:51 mornfall ale že bych si pamatoval proč to tak je...
15:57 yaqwsx mornfall: Vyzkouím
15:59 mornfall yaqwsx: no jo, musí být, jinak se může dostat na jiný místo v tom sorted kontejneru a pak to neštimuje
16:00 yaqwsx mornfall: Stále mi to ale nedává smysl. Alokace TLS prvního vlákna je deterministická, ale alokace ostatních vláken už není. A čekal bych, že VM může kanonizovat podle framu, nikoliv podle TLS...
16:05 mornfall yaqwsx: no deterministický je všechno
16:06 mornfall yaqwsx: ten chain se reinicializuje z aktuálního frame id
16:06 mornfall yaqwsx: to co se ale může stát je, že parametry mají vliv na ID toho prvního vlákna
16:06 mornfall yaqwsx: protože boot běží v jednom hashchainu
16:07 mornfall yaqwsx: když se pouští scheduler, tak je to blank slate a když se skočí do vlákna tak se navazuje právě skrz to frame id
16:07 yaqwsx mornfall: Id vlákna je co? Pro DiOS je to pointer na TLS, ale to by VM mělo být jedno...
16:07 mornfall yaqwsx: takže to co se dělo v bootu po alokaci TLS a prvního rámce hlavního vlákna se 'zapomene'
16:08 yaqwsx mornfall: Takže jak TLS, tak i rámec musí mít deterministický pointer?
16:08 mornfall yaqwsx: VM to je sice jedno, ale dios scheduler mapuje číslo z __vm_choose na konkrétní vlákno tak, že to závisí na hodnotách tls
16:09 yaqwsx Ok, to už dává smysl, ale nevysvětluje to, proč to nefunguje.
16:09 mornfall yaqwsx: druhá možnost je zničit ten sorted storage, pak to bude mnohem víc jedno (ale mělo by se změřit jakej rozdíl to dělá)
16:09 mornfall yaqwsx: a to TLS alokuješ ještě předtím než znáš typ scheduleru?
16:10 yaqwsx Jj, hned jako první věc v initu si nalokuji paměť, kterou předám konfiguraci, aby s ní udělal, co uzná za vhodné
16:10 mornfall ale je pravda že pokud nabootuješ s jinýma parametrama a na id hlavního vlákna to nemá dopad tak by to mělo fungovat
16:11 mornfall yaqwsx: dva kusy paměti?
16:11 yaqwsx Pro jistotu si to ještě vytracuji, kdyby mi něco unikalo.
16:11 yaqwsx mornfall: Dva kusy paměti?
16:11 mornfall yaqwsx: no, tls je jeden, rámec hlavního vlákna druhý
16:12 yaqwsx Takže odpověď na moji předchozí otázku "oboje musí být deterministické" je "ano"?
16:12 mornfall aha to jsem neřekl?
16:12 mornfall bad mornfall
16:12 yaqwsx V pohodě, předělám to.
16:12 yaqwsx Je možné, že já neumím číst.
16:14 mornfall yaqwsx: TLS hlavního vlákna musí být det. protože každý TLS musí být, a TLS všech vláken který nejsou to hlavní závisí na adrese rámce toho hlavního
16:26 yaqwsx mornfall: Díky za konzultaci, dříve selhávající testy prochází, jdu spustit zbytek.
16:30 xstill_ mornfall: všechno ESBMC doběhlo
17:11 Guest6806 joined #divine
17:57 mornfall xstill_: hmm, co se stalo s bricks testama v DIVINE 3? dojelo to na IO?
18:42 xstill ano
18:57 yaqwsx Meh, proč někdo zaváděl variadické/přetížené syscally?
19:03 xstill přetížené syscally?
19:03 yaqwsx open, openat
19:04 xstill aha toto
19:04 yaqwsx Dělá to bordel při implementaci.
19:04 xstill to se nedivím
19:28 mornfall yaqwsx: because of reasons
19:30 mornfall yaqwsx: ale asi je smysluplný třeba open jako syscall vůbec nemít a vždy dělat openat
19:30 mornfall (je to striktně nadmnožina)
19:34 mornfall yaqwsx: (viz AT_FDCWD, který doufám že funguje :)

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