Ateji PX - Ateji PX - Wikipedia
![]() | Téma tohoto článku nemusí splňovat požadavky Wikipedie obecný pokyn k notabilitě.Dubna 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Paradigma | objektově orientovaný, pi kalkul |
---|---|
Psací disciplína | silný, statický |
Licence | komerční, bezplatná 30denní prémiová zkušební verze a bezplatné vydání |
webová stránka | www.Ateji.com |
Ovlivněno | |
Jáva |
Ateji PX je objektově orientovaný programovací jazyk rozšíření pro Jáva. Je určen k usnadnění paralelní výpočty na vícejádrové procesory, GPU, Mřížka a cloud.
Ateji PX lze integrovat do Zatmění IDE, vyžaduje minimální učení dalších paralelních konstrukcí a nemění proces vývoje.
Příklady kódu
Ahoj světe
veřejnost třída Ahoj světe { veřejnost statický prázdnota hlavní(Tětiva[] args) { [ || Systém.ven.tisk("Ahoj"); || Systém.ven.tisk("Svět"); ] }}
Každý ||
symbol zavádí paralelní větev. Spuštěním tohoto programu se vytiskne buď
Ahoj světe
nebo
Svět Ahoj
podle toho, jak jsou naplánovány paralelní větve.
Datový paralelismus
[ || (int i : pole.délka) pole[i]++;]
Kvantifikace (int i: N)
vytvoří jednu paralelní větev pro každou hodnotu i
. Účinkem tohoto kódu je zvýšení všech prvků pole
paralelně. Tento kód je ekvivalentní s
[ || pole[0]++; || pole[1]++; ... || pole[pole.délka-1]++;]
Jsou možné složitější kvantifikace. Následující příklad kvantifikuje přes levý horní trojúhelník čtvercové matice:
[|| (int i:N, int j:N, -li i+j<N) matice[i][j]++;]
Volá se kód, který provádí podobnou a obvykle malou operaci na velké kolekci prvků paralelní data, a objevuje se často ve vysoce výkonných vědeckých aplikacích. Typickým představitelem datově paralelních jazyků pro ekosystémy C / C ++ nebo Fortran je OpenMP.
Funkce paralelismu dat mohou také implementovat knihovny pomocí vyhrazených datových struktur, jako je například paralelní pole.
Paralelnost úkolů
Termín paralelismus úlohy se používá, když lze práci koncepčně rozložit na řadu logických úkolů. V tomto příkladu se úkoly vytvářejí rekurzivně:
int fib(int n) { -li (n <= 1) vrátit se 1; int fib1, fib2; // rekurzivně vytváří paralelní větve [ || fib1 = fib(n-1); || fib2 = fib(n-2); ] vrátit se fib1 + fib2;}
Paralelnost úkolů je implementována v jazycích, jako je Cilk a v knihovnách podobných vidlice / připojit se
dvojice systémových volání Unix.
Předávání zpráv
Paralelní větve mají dva způsoby komunikace; buď souběžným čtením a zápisem sdílených proměnných, nebo zasíláním explicitních zpráv. Provozovatelé !
a ?
odesílat a přijímat zprávy na kanálu.
V tomto příkladu dvě paralelní větve komunikují prostřednictvím předávání explicitních zpráv:
Chan<Tětiva> chan = Nový Chan<Tětiva>();[ // větev 1 pošle hodnotu přes kanál || chan ! "Ahoj"; // větev 2 obdrží hodnotu z kanálu a vytiskne ji || chan ? s; Systém.ven.tisk(s);]
Datový tok
Program se říká, že je datový tok když je výpočet zahájen a synchronizován podle dostupnosti dat v toku. Typickým příkladem je sčítač: má dva vstupy, jeden výstup a kdykoli jsou dva vstupy připraveny, odešle jejich součet na výstupu.
prázdnota zmije(Chan<Celé číslo> v 1, Chan<Celé číslo> in2, Chan<Celé číslo> ven) { pro(;;) { int hodnota1, hodnota2; [ v 1 ? hodnota1; || in2 ? hodnota2; ]; ven ! hodnota1 + hodnota2;}}
Všimněte si paralelního čtení [ v 1 ? hodnota1; || in2? hodnota2; ]
. To znamená, že dvě vstupní hodnoty mohou přicházet v libovolném pořadí. Bez něj by se kód mohl zablokovat, pokud by hodnoty přicházely ve špatném pořadí. To ukazuje, že paralelní primitiva v programovacím jazyce nejsou jen o výkonu, ale také o chování programů.
Sčítačka sama o sobě nedělá nic, protože reaguje na vstupní data. Je třeba to dát do kontextu, kde jiné části napájejí vstupní hodnoty a čtou výstupní hodnoty. Způsob, jak to vyjádřit, je sestavit všechny skladby ve velkém paralelním bloku:
[ || zdroj(c1); // generuje hodnoty na c1 || zdroj(c2); // generuje hodnoty na c2 || zmije(c1, c2, c3); || dřez(c3); // čtení hodnot z c3]
Cokoli, co lze považovat za kombinaci logických bran nebo elektrických obvodů, lze snadno vyjádřit tímto způsobem jako program toku dat.
externí odkazy
- Bílá kniha Ateji PX Jemný úvod do jazykových funkcí
- Příručka k jazyku Ateji PX
- Think Parallel, Think Java článek na Dr. Dobbs
- Francouzská firma vaří paralelní nabídku Java