Paralelizace a zrychlení v Pythonu

py

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #60 kdy: 09. 03. 2015, 12:29:25 »
Tohle python samozřejme umi.


Kolemjdoucí

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #61 kdy: 09. 03. 2015, 14:26:01 »
Tohle python samozřejme umi.

Umí vlákna s GIL a multiprocessing s omezeným sdílením dat, ani jedno nedosahuje potřebných kvalit.

DK

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #62 kdy: 09. 03. 2015, 14:44:08 »
Tohle python samozřejme umi.

Umí vlákna s GIL a multiprocessing s omezeným sdílením dat, ani jedno nedosahuje potřebných kvalit.
Tohle umi cpython

Lukino

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #63 kdy: 09. 03. 2015, 14:47:56 »
JA sa spytam trochu off topic.
K comu je dobry python? Kde mi moze nahradit C#, JAVU?

Kolemjdoucí

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #64 kdy: 09. 03. 2015, 15:01:13 »
Tohle umi cpython

Potřetí to psát nebudu, přečtete si to sám https://wiki.python.org/moin/GlobalInterpreterLock.

Kde mi moze nahradit C#, JAVU?

C#, Javu nenahradí, ale s úspěchem nahradí bash.


Re:Paralelizace a zrychlení v Pythonu
« Odpověď #65 kdy: 09. 03. 2015, 15:23:14 »
JA sa spytam trochu off topic.
K comu je dobry python? Kde mi moze nahradit C#, JAVU?

K cemu je dobry tobe, to nevim.
Ja ho mam celkem rad na takove ty stredni veci. Kde je shell malo, ale zakladat plnotucny projekt jeste moc.
Uz se v tom da doopravdy programovat (testovaci frameworky, IDE), ma to primocare API pro dost veci (zadna tovarna na vyrobu tovaren, abych nacetl tri radky konfigurace), celkem rozumny REPL... ale na druhou stranu na vetsi veci mi Java kryje zadek dost dalsimi vecmi.

jenda

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #66 kdy: 09. 03. 2015, 15:39:31 »
na rychle prototypy je python fakt super, tady http://forum.root.cz/index.php?topic=10810.msg123997#msg123997 je volani opencl a soucet dvou matic s milionem prvku, vcetne generovani a kontroly hotovo za mene nez desetinu vteriny.
jak se to napise v jave nebo c# ? a jak dlouho to budete ladit ?

Kolemjdoucí

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #67 kdy: 09. 03. 2015, 16:18:44 »
jak se to napise v jave nebo c# ? a jak dlouho to budete ladit ?

Součet jednoho milionu čísel se napíše v C# jako prostá smyčka a výkon je v tomto množství ještě natolik dostatečný že na otázku rychlosti jednoduše nedojde, ladit není co.

gamer

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #68 kdy: 09. 03. 2015, 16:19:23 »
na rychle prototypy je python fakt super, tady http://forum.root.cz/index.php?topic=10810.msg123997#msg123997 je volani opencl a soucet dvou matic s milionem prvku, vcetne generovani a kontroly hotovo za mene nez desetinu vteriny.
jak se to napise v jave nebo c# ? a jak dlouho to budete ladit ?

Může být v C++?
Kód: [Vybrat]
#include <boost/numeric/ublas/matrix.hpp>

int main()
{
    boost::numeric::ublas::matrix<float> a(1000, 1000);
    boost::numeric::ublas::matrix<float> b(1000, 1000);

    std::generate(a.data().begin(), a.data().end(), rand);
    std::generate(b.data().begin(), b.data().end(), rand);

    a += b;

    return 0;
}
Kód: [Vybrat]
g++ -O3 -DNDEBUG -DBOOST_UBLAS_NDEBUG main.
time ./a.out
real 0m0.031s
user 0m0.029s
sys 0m0.000s
31 ms, z toho 25 ms je generování náhodných čísel, vlastní sčítání je 6 ms. Ladit nevím, co bych na tom měl ladit?

lobo

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #69 kdy: 09. 03. 2015, 17:10:00 »
na rychle prototypy je python fakt super, tady http://forum.root.cz/index.php?topic=10810.msg123997#msg123997 je volani opencl a soucet dvou matic s milionem prvku, vcetne generovani a kontroly hotovo za mene nez desetinu vteriny.
jak se to napise v jave nebo c# ? a jak dlouho to budete ladit ?

tvaris sa ako keby si ty sam osobne odladil cele NumPy :-)

C#
Kód: [Vybrat]
using MathNet.Numerics;
using MathNet.Numerics.LinearAlgebra;
using System;
void Main()
{
var timer=new Stopwatch();
timer.Start();
var m1 = Matrix<double>.Build.Random(1000, 1000);
var m2 = Matrix<double>.Build.Random(1000, 1000);
Console.WriteLine(timer.ElapsedMilliseconds);
var z=m1+m2;
Console.WriteLine(timer.ElapsedMilliseconds);
}

generovanie matic: 60ms
sucet: 3ms

DK

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #70 kdy: 09. 03. 2015, 18:18:00 »
Tohle umi cpython

Potřetí to psát nebudu, přečtete si to sám https://wiki.python.org/moin/GlobalInterpreterLock.

Myslis "In CPython, the global interpreter lock, or GIL, is ..."?

candát

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #71 kdy: 09. 03. 2015, 20:08:06 »
Tohle python samozřejme umi.

Umí vlákna s GIL a multiprocessing s omezeným sdílením dat, ani jedno nedosahuje potřebných kvalit.

Aha a jak by ta kvalita měla být lepší, když to umí v podstatě to stejné co Java?

tomk123

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #72 kdy: 09. 03. 2015, 22:32:30 »
Ja bych pouzil multiprocessing modul a pool workeru. Je to velmi pohodlne. Proste si velmi jednoduse nastartujes procesu kolik chces, naladujes do fronty tasky (soubory) a on je vykona. Dokonce maji velmi jednoduche predavani vysledku (pripadne si predej nazev vystupniho soubor, ktery si nactes).

https://docs.python.org/2/library/multiprocessing.html

Odstranis tim problemy s GIL a muzes pouzivat cokoliv te napadne vcetne numpy apod.

heretik

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #73 kdy: 09. 03. 2015, 23:43:13 »
Citace
proto je Python je tak rychlý

V ranku skriptovacích jazyků je Python jeden z nejpomalejších. To už i PHP je rychlejší. No a takový vysmívaný JavaScript ho co do rychlosti vyloženě drtí. Samozřejmě při použití čistě pro volání knihoven psaných v céčku bude "rychlý" libovolný jazyk, o tom žádná...

DK

Re:Paralelizace a zrychlení v Pythonu
« Odpověď #74 kdy: 10. 03. 2015, 08:14:44 »
Tohle python samozřejme umi.

Umí vlákna s GIL a multiprocessing s omezeným sdílením dat, ani jedno nedosahuje potřebných kvalit.

Aha a jak by ta kvalita měla být lepší, když to umí v podstatě to stejné co Java?
V podstate umi i to, co cecko, haskel, nebo brainfuck.

Java ma vyrazne lepsi garbage collector, diky tomu nemusi mit GIL a vlakna jedou ve skutecnosti paralelne (u cpythonu ne, kdyz pouzijes jiny interpreter, treba jython, nebo ironpython, tak ty GIL nemaji)