kaple je nový paralelní programovací jazyk byl vyvinut Cray Inc. jako součást DARPA vedené programu vysokou produktivitu počítačových systémů (HPC). Kaple je navržen tak, aby zvýšení produktivity high-end uživatelů počítačů a zároveň slouží jako přenosný paralelní programovací model, který může být použit na komoditních klastrů nebo desktop vícejádrových systémech. Kaple se snaží přispět k výraznému zvýšení programovatelnost rozsáhlých paralelních počítačů, zatímco odpovídající nebo porazil výkon a přenositelnost současných programovacích modelů, jako je MPI.
Kaple Aplikace podporuje vícevláknové modelu spuštění přes abstrakce na vysoké úrovni pro paralelismus dat, úkolů paralelismus, souběžnost, a vnořené paralelismus. & Nbsp; kaple je typ locale umožňuje uživatelům určit a důvod, proč o umístění dat a úkolů na cílové architektury v pořadí vyladit pro lokality. Kaple podporuje globální výhledem na datové agregáty s uživatelem definované implementací, která umožňuje operace na distribuovaných datových struktur, které mají být vyjádřena v přírodním způsobem. Na rozdíl od mnoha předchozích paralelních jazycích na vyšší úrovni, kaple je navržena kolem multirezoluční filozofie, která umožňuje uživatelům, aby zpočátku psát velmi abstraktní kód a pak postupně přidávat více detailů, než oni jsou tak blízko ke stroji jako jejich potřeby vyžadují. Kaple podporuje opětovné použití kódu a rychlé prototyping přes objektově orientovaného návrhu, typ závěr, a funkcí pro generické programování.
Kaple byla navržena z prvních principů, spíše než tím, že rozšíří existující jazyk. Je nezbytně nutné, blok strukturovaný jazyk, navržen tak, aby bylo snadné se naučit pro uživatele C, C ++, Fortran, Java, Perl, Matlab, a dalších populárních jazyků. Zatímco Kaple staví na konceptech a syntaxi z mnoha předešlých jazyků, jeho paralelní funkce jsou nejvíce přímo ovlivněny ZPL, High-Performance Fortran (HPF), a Cray MTA a obchodu; / Cray XMT a obchodu; rozšíření až C a Fortran
Co je nového v této verzi:.
- Highlights (viz níže)
- Split "def" klíčového slova do "proc" (postupy) a "ITER" (pro iterátorů)
- (viz '$ CHPL_HOME / util / convert-defs --help' pro pomoc aktualizuje stávající kodexy)
- dodal "Replikovaná" distribuce a vylepšený "Block-cyklického" distribuce
- (viz & quot; Standardní Distribuce & quot; v spec a příklady / primery / distributions.chpl)
- přidal single-národní prostředí úloh Layers pro Nanos ++ (BSC) a Qthreads (Sandia)
- (viz doc / README.tasks)
- hlavní replikou rozsah sémantiky a realizace
- (viz & quot; Sémantické Změny / Změny Chapel Language & quot; pouze pro detail)
- počáteční podpora pro těkavé typy: bool, int, uint, skutečný, imag
- (viz doc / TechNotes / README.volatile)
- Podpora externími consts a tříd (ukazatele-to-structs)
- (viz doc / TechNotes / README.extern)
- Vylepšená podpora pro datový paralelismus na Cray XMT
- rozsáhlá zlepšení ukázkových kódů v příkladech / adresáři
- (viz "Příklad kódy" níže a příklady / README)
- přidané Nejvíce příklady kódu z spec do nové příklady / adresář
- (viz příklady / Spec / *)
- přidána technická poznámka popisující uživatelem definované mapy doména rozhraní
- (viz doc / TechNotes / README.dsi)
- rozsáhlá aktualizace na specifikaci jazyka
- (viz "Dokumentace" níže)
- několik vylepšení na runtime tasking a komunikační vrstvy
- (viz & quot; Runtime Library změny & quot; níže)
- Syntactic / Pojmenování Změny
- Split "def" klíčového slova do "proc" (postupy) a "ITER" (pro iterátorů)
- (viz '$ CHPL_HOME / util / convert-defs --help' pro pomoc aktualizuje stávající kodexy)
- přejmenované "aritmetické" domény / pole, aby "obdélníkové" domény / pole
- přidána podpora pro plovoucí desetinnou čárkou literály formuláře "1.E ..."
- (dříve, jen '1E ... "a" 1.0e ...' byly podporovány)
- Sémantické Změny / Změny Chapel jazyk
- několik vylepšení do řad (viz "rozsahy" kapitola v jazykové spec):
- přidal koncept vyrovnání k označení zarovnání modulo | krok |
- přidal "align" provozovatelem a dotaz na rozsahy specifikovat / zarovnání dotazu
- (např, "1..10 o 3 align 2 '= & gt;" 2, 5, 8' od 2. == 5 == 8, mod 3)
- definovány == na rozsazích, pokud jde o celočíselných sekvencí, které generují
- definováno ident (R1, R2), říci, zda R1 a R2 jsou identické sémanticky
- definován "# K 'pro k & lt; 0 v tom smyslu, & quot; počítat od konce rozsahu & quot;
- dodal "první", "poslední", "alignedLow," alignedHigh 'metod k rozsahy
- (např, "1..10 od -2" = & gt; první == 10, poslední == 2, alignedLow = 2, alignedHigh = 10)
- přidána podpora pro celou řadu nových funkcí dotazu rozsah
- (např alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- přidána podpora pro volatile bool, int, uint, skutečný, a typy IMAG
- (viz doc / TechNotes / README.volatile)
- přidal end-of-file šek na typu souboru
- (např., "Zatímco! Infile.eof ...")
- odebrána podpora pro léčbu "návratem" do iterátoru jako "výnos"
- (např změna "iter foo () {return x;} 'na' iter foo () {výtěžek x; return;} ')
- přidal podporu pro odkazování modulů, aniž by první "use'-ing je
- (např modul M1 {var x ...} modul M2 {... M1.x ...}, je nyní legální)
- přidal dotaz callStackSize typu locale
- (např, "here.callStackSize" vrací velikost zásobníku volání na aktuální locale)
- odstranili dříve požadovaný středník od konce výčtu prohlášení
- (např, "ENUM barvy {červená, modrá, zelená} 'je nyní legální; dříve zapotřebí"; ")
- přidána podpora pro jednu koncovou čárku na konci seznamů výčtu
- (např, "ENUM barvy {červená, modrá, zelená,}", je nyní legální)
- odebrána podpora pro +/- subjektům na pravoúhlých domén; použití Přeložit ()
- nově implementované Vlastnosti
- implementován == /! = Pro obdélníkové, asociativní a řídké domén
- Standardní Distribuce
- přidal první návrh "replikovány" rozložení pro ukládání dat redundantně
- (viz příklady / primery / distributions.chpl)
- zlepšený "Block-cyklického ', dostatečné, aby správně provádět HPCC PTRANS a HPL
- (viz příklady / HPCC / ptrans.chpl, hpl.chpl, příklady / primery / distributions.chpl)
- odstraní nadbytečnost ve specifikaci vůdce iterátorů mezi doménami / polí
- standardní moduly
- přidal INFINITY a nan konstanty modulu Math.chpl
- (viz "Math", pod & quot; standardních modulů & quot; v jazyce spec)
- přidal isinf () a isfinite () zkušební rutiny modulu Math.chpl
- (viz "Math", pod & quot; standardních modulů & quot; v jazyce spec)
- přidal půl tuctu dalších rutiny modulu GMP.chpl
- Documentation
- přidal novou technickou poznámku popisující uživatelem definované mapy doména rozhraní
- (viz doc / TechNotes / README.dsi)
- udělal mnoho vylepšení pro specifikace jazyka
- hlavní revize v kapitole domény s cílem zlepšit srozumitelnost / přesnost
- zlepšila a jednotná struktura rekordů a tříd kapitol
- hlavní revize v kapitole Domain Mapy zlepšit srozumitelnost / přesnost
- s názvem příklad kódy poskytovat křížový odkaz na příkladech / Spec / programy
- vyjasnit zákonnost etiketě / přerušení / pokračování v paralelních smyčkách
- aktualizované popisy čtení [ln] / zápisu [ln]
- opraveny některé problémy v oblastech souborových objednávání
- přeformátován specifikaci jako "kniha", v LaTeXu
- různé drobné opravy překlepů / chyb
- zlepšené definice / popisy několika termínů
- přidal dokumentaci locale.name
- a mnoho dalších změn ...
- aktualizováno rychlá odkaz na dokument, aby zahrnovala vymezením & gt; proc / ITER změna, zarovnat op .
- předělal / reorganizována README.extern objasnit vysvětlení a přinést up-to-date
- přidal README popisující "místní" prohlášení (doc / TechNotes / README.local)
- přidal README popisující těkavé typy (doc / TechNotes / README.volatile)
- aktualizované README.comm diagnostika zmínit rychlé vidlice statistiky
- aktualizované různé soubory README
- Příklad Kódy
- umístil většinu příklady kódu z jazyka spec. do nového spec / podadresáři
- zlepšila primery / adresář:
- přidal nový nátěr pro použití postupů (primery / procedures.chpl)
- přidal základní nátěr pro domény (primery / domains.chpl)
- přejmenoval locales Primer locales.chpl a zdokonalil
- zlepšila distribucí primer a dodal Block-Cyklické a Replikované použití
- aktualizováno rozsah primer (primery / range.chpl)
- zlepšila iterátorů primer (primery / iterators.chpl)
- zlepšila její snížení primer (primery / reductions.chpl)
- přidané getCurrentTime () do časovače primer (primery / timers.chpl)
- přidal popisy typu aliasů a typů config proměnných primeru
- (viz primery / variables.chpl)
- zlepšila adresář HPCC / benchmarky
- přidal první verze HPCC PTRANS na HPCC / adresáře (ptrans.chpl)
- přidal čistší verzi HPCC HPL na HPCC / adresáře (hpl.chpl)
- přidal varianty / podadresář příkladů / HPCC vystavovat jiné přístupy
- přidal proudu-promoted.chpl ukázat využití podpory v globálním STREAM Triad
- přidal RA-cleanloop.chpl ukázat čistič (ale v současné době pomalejší) RA kernel
- zlepšené příklady na nejvyšší úrovni:
- přejmenován existující & quot; ahoj, svět & quot; příklady navrhnout logické pořadí čtení
- (viz příklady / ahoj * .chpl)
- přidal údaje paralelní a distribuované data paralelního ahoj, příklady svět
- (viz příklady / hello3-datapar.chpl, příklady / hello4-datapar-dist.chpl)
- přidal připomínky různé ahoj, příklady svět (příklady / ahoj * .chpl)
- aktualizovány všechny příklady současných jazykových sémantice
- Používejte 'proc' / 'ITER "spíše než" def "
- aktualizace tak, aby odrážely novou řadu sémantiku
- Plošina specifické Notes
- pro Cray XT / Cray XE, vylepšené jsou aprun a PBS-aprun odpalovací
- (viz & quot; Launcher specifické poznámky & quot; níže)
- na Cray XMT, přidána podpora pro paralelní smyčky přes rozsahy
- na Cray XMT, dodal generaci noalias pragmas na forall proměnných smyčky
- přidána podpora pro BSC Marenostrum včetně Docs a speciální raketomet
- (viz doc / platformy / README.marenostrum)
- Launcher specifické poznámky
- přidal možnosti odpalovací specifické pro --help schopnosti
- zlepšila šíření stavových exit kódů přes odpalovacích
- změnil odpalovací zařízení pro podporu exec-based (spíše než systém založený na) příkazy
- udělal odpalovací zařízení používat 'unlink' spíše než systém ("rm") pro odstranění dočasných souborů
- přidal launcher pro BSC Marenostrum
- snížený počet dočasných souborů používaných k zachycení výstupu "systému" Příkazy
- aprun vylepšení launcher:
- přidal --cc vlajku určit zadání CPU w / v uzlu
- přidal -q spustit spouštěč v tichém režimu
- přidal možnost ladění pomocí CHPL_LAUNCHER_DEBUG udržet tmp soubory kolem
- PBS-aprun vylepšení launcher:
- přidal --cc vlajku určit zadání CPU w / v uzlu
- přidal možnost ladění pomocí CHPL_LAUNCHER_DEBUG udržet tmp soubory kolem
- vyčistit výstup, jak se zbavit nějakého cizího tisku
- vyrobena podpora launcher náš testovací systém
- přidal --walltime a --queue vlajky na launcher jako alternativy k env. Vars.
- Compiler změny
- udělal kompilátoru tisk "pravda" / "false" v podpisech typu spíše než 1/0
- přidal config param "noRefCount" vypnout počítání referencí (vyzradit paměti)
- Compiler Flags
- přidali vlajku --print-callstack-on-error ukázat, co vedlo ke špatnému hovoru
- přidal --no-CODEGEN vlajku přeskočit kód generace a propojení fáze
- Interoperability změny
- přidal podporu pro extern C & quot; kurzy & quot; (Ukazatel-to-struct typy)
- přidána podpora pro externími consts (viz README.extern)
- Zlepšení Chybové hlášení
- přidal varování osiřelé "použití" prohlášení mimo deklarovaných modulů
- (např, "použijte M1; modul M2 {} 'by měla být typicky" modul M2 {využití M1;}')
- vyrobena Parse-time chybová zpráva použít standardní 'název souboru: lineno: "formátu
- generována chybová zpráva pro odkazuje na název třídy v primární metoda
- (např, "třída C {def Cm () {...}} 'nyní generuje chybovou zprávu)
- Opravy chyb / Nové Sémantické Kontroly (pro staré sémantiky)
- zabráněno typy konfiguračních před nastavit pomocí doby provedení příkazového řádku vlajky
- pevné schopnost kompilátoru zvládnout odbory bez poli
- stanovil snížení minloc / maxloc zvládnout prázdné rozsahy / podrozsahy hodnot
- opravena chyba, ve kterém byl tento argument "cesta" do souborů konstruktorům ignorována
- vyrobena prázdné odbory pracovat správně
- Opraven problém přetečení v Chunking až rozsahy pro distribuci / paralelizace
- opravena chyba zahrnující podporu pro prázdných externími typy záznamů
- opravena chyba zahrnující Externí funkce, které vracejí záznamy
- opravena chyba týkající se kopírování externí záznamy
- pevná realizace +/- subjektů na asociativní / řídké domény
- opravena chyba týkající se jména modulu filename bázi, které obsahují více "je.
- přidal chybové zprávy pro rozbalení / Exteriér / Interiér na nepravidelné domén
- přidal chybu pro konstruktéry / destruktory s uvedeným návratový typ
- opravena pár chyb týkajících se "rychle na" optimalizaci
- přidal kontrolu proti stavbě třídy bez uvedení generických pole
- Obalové změny
- přidal syntax zvýrazňovač kód pro GNU zdroj-zvýraznění
- (viz etc / source-zvýrazněný / README)
- zlepšené emacs Barvení podporu pro verze 22.x
- (viz etc / emacs / README)
- aktualizace vim syntaxe zbarvení, aby odrážely novou "proc" / "ITER" klíčová slova
- (viz etc / vim / README)
- přidal skript pro převod "využití" existující kódy DEF "na" iter '/' proc '
- (viz $ CHPL_HOME / util / convert-defs)
- odstraněny multirealm příklady a dokumentaci pro bytí času
- Third-Party Software změny
- aktualizován na verzi 1.16.1 GasNet
- přidal kopie BSC Nanos ++ a Sandia je Qthreads
- (viz třetí strany / README)
- dělal po instalaci krok pro GasNet, že mění absolutní cesty k relativnímu
- odstraněna PVM v současné době vzhledem k nestabilitě
- Runtime Library změny
- přidal single-národní prostředí úloh Layers pro Nanos ++ (BSC) a Qthreads (Sandia)
- několik vylepšení na runtime tasking vrstvy:
- přidal nové rozhraní pro mít tasking vrstva volání chpl_main ()
- změnil tasking funkcí init, aby maxThreadsPerLocale / callStackSize args
- přidal schopnost mez úkol rozhraní tasking vrstvy
- zlepšila runtime kód, aby se zabránilo používání synchronizaci vars před inicializace tasking
- odstranit makro-jící s forma tasking rozhraní; místo toho používat standardní názvy
- sjednocený pojmenování všech rutin úkolem vrstvy do chpl_sync _ * () a chpl_task _ * ()
- odstraněn požadavek na zavedení jednotného rozhraní proměnnou
- přestěhoval ukončení nití z FIFO tasking vrstvy do pthreads řezání závitů
- zjednodušené implementace synchronizace proměnných v pthread závitů vrstvy
- přestěhoval zodpovědnost za závitu se počítá z fifo tasking do pthread threading
- několik vylepšení na runtime komunikační vrstvy:
- restrukturalizaci komunikační rozhraní pro podporu délka / typu argumenty
- přidal rozhraní pro non-blokování dostat operace do komunikátoru. interface
- sjednotil všechny dálkové dostat operace používat CHPL_COMM_GET () makro
- refactored / přejmenovány záhlaví komunikačního rozhraní
- Testing System
- obrovsky testování výkonu a schopností grafů zlepšila
- (viz komentář na přední start_test pro dokumentaci)
- zlepšil podporu testovací systém pro úklid po sobě
- přidal schopnost, aby se zabránilo používání jakéhokoli indirection standardního vstupu
- přidal možnost poskytnout prediff volbu v celém systému
- přidána možnost používat nativní funkce časového limitu raketomet spíše než Python
- zlepšila jak testovací systém zabíjí test, který vyprší
- opravena chyba, ve kterém .preexec soubory pracoval pouze v případě, '.' Byl ve vaší cestě
- Vnitřní
- přidal --break-on-id kompilátor příznak pro vývojáře lokalizovat AST uzel vytváří
- lepší organizaci obsahu util / adresáře
- změnil způsob, jakým čísla verzí jsou počítány / zobrazí pro uživatele, SVN-založené
- přidána podpora pro úkoly dobrovolníka / závit pro konkrétní kód modulu
- přidal schopnost tisknout AST počty přidělených mezi každým průchodem
- přidal novou gdb alias kompilátoru --gdb: "loc" tiskne AST uzlu umístění
- výrazně zlepšila realizace pragmas / příznaků, aby se zabránilo chybové případy,
- odstraněno několik instancí zbytečných porovnávání řetězců v kompilátoru
- odstraněny náchylné k chybám využití CHPL_TASKS a CHPL_THREADS jako preprocesoru symboly
- přidal bestPractices dokumentace pro vývojáře (není součástí vydání)
- změnila vnitřní munging z '=' a '==' to 'ASSIGN "a" se rovná ", respektive
- přidal --print-id-on-error vývojářský vlajku tisknout AST ID o chybách
- zlepšila přísnost C ++ prototypu kontrolu
- přidal externí smlouvy přispěvatelem ke SVN stromu (ne ve verzi)
- přidal pojem vnitřních typů používaných kompilátorem, ale není uživatelem
Komentáře nebyl nalezen