Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-10-11

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

All times shown according to UTC.

Time Nick Message
00:07 mornfall joined #divine
07:54 spito joined #divine
08:02 spito mornfall: já to teda ještě pořád nepobral - jakto, že když přehodíš tu podmínku v cyklu níž, tak to bude fungovat? co se tam pokazilo?
08:03 mornfall spito: no, to cycleFound nastavuje _checkCycle
08:03 mornfall spito: takže pokud se to nastaví v poslední iteraci tak pech
08:07 spito tedy _checkCycle může v poslední iteraci přepsat hodnotu "je cyklus" na "není cyklus"
08:07 mornfall obráceně
08:07 mornfall jen když se to stane až v poslední iteraci, tak už se to nepropaguje, protože konec cyklu, return
08:08 mornfall vidíš přece že za cycle_node = true je hned return
08:09 mornfall každopádně to funguje, já bych mohl o víkendu nějak ubít HC
08:09 spito já jsem se teda ještě koukal, že jak je v shared visitoru bariéra na start všech visitorů, tak to nebude fungovat, pokud se bude shared spouštět více krát
08:09 mornfall hm, to je chyba, to by se mělo vyresetovat
08:09 spito tohle jsem chtěl dnes opravit
08:09 mornfall i když teď teda myslím každý restart obnáší novou instanci visitora
08:10 mornfall ale jestli to rozumně jde tak to radši sprav
08:10 spito jop, stačí restartovat data
08:10 spito jasný, visitor je nový, ale má stará data
15:46 spito mornfall: owcty.h : 391
15:47 spito toto parallel se nemusí pustit na všech workrech, že?
16:10 * spito už zase mele blbosti
16:12 xstill tak, dokázal sis odpovědět sám, to se cení
16:12 xstill otázka je ale ten ring na 427
16:13 xstill jak funguje teď iterace přes store (jako 383)?
16:13 xstill protože pokud tohle iteruje přes celé store tak ten ring by se měl spustit jen na tabulkách ne všech workerech
16:13 xstill i když ono to asi nevadí
16:14 xstill protože shortcut
16:15 xstill spito: ale kdyby se ti chtělo udělat další parallel který běží per-store (teda ne paralelně zatím, ale do budoucna per-mpi-node) tak bych mohl udělat podporu shared pro explicit
16:15 xstill teda verze parallel která se pro shared bude pouštět jednovláknově a pro partitioned jako parallel
16:18 spito tak, to by nemuselo být tak těžké, ne?
16:18 spito ale jo, to bych mohl upatlat
16:18 spito + mi visí ještě ticket na dvojí hašování
16:18 spito ale to uplácám snad dneska
16:18 xstill no nevím právě, protože topologie asi zatím moc o visitoru neví
16:19 xstill dvojí hashování?
16:21 spito jop, proto máme hash_t jako std::pair< uint64_t, uint64_t >
16:22 spito topologie ne
16:22 spito ale v common.h je cosi, co o visitorovi něco tuší
16:22 spito a to se právě pouští
16:22 spito takže by to jít mohlo (ať žije objektový návrh informačních systémů a podobné předměty na FI, Ošlejška by z toho trefilo)
16:24 xstill jo to je fakt, že parallel vlastně není přímo volání topologie
16:24 xstill takže se tam dá vrazit další
16:25 mornfall topologie asi o visitoru ani vědět nikdy nebude :-)
16:25 mornfall ale ring je stejně v algorithm/common.h
16:25 mornfall resp. parallel
16:25 spito jo, na to jsem poukazoval
16:26 xstill co vlastně teď dělá iterace přes store s shared? To procházení po částech?
16:26 mornfall z čeho by trefila Ošlejška? :-)
16:26 mornfall trefilo
16:26 mornfall xstill: jo, něco takovýho
16:26 spito mornfall: z našeho objektového návrhu divajnu
16:26 mornfall xstill: begin() a end() v shared store
16:26 xstill tak ono by se toho našlo dost z čeho by ho mohl trefit
16:27 spito xstill: hledej firstIndex
16:27 spito a lastIndex
16:27 mornfall co je na divinu objektovej návrh?
16:27 spito no právě :D
16:27 xstill aha
16:27 spito ale on by mohl mít za to, že když tam máme objekty, tak by tam měl být objektový návrh
16:28 spito xstill: domnívám se, že rozkouskování tabulky na základě počtu workerů bude asi nejlepší
16:28 mornfall spito: a kde tam vidíš objekty?
16:28 spito tak, jsou tam třídy
16:28 spito a když instanciuješ třídu, tak máš objekt
16:29 spito citace z asi první přednášky
16:29 mornfall to je pěkně blbá přednáška
16:29 spito mornfall: a co tedy máme, když ne objekty?
16:31 mornfall no, v podstatě jsou to spíš moduly než objekty
16:31 mornfall každopádně třídy jsou v objektovým systému dost nepovinné
16:31 mornfall viz třeba javascript
16:31 mornfall z takových obskurních jazyků
16:32 mornfall mi přijde že zapouzdření a dynamic dispatch jsou charakteristický pro OOP
16:33 mornfall nějaký třídy a dědičnost jsou dost podružný
16:33 spito dynamic dispatch je co?
16:33 mornfall „dynamic dispatch is the process of selecting which implementation of a polymorphic operation (method or function) to call at runtime“
16:34 spito ok
16:34 xstill spito: co jsi myslel tím rozkouskováním tabulky?
16:35 spito no, ono se to rozkouskuje :D
16:35 xstill jako ty iterátoru?
16:35 spito prostě 1. worker má 1. část tabulky
16:35 spito 2. worker 2. část, 3. wo....
16:35 spito jop, on se ten iterátor vytvoří na základě rozměrů
16:35 xstill ok
16:35 spito specificky pro workera
16:36 spito viz STORE_ITERATOR
16:36 xstill jo jo
16:36 xstill hm, akorát explicit bude potřebovat mít možnost iterovat přes celou tabulku najednou...
16:39 spito no, to se bude muset nějak nahackovat
16:39 spito jo, jak si představuješ iterování přes celou tabulku se shared visitorem?
16:39 spito že to bude dělat master vlákno?
16:39 xstill nevím
16:40 xstill asi si to musím rozmyslet
16:40 xstill tak i ten parallel per-store zatím asi nech být
16:40 xstill ono to možná nebude tak triviální v tom explicit
16:44 spito mornfall: pačé
16:44 spito a venku chčije a chčije
16:44 spito no, aspoň mě Zuzka netahá ven .D
16:44 spito :D
18:53 spito xstill: jde nějak jednoduše z Handle dostat Node? týká se to NTstore
18:53 xstill pokud máš store tak jo
18:53 spito jo, mám store
18:54 xstill store.vertex( handle ).node()
18:54 xstill nebo tak nějak
18:54 xstill proč?
18:54 spito kvůli dvojtýmu hašování
18:55 xstill hashovat se to umí i bez toho složení
18:55 spito jo, ale já potřebuju tu druhou část haše
18:55 xstill viz store.h:645
18:55 xstill no tak mrkni do ntreehashset
18:55 xstill a změň to tam na hash128_t
18:56 xstill tam dokonce je hash128_t
18:56 xstill aha ale v hasheru
18:57 xstill prostě to potřebuješ předělat v tabulkách
18:57 xstill ntree hasher pro root dělá 128b hash
19:01 xstill ono to tak dokonce asi bylo s 128 až do store ale pak to Mornfall předělal
19:06 spito jo, už jsem to vykoumal
19:15 xstill :-)
19:18 xstill hm, někdo ukáže studentům Myhill-Nerodovu větu a oni jsou hned schopní o libovolném regulárním jazyce dokázat, že není regulární...
19:36 spito :D
19:36 spito budou pače
19:36 spito ale až se najim
19:36 spito a po filmu
19:51 xstill to máš dobrý
20:06 spito to přijde taky ;)
20:06 spito s ženskou
20:06 spito teda pokud nemáš ženskou v Bruselu
20:15 mornfall hm?
20:16 spito ale nic :)
20:16 xstill :-D
20:17 mornfall a proč děláme teď double hashing? :-)
20:17 spito protože jsem si na něho vzpomněl
20:17 spito a taky ho tu mám hotový
20:17 mornfall a nechceš radši udělat partici podle jinýho kusu hashe než tabulku?
20:17 mornfall protože double hashing stejně musíme prvně změřit...
20:17 mornfall jestli má smysl
20:18 spito eh?
20:18 mornfall nejspíš to sežere dost registrů navíc, takže to může klidně být i pomalejší
20:18 spito takže patche nemám posílat?
20:18 mornfall no, chceme hlavně distribuovat podle jinýho hashe než tabulkovat
20:19 mornfall to víme že chceme :)
20:19 mornfall double hashing pošli ať se to neztratí
20:19 mornfall ale řekl bych že nevíme jestli to chceme :-)
20:19 spito no, jenom nevím, jak mám patch pojmenovat :D
20:19 spito neumím to pojmenovat ani česky řekl bych
20:19 mornfall hlavně teda 64b je víc než dost
20:19 mornfall z toho klidně vyrobíš aj triple hashing smysluplně
20:20 spito co?
20:21 mornfall no, ta druhá hashovací fce může být klidně mix . f (když f je ta první, a mix nějak rozumně zamíchá bitama)
20:21 mornfall zejména když f dává 64b entropie a tvoje tabulka má velikost někde kolem 2^32...
20:25 mornfall kdybys chtěl tak můžeš místo double hashing vzít ten hash jako seed pro mersenne twister a dostaneš uniformní řadu indexů :-) i když teda MT je asi nekonečně pomalej
20:28 spito ok, ještě nad tím zauvažuju
20:28 spito teď se jdu věnovat Zuzce
20:28 spito už trochu prská
20:28 mornfall resp. pokud to děláš jako index i = f x + i * g x, tak to g může být pár vrchních bitů z těch 64b
20:28 xstill tak na to by byl MT asi zbytečně moc silnej ne?
20:28 mornfall jasně, to byla hyperbola :-)
20:29 mornfall (proto je taky nekonečně pomalej...)
20:31 xstill ale jako obecnej nápad je to možná docela zajímavý
20:32 mornfall ono to bude mít vlastnosti dost podobný jako double hashing
20:32 mornfall asi je jen otázka co dokážeš implementovat na míň instrukcí :-)
20:34 xstill tak jistě, hashování je v jistém smyslu taky pseudorandom generátor
20:39 spito left #divine
20:41 mornfall http://xkcd.com/1275/ :D
20:47 xstill :-D

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