Chapel egy új párhuzamos programozási nyelv által fejlesztett Cray Inc. részeként a DARPA által vezetett Nagy teljesítmény Computing Systems programot (HPC). Kápolna célja, hogy javítsa a termelékenységet a high-end számítógép-felhasználók, miközben szolgáló hordozható párhuzamos programozási modell, amely használható a nyersanyagárak klaszterek vagy asztali többmagos rendszereken. Kápolna arra törekszik, hogy jelentősen javítja a programozhatóság nagyszabású párhuzamos számítógépek, míg megfelelő, vagy verte a teljesítmény és a hordozhatóság jelenlegi programozási modellek, mint MPI.
A kápolna alkalmazás támogatja a többszálú végrehajtás modell segítségével magas szintű absztrakciói adatpárhuzamosság, feladat párhuzamosság, konkurencia, és beágyazott párhuzamosság. & Nbsp; kápolna locale típus lehetővé teszi a felhasználóknak, hogy pontosítsák és oka arról, hol van az adatok és feladatok a célarchitektúra érdekében hangolni a településen. Kápolna támogatja a globális néző adatok aggregátumok a felhasználó által meghatározott megvalósítások, amelyek lehetővé teszik műveleteket a megosztott adatokhoz struktúrákat kell kifejezni, természetes módon. Ellentétben sok korábbi magasabb szintű párhuzamos nyelvek, kápolna köré tervezték a változó felbontású filozófia, amely lehetővé teszi a felhasználóknak, hogy kezdetben írni nagyon elvont kódot, majd fokozatosan a további részletek, amíg azok olyan közel a készüléket az igényeiknek igényel. Kápolna támogatja kód újrafelhasználásának és a gyors prototípus keresztül objektum-orientált tervezés, írja következtetést, és jellemzői a generikus programozást.
Kápolna tervezte az első elvek helyett kiterjesztésével egy már meglévő nyelvből. Ez egy rendkívül fontos blokk-szerkezetű nyelvet, úgy tervezték, hogy könnyen megtanulható felhasználói számára a C, C ++, Fortran, Java, Perl, Matlab, és más népszerű nyelveken. Míg kápolna épül fogalmak és szintaxis sok korábbi nyelvek, a párhuzamos funkciók legközvetlenebb módon befolyásolni ZPL, nagyteljesítményű Fortran (HPF), és a Cray MTA & trade; / Cray adás & trade; kiterjesztéseket C és Fortran.
Mi az új ebben a kiadásban:
- Highlights (a részleteket lásd alább)
- Split "def" kulcsszót "proc" (az eljárást), és "iter" (a bejárók)
- (lásd "$ CHPL_HOME / util / convert-defs --help" segítségért frissítése meglévő kódok)
- hozzáadott "Replikált forgalmazási és továbbfejlesztett" blokk-ciklikus "forgalmazás
- (lásd & quot; szabványos kiadások & quot; a spec és példák / alapozók / distributions.chpl)
- hozzá egyetlen locale feladat rétegek számára Nanos ++ (BSC) és Qthreads (Sandia)
- (lásd doc / README.tasks)
- nagy átdolgozása tartományban szemantika és végrehajtása
- (lásd & quot; szemantikus Változások / megváltoztatása Chapel Language & quot; alább részletesen)
- kezdeti támogatást az illékony típusok: bool, int, uint, valós, képzetes
- (lásd doc / technikai megjegyzéseket / README.volatile)
- támogatását extern consts és osztályok (pointerek-to-struktúrákat)
- (lásd doc / technikai megjegyzéseket / README.extern)
- továbbfejlesztett támogatása adatpárhuzamosság a Cray adás
- széleskörű javítása minta kódok a példákban / directory
- (lásd "példa kódok 'alatt, és példákat / README)
- hozzá leginkább kód példák a spec egy új példák / directory
- (lásd a példákat / spec / *)
- hozzá a műszaki feljegyzést, a felhasználó által definiált tartomány térképes felületen
- (lásd doc / technikai megjegyzéseket / README.dsi)
- kiterjedt frissítéseket a nyelvi specifikáció
- (lásd "Dokumentáció" alább)
- több fejlesztést a futásidejű tasking és kommunikációs rétegek
- (lásd & quot; Runtime Library Változások & quot; alább)
- A szintaktikai / elnevezése Változások
- Split "def" kulcsszót "proc" (az eljárást), és "iter" (a bejárók)
- (lásd "$ CHPL_HOME / util / convert-defs --help" segítségért frissítése meglévő kódok)
- átnevezték "számtani" domain / tömbök "szögletes" domain / tömbök
- hozzáadott támogatása lebegőpontos literál a formában "1.E. ..."
- (Korábban csak "1E ..." és a "1.0E ..." segítették)
- szemantikus Változások / megváltoztatása Kápolna Nyelv
- több fejlesztést tartományok (lásd "tartományok" fejezet a nyelvi spec):
- hozzá a koncepció az igazodás, jelezve a beállítás modulo | léptekkel |
- hozzá egy 'align' operátor és a lekérdezés a tartományok megadásához / lekérdezés igazítás
- (pl: "1..10 3 align 2 '= & gt;' 2, 5, 8 '2. óta == 5 == 8, mod 3)
- megadott == a tartományok tekintetében a integer szekvenciák általuk generált
- megadott azonosítószám (R1, R2) megmondani, hogy r1 és r2 szemantikailag azonos
- definiált "# k 'K & lt; 0 bekezdését, & quot; számíthat a végén a tartomány & quot;
- hozzáadott "első", "last", "alignedLow," alignedHigh "módszerek tartományok
- (pl: "1..10 által -2 '= & gt; első == 10, utóbbi == 2, alignedLow = 2, alignedHigh = 10)
- hozzátette, támogatja a különböző új sorozat lekérdezési funkciók
- (pl alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- hozzáadott támogatása illékony bool, int, uint, valós és képzetes típusú
- (lásd doc / technikai megjegyzéseket / README.volatile)
- hozzáadott end-of-fájlok ellenőrzése a fájltípus
- (például., "Miközben! Infile.eof ...")
- távolítani támogatás kezelésére "visszatérés" a bejáró a "hozam"
- (pl változás "iter ize () {return x;} 'a' iter ize () {hozam x; visszatérés;})
- hozzátette, támogatja a hivatkozó modulok nélkül "use'-nek nekik
- (pl modul M1 {var x ...} modul M2 {...} M1.x ... most jogi)
- hozzá a callStackSize lekérdezést a locale típusú
- (pl "here.callStackSize" visszatér a hívás verem mérete az aktuális locale)
- távolítani a korábban szükséges pontosvessző végétől enum nyilatkozatok
- (pl "enum színek {piros, kék, zöld}" most jogi, korábban szükséges ";")
- hozzáadott támogatása egyetlen utána következőt végén enum listák
- (pl "enum színek {piros, kék, zöld,}" most jogi)
- távolítani támogatása +/- szereplők négyszögletes területekre; Használja Fordítás ()
- Az újonnan megvalósított funkciók
- végrehajtott == /! = Négyszögletű, asszociatív, és ritka domain
- szabványos kiadások
- hozzá egy első tervezetét "Replikált forgalmazási adatok tárolására redundáns
- (lásd a példákat / alapozók / distributions.chpl)
- jobb 'Block-ciklikus ", elegendő a megfelelő végrehajtása HPCC PTRANS és HPL
- (lásd a példákat / hpcc / ptrans.chpl, hpl.chpl; példák / alapozók / distributions.chpl)
- távolítani redundanciát specifikációja vezető bejárók között domain / tömbök
- Normál modulok
- hozzá INFINITY és a Nan állandók a Math.chpl modul
- (lásd "Math" & quot; Normál modulok & quot; nyelvi spec)
- hozzáadott isinf () és isFinite () tesztrutinok a Math.chpl modul
- (lásd "Math" & quot; Normál modulok & quot; nyelvi spec)
- hozzá egy fél tucat rutin, hogy a GMP.chpl modul
- Dokumentáció
- hozzáadott egy új műszaki feljegyzést, a felhasználó által definiált tartomány térképes felületen
- (lásd doc / technikai megjegyzéseket / README.dsi)
- készült számos fejlesztést a nyelvi specifikáció
- jelentős felülvizsgálatok a Domains fejezetet a jobb érthetőség kedvéért / pontosság
- javult, és egységes szerkezete Records és osztályok fejezetek
- jelentős felülvizsgálatok a Domain Maps fejezetet a jobb érthetőség kedvéért / pontosság
- elemzi például kódok biztosítani a határokon példákkal / spec / programok
- tisztázni jogszerűségét címke / szünet / ezzel párhuzamosan folytassa hurkok
- frissítette a leírásokat olvasni [ln] / levelet [ln]
- rögzített néhány probléma fájlt területeken rendelési
- átformálta a specifikáció, mint egy "könyvet" LaTeX
- különböző kisebb javítások helyesírási / hibák
- javult meghatározásokat / leírás több szempontból
- hozzáadott dokumentációja locale.name
- és számos egyéb változás ...
- frissítette gyors bemutató dokumentum tartalmazza DEF- & gt; proc / iter változás, igazítsa op.
- Átírta / átszervezték README.extern tisztázni magyarázatokat, és hogy up-to-date
- hozzá a README leírja a "helyi" nyilatkozatot (doc / technikai megjegyzéseket / README.local)
- hozzá a README leíró illékony típusú (doc / technikai megjegyzéseket / README.volatile)
- frissítette README.comm-diagnosztika is beszélve gyors fork statisztikák
- frissítette különböző README fájlok
- Példa kódok
- helyezte a legtöbb kód példák a nyelvi spec. egy új spec / könyvtárban
- javult a primer / könyvtárban:
- hozzáadott egy új alapozó eljárások alkalmazásával (primer / procedures.chpl)
- hozzá az alap alapozó domainek (primer / domains.chpl)
- átnevezte a helyszíneken alapozót locales.chpl és tökéletesítettük
- javult a disztribúciók alapozó és hozzáadott blokk-ciklikus és a lemásolt felhasználási
- frissítette a tartomány primer (primer / range.chpl)
- javult a bejárók primer (primer / iterators.chpl)
- javult a csökkentések primer (primer / reductions.chpl)
- hozzáadott getCurrentTime () az időzítő primer (primer / timers.chpl)
- hozzáadott leírásai típusú álnevek és config típusú változókkal primer
- (lásd alapozók / variables.chpl)
- javult hpcc / referenciaértékek directory
- hozzáadott első változata HPCC PTRANS hogy hpcc / könyvtárban (ptrans.chpl)
- hozzáadott tisztább változata HPCC HPL hogy hpcc / könyvtárban (hpl.chpl)
- hozzá a variánsok / könyvtárban, hogy példát / hpcc mutatnak más megközelítések
- hozzáadott patak-promoted.chpl megmutatni használata promóció globális STREAM Triad
- hozzáadott RA-cleanloop.chpl mutatni tisztább (de jelenleg lassabb) RA kernel
- javult felső szintű példák:
- átnevezték meglévő & quot; hello, world & quot; példák arra utalnak logikai felolvasási sorrendben
- (lásd a példákat / helló * .chpl)
- hozzáadott adatok párhuzamos és elosztott adatok párhuzamos hello, world példák
- (lásd a példákat / hello3-datapar.chpl, példák / hello4-datapar-dist.chpl)
- megjegyzéseket fűzött a különböző hello, világ példák (examples / helló * .chpl)
- frissítve mind példák a jelenlegi nyelvi szemantika
- 'proc' / 'ITER "helyett" def "
- frissülnek sor új szemantika
- Platform-specifikus Notes
- A Cray XT / Cray XE, javult a aprun és a PBS-aprun hordozórakéták
- (lásd & quot; Launcher-specifikus jegyzetek & quot; alább)
- A Cray adás, hozzáadott támogatása párhuzamos hurkok feletti tartományban
- A Cray adás, hozzáadott generációs noalias pragmák hogy forall loop változók
- hozzáadott támogatása BSC Marenostrum beleértve docs, és egy különleges launcher
- (lásd doc / platformok / README.marenostrum)
- Launcher-specifikus jegyzetek
- hozzáadott launcher-specifikus opciók, --help képesség
- javult terjedése exit status kódok segítségével hordozórakéták
- változott hordozórakéták, hogy támogassa exec-alapú (és nem rendszer alapú) parancsok
- tett hordozórakéták használni "unlink" helyett rendszert ("rm"), hogy távolítsa el az ideiglenes fájlokat
- hozzá egy launcher BSC Marenostrum
- csökkentett számú ideiglenes fájlokat rögzítésére használt kimeneti "rendszer" parancsok
- aprun launcher fejlesztések:
- hozzá a --cc zászló adja CPU feladat w / egy node
- hozzá a -q zászló fut a hordozórakéta csendes üzemmódban
- hozzáadott hibakereső képesség keresztül CHPL_LAUNCHER_DEBUG tartani tmp fájlokat körül
- PBS-aprun launcher fejlesztések:
- hozzá a --cc zászló adja CPU feladat w / egy node
- hozzáadott hibakereső képesség keresztül CHPL_LAUNCHER_DEBUG tartani tmp fájlokat körül
- kitakarította kimenetet megszabadulni néhány felesleges nyomtatás
- tett launcher támogatást a tesztelési rendszer
- hozzá --walltime és --queue zászlók launcher alternatívájaként az ENV. Vars.
- Compiler Változások
- tette a fordító print "true" / "false" out típusú aláírások helyett 1/0
- hozzáadott config param "noRefCount" letiltani referencia számlálás (szivároghat memória)
- Compiler Flags
- hozzá a --print-callstack-on-error flag megmutatni, hogy mi vezetett a rossz hívás
- hozzá a -no-CODEGEN zászlót, hogy kihagyja a kódot generációs és összekötő szakasza
- Az interoperabilitás Változások
- hozzáadott támogatása extern C & quot; osztályok & quot; (Pointer-to-struct típus)
- hozzáadott támogatása extern consts (lásd README.extern)
- Hibaüzenet Fejlesztések
- Figyelmeztető árva "használat" nyilatkozatai kívül kijelentette modulok
- (pl "használja M1; modul M2 {}" tipikusan "modul M2 {használata M1;})
- tett parse-time hibaüzenet a szabványos "fájlnév: lineno:" format
- hibaüzenetet generált hivatkozhatunk olyan osztály neve egy általános módszert
- (pl 'class C {def cm-es () {...}}' most hibaüzenetet generál)
- Hibajavítások / New szemantikus Ellenőrzések (régi szemantika)
- megakadályozta config típusú attól, hogy beállítása a végrehajtási idő parancssori zászlók
- fix a fordító is képes kezelni, a szakszervezetek nélkül mezők
- rögzítette a minloc / maxloc csökkentések kezelni üres tartományok / részintervallumokat értékek
- Javítva egy hiba, amely a "pálya" érv, hogy a fájl konstruktőrök figyelmen kívül hagyták
- üríteni szakszervezetek működnek megfelelően
- rögzített egy túlfolyó kérdés dobogó fel tartományok elosztó / párhuzamosítást
- Javítva egy hiba járó támogatást üres extern bejegyzéstípusokat
- Javítva egy hiba járó extern visszatérő függvények bejegyzések
- Javítva egy hiba kapcsolatos másol külső rekordot
- fix végrehajtása +/- szereplők asszociatív / gyér domain
- Javítva egy hiba kapcsolatos fájlnév-alapú modul nevét tartalmazó többszörös ". Által
- hozzáadott hibaüzeneteket expand / külső / belső szabálytalan domain
- hozzá egy hibát konstruktőrök / destruktor a megadott visszatérési típus
- rögzített egy pár hibát vonatkozó "gyors" optimalizálás
- hozzá egy csekket ellen építése osztályok meghatározása nélkül generikus mezők
- Csomagolás Változások
- hozzáadott szintaxis kiemelő kódot GNU forrás-highlight
- (lásd etc / forrás-highlight / README)
- javult emacs színezés támogatása verzió 22.x
- (lásd etc / emacs / README)
- frissítésekről vim szintaxis az újabb "proc" / "ITER kulcsszavak
- (lásd etc / vim / README)
- hozzá egy script átalakítására meglévő kódok használata "def", hogy "ITER '/' proc '
- (lásd $ CHPL_HOME / util / convert-defs)
- távolítani multirealm példák és dokumentáció egyelőre
- külső szoftverfejlesztők Változások
- frissítve GASNet verzióra 1.16.1
- hozzáadott példányban BSC Nanos ++ és Sandia a Qthreads
- (lásd harmadik fél / README)
- tett egy post-install lépést GASNet amely megváltoztatja abszolút elérési útját relatív
- távolítani PVM egyelőre instabilitás miatti
- Runtime Library Változások
- hozzá egyetlen locale feladat rétegek számára Nanos ++ (BSC) és Qthreads (Sandia)
- több fejlesztést a futási tasking réteg:
- hozzáadott egy új felület, amiért a tasking réteg hívás chpl_main ()
- változott tasking init függvény, hogy maxThreadsPerLocale / callStackSize args
- hozzá egy feladat hozamot képes a feladat ellátására réteg felületén
- javult runtime-kód használatának elkerülésére sync vars előtt inicializálása task
- távolítani makro-esített forma tasking felület; szabványos nevek helyett
- egységes elnevezési összes feladat réteg rutinok chpl_sync _ * () és chpl_task _ * ()
- távolítani a követelmény, hogy hajtsák végre az egységes változó interface
- költözött megszűnése szálat a FIFO tasking réteg pthreads threading
- egyszerűsített végrehajtását sync változók a pthread threading réteg
- költözött felelősséget szál számít honnan FIFO tasking hogy pthread threading
- több fejlesztést a futási kommunikációs réteg:
- átalakította a kommunikációs interfészt támogató hossz / típus érvek
- hozzá egy interfész nem blokkoló kap műveletek a kommunikációs. interface
- egységes összes távoli kap műveletek használni CHPL_COMM_GET () makró
- refactored / átnevezték kommunikációs felület fejléc
- Testing System
- jelentősen javult a teljesítmény tesztelés és grafikus képességekkel
- (lásd kommentek elején start_test dokumentációhoz)
- javult a vizsgálati rendszer támogatja tisztítás után önmagában
- hozzáadott képes, hogy ne használjon semmilyen indirekciónak az stdin
- hozzá egy lehetőséget, hogy egy egész rendszerre kiterjedő prediff lehetőség
- hozzáadott képes használni a launcher natív timeout funkció helyett Python
- javult, hogy a vizsgáztató rendszer megöl egy tesztet, amely esetből
- Javítva egy hiba, amely .preexec fájlokat csak dolgozott, ha "." volt, ami a pálya
- Belső
- hozzá a --break-on-id fordító zászlót a fejlesztők számára, hogy keresse AST node teremt
- szervezésének javítása util / könyvtár tartalma
- megváltoztatta a verziószámok számítjuk / jelenik SVN-alapú felhasználók
- hozzáadott támogatása feladat- / thread-specifikus modul kódját
- hozzá a képessége, hogy nyomtassa ki a AST számít között megosztani minden menetben
- hozzáadott egy új gdb alias meg lefordítani --gdb: "Loc" kinyomtat egy AST csomópont helyét
- jelentősen javult végrehajtása pragmák / zászlók elkerülése előfordult hibák
- távolítani több esetben felesleges karakterlánc összehasonlításokat a fordító
- távolítani hibalehetőséget használata CHPL_TASKS és CHPL_THREADS mint preprocessor szimbólumok
- hozzáadott bestPractices dokumentációját fejlesztők (nem szerepel a kiadás)
- megváltoztatta belső munging az '=' és a '==' a 'ASSIGN "és" Egyenlõ "rendre
- hozzá a --print-id-on-error fejlesztő zászló nyomtatni AST ID hibákra
- javult a szigorú C ++ prototípus ellenőrzése
- hozzáadott külső közreműködő megállapodások az SVN-fa (nem a kiadás)
- hozzá a fogalom belső által használt típusokat a fordító, de nem a felhasználó
Hozzászólás nem található