Paralelizace a zrychlení v Pythonu

xmdude00

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #30 kdy: 05. 03. 2015, 19:57:20 »
Paralelní neni a nebude, pravda.

Není to tak úplně pravda. Python může volat C funkce, které mohou být paralelizované, viz numpy. Okolnosti mě donutily přepsat nejpomalejší část mého kodu do C, tu jsem paralelizoval pomoci omp. Doba řešení se zkrátila z hodin na minuty. Řešení je to jednoduché a spolehlivé, pokud je možné úlohu zadat pomocí několika ctypes.


Re:Paralelizace a zrychlení v Pythonu
« Odpověď #31 kdy: 05. 03. 2015, 20:05:06 »
Jak moc uživalelsky pohodlná je paralelizace v R? Byly by to body, o který by R porazilo Pandas.
Vyzkoušení paralelizace mám na TODO listu, takže nepovím :) Nástroje na to jsou, ale jak pohodlné to ještě nevím.

Jo počkat, myslíš paralelizaci přes víc strojů nebo v rámci jednoho? Jestli myslíš v rámci jednoho, tak to je v pohodě - Rko je docela funkcionálně orientovaný, takže klasika parallel map atd. Samozřejmě balíčků je na to X (jako ostatně v Rku na všechno ;) ). Ale v tom žádnej rozdíl oproti Pythonu nebude, tam to jde určitě taky (vyzkoušený nemám).

Cokoli vetsiho v R je peklo. Je to prima nastroj na "otevru CSV, profiltruju na NA, namaluju obrazek, prozenu ANOVOU", ale na nejake programovani R nefunguje moc dobre. Zoufaly nedostatek pouzitelnych nastroju (uz jenom debugger je problem a nasi researcheri to obchazeji pomoci View v RStudiu), blbe navrhnuty jazyk (pro statistika dobre, ale na vetsi projekty nema dobre vlastnosti) a spousta ruznych necekanych pasti.
Jémine, tyhle jazyky přece nejsou určený k tomu, abys v tom psal informační systém (i když i http server v Rku existuje ;) ). Jsou to jazyky primárně na interaktivní práci s datama. Prostě vezmu dataset, dotlačím ho do správnýho formátu a vrazím do nějaké knihovny. Je to prostě lepidlo na knihovny, nic víc od toho nelze očekávat. Rozhodující pro tuhle práci je množství a kvalita knihoven a v tom je Rko dost slušný bych řekl.

Python je sice bezva, že to je univerzální jazyk, jenže jako lepidlo právě (imho) zas tak dobře nefunguje. Protože ho prostě ohýbáš na něco, na co nebyl určenej. A speciální nevýhoda je, že nemá rozumný makrojazyk. Takže předat parametr tak, aby se nevyhodnotil v době volání, je opruz. Viz krkolomná syntaxe selectu (narozdíl od Rka, kde samozřejmě selectem design jazyka začali - a téměř u něj skončili :)) ).

pythonar

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #32 kdy: 05. 03. 2015, 20:32:22 »
Paralelní neni a nebude, pravda.

Není to tak úplně pravda. Python může volat C funkce, které mohou být paralelizované, viz numpy. Okolnosti mě donutily přepsat nejpomalejší část mého kodu do C, tu jsem paralelizoval pomoci omp. Doba řešení se zkrátila z hodin na minuty. Řešení je to jednoduché a spolehlivé, pokud je možné úlohu zadat pomocí několika ctypes.


Python je úplně normálně paralelní jako ostatní jazyky. Nevím, proč něco přepisovat. Hlavně většina věcí stejně už v C je, proto je Python je tak rychlý.

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #33 kdy: 05. 03. 2015, 20:34:18 »
Python je úplně normálně paralelní jako ostatní jazyky. Nevím, proč něco přepisovat.
Myslíš úplně stejně jako všechny ostatní OOP jazyky? :))

A vůbec ze všeho nejparalelnější je GIL :))

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #34 kdy: 05. 03. 2015, 20:35:28 »
Cokoli vetsiho v R je peklo. Je to prima nastroj na "otevru CSV, profiltruju na NA, namaluju obrazek, prozenu ANOVOU", ale na nejake programovani R nefunguje moc dobre. Zoufaly nedostatek pouzitelnych nastroju (uz jenom debugger je problem a nasi researcheri to obchazeji pomoci View v RStudiu), blbe navrhnuty jazyk (pro statistika dobre, ale na vetsi projekty nema dobre vlastnosti) a spousta ruznych necekanych pasti.
Jémine, tyhle jazyky přece nejsou určený k tomu, abys v tom psal informační systém (i když i http server v Rku existuje ;) ). Jsou to jazyky primárně na interaktivní práci s datama. Prostě vezmu dataset, dotlačím ho do správnýho formátu a vrazím do nějaké knihovny. Je to prostě lepidlo na knihovny, nic víc od toho nelze očekávat. Rozhodující pro tuhle práci je množství a kvalita knihoven a v tom je Rko dost slušný bych řekl.

V tom nejsme ve sporu. Jak je to trivilani filtrovani a takove to domaci interaktivni solichani dat, tak ma R svoje kouzlo (pokud clovek pretrpi to, ze co pes, to jina ves). Ale jak se po nem zacne chtit neco vic, tak je to dost tvrde pristani (prestoze tam teoreticky je spousta veci, prakticky uz jenom pitome unittestovani je bolest a utrpeni, o cemkoli serioznejsim nemluve).

Problem toho mnozstvi knihoven pak je dost nevyrovnana kvalita. Ostatne vetsinu z nich nepsali programatori, ale lide z jinych oboru, ktere jen nouze dounutila housti a Rko pouzivati.


pythonar

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #35 kdy: 05. 03. 2015, 20:36:57 »
Python je úplně normálně paralelní jako ostatní jazyky. Nevím, proč něco přepisovat.
Myslíš úplně stejně jako všechny ostatní OOP jazyky? :))

A vůbec ze všeho nejparalelnější je GIL :))

Jasně, pokud umíš programovat. Když bys chtěl Java styl, použiješ hotový framework.

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #36 kdy: 05. 03. 2015, 20:39:08 »
Myslíš úplně stejně jako všechny ostatní OOP jazyky? :))
Jasně, pokud umíš programovat. Když bys chtěl Java styl, použiješ hotový framework.

Ja ti nevim, ale tam, kam se nas snazis poslat, jsme byli pred deseti lety a zadny med to neni. Ne, ze by to bylo nemozne, ale preci jenom dneska uz je metodologie nekde trochu jinde.

pythonar

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #37 kdy: 05. 03. 2015, 20:40:45 »
Nikam neposílám, jen Python umí všechno, co ostatní jazyky a ještě máš lepší flexibilitu. Nemusíš ji použít, ale počítá se s ní a funguje dobře. Je to jako Linux. Záleží na tobě, co si z toho postavíš.

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #38 kdy: 05. 03. 2015, 20:41:25 »
V tom nejsme ve sporu. Jak je to trivilani filtrovani a takove to domaci interaktivni solichani dat, tak ma R svoje kouzlo (pokud clovek pretrpi to, ze co pes, to jina ves). Ale jak se po nem zacne chtit neco vic, tak je to dost tvrde pristani (prestoze tam teoreticky je spousta veci, prakticky uz jenom pitome unittestovani je bolest a utrpeni, o cemkoli serioznejsim nemluve).
Ale co, neco vic? To je proste jazyk pro interaktivni solichani dat, co bys po nem chtel? Uz to, ze pises o debuggeru a unit testech, dost ukazuje - takova prace, ktera vyzaduje unit testy, by se v R nejspis vubec delat nemela. Pro serverove davkove zpracovani jsou jine jazyky. Nemam nic proti tomu, kdyz takhle nekdo Rko pouzije, ale pak at si nestezuje, ze je Rko na prd...

Problem toho mnozstvi knihoven pak je dost nevyrovnana kvalita.
To je pravda. Ostatně jako u jakékoliv jiné obrovské kolekce knihoven zdarma :)

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #39 kdy: 05. 03. 2015, 20:42:46 »
Nikam neposílám, jen Python umí všechno, co ostatní jazyky a ještě máš lepší flexibilitu. Nemusíš ji použít, ale počítá se s ní a funguje dobře. Je to jako Linux. Záleží na tobě, co si z toho postavíš.

No prave (nic proti Pythonu, na dost veci ho mam rad).
Nekdy je lepsi jazyk, ktery te vic drzi zkratka. Silne typy, immutable typy, zajistena pure evaulace... (Opet zduraznuju - NEKDY)

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #40 kdy: 05. 03. 2015, 20:46:46 »
Nikam neposílám, jen Python umí všechno, co ostatní jazyky a ještě máš lepší flexibilitu. Nemusíš ji použít, ale počítá se s ní a funguje dobře. Je to jako Linux. Záleží na tobě, co si z toho postavíš.
Ehm. To bys n8m asi musel ozřejmit, jaké "ostatní jazyky" máš namysli.

Jenom namátkou, co python nemá: ze zásadních věcí: makra (a tímpádem ani rozumnou podporu DSL), pattern matching, paralelnost. Ze specialit: třeba snadno implementovatelnou obecnou lazy evaluaci (ne, to fakt není xrange) nebo jánevím třeba podporu pro http://en.wikipedia.org/wiki/Definite_clause_grammar

Python je určitě prima jazyk, rád ho používám. Ale jestli si myslíš, že má "všechno", tak to jsi toho v programování asi moc nezkusil ;)

Kolemjdoucí

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #41 kdy: 05. 03. 2015, 21:01:56 »
jen Python umí všechno, co ostatní jazyky

Poprosil bych jeden kernel-driver 8)

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #42 kdy: 05. 03. 2015, 21:03:14 »
Poprosil bych jeden kernel-driver 8)
Nestraš prosímtě, nebo to fakt někdo udělá. Viz http://micropython.org/ ;)

Kolemjdoucí

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #43 kdy: 05. 03. 2015, 21:07:43 »
většina věcí stejně už v C je, proto je Python je tak rychlý

Tedy poté co jsi přepsal kód z Pythonu do C, tak je Python rychlý. Vskutku brilantní úvaha ;D

txt

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #44 kdy: 05. 03. 2015, 21:09:09 »
Jak moc uživalelsky pohodlná je paralelizace v R? Byly by to body, o který by R porazilo Pandas.
Cokoli vetsiho v R je peklo. Je to prima nastroj na "otevru CSV, profiltruju na NA, namaluju obrazek, prozenu ANOVOU", ale na nejake programovani R nefunguje moc dobre. Zoufaly nedostatek pouzitelnych nastroju (uz jenom debugger je problem a nasi researcheri to obchazeji pomoci View v RStudiu), blbe navrhnuty jazyk (pro statistika dobre, ale na vetsi projekty nema dobre vlastnosti) a spousta ruznych necekanych pasti.
Zajímá mě to spíš z pohledu statistika než programátora (kompilátory nechám informatikům, mě zajímají víc aplikační domény). Tzn. aby to efektivně na procesorový čas i lidské zdroje vyřešilo datovou / statistickou úlohu. Jak psal Mirek, nejde o IS. Btw dost jsou slyšet názory, že ani Python se moc nehodí na větší projekty. Takže se klikátka nakonec napíšou v Javě/C#, či masochisti v C++.


Paralelní neni a nebude, pravda.
Není to tak úplně pravda. Python může volat C funkce, které mohou být paralelizované, viz numpy. Okolnosti mě donutily přepsat nejpomalejší část mého kodu do C, tu jsem paralelizoval pomoci omp. Doba řešení se zkrátila z hodin na minuty. Řešení je to jednoduché a spolehlivé, pokud je možné úlohu zadat pomocí několika ctypes.
Začátečnickej dotaz - to potom běží víc interpreterů, nebo se paralelizuje na úrovni dynamický knihovny?

Jo počkat, myslíš paralelizaci přes víc strojů nebo v rámci jednoho? Jestli myslíš v rámci jednoho, tak to je v pohodě - Rko je docela funkcionálně orientovaný, takže klasika parallel map atd.
V tomhle dobrý, asi bych to měl vyzkoušet. Právě ty PARALELNÍ data v Pythonu, mi přišlo že se člověk musí věnovat víc implementaci paralelního modelu, než samotnýmu významu dat. Prostě si to v OpenMP, či pomocí socketů napsat sám.

Ohledně distribuované verze, tam jenom vim že by to prej asi mělo jít, ale teď se věnuju něčemu jinýmu.