kapel is 'n nuwe parallel programmeertaal deur Cray Inc ontwikkel as deel van die DARPA-geleide program High Produktiwiteit Computing Systems (HPCS). Kapel is ontwerp om die produktiwiteit van 'n hoë-end rekenaar gebruikers, terwyl dit ook dien as 'n draagbare parallelle programmering model wat gebruik kan word op kommoditeit clusters of lessenaar multicore stelsels te verbeter. Kapel streef daarna om aansienlik verbeter die programmeerbaar van grootskaalse parallel rekenaars terwyl ooreenstem of die klop van die prestasie en draagbaarheid van die huidige ontwikkeling modelle soos MPI.
Die Kapel app ondersteun 'n multi uitvoering model via 'n hoë-vlak abstraksies vir data parallelisme, taak parallelisme, concurrency en geneste parallelisme & nbsp;. Kapel se land tipe kan gebruikers spesifiseer en die rede oor die plasing van data en take op 'n teiken argitektuur in orde om te stem vir die omgewing. Kapel ondersteun globale siening data aggregate met die gebruiker-gedefinieerde implementering, toelaat bedrywighede op versprei datastrukture word uitgedruk in 'n natuurlike manier. In teenstelling met baie vorige hoër vlak parallel tale, word Chapel ontwerp om 'n Multi filosofie, toelaat gebruikers aanvanklik skryf baie abstrakte kode en dan geleidelik voeg meer detail totdat hulle so naby aan die masjien as hul behoeftes vereis. Kapel ondersteun kode hergebruik en vinnige prototipering via objekgeoriënteerde ontwerp, tipe afleiding en funksies vir generiese programmering.
Kapel is ontwerp vanuit eerste beginsels eerder as deur die uitbreiding van 'n bestaande taal. Dit is 'n noodsaaklik-blokgestruktureerde taal, ontwerp om maklik om te leer vir die gebruikers van C, C ++, Fortran, Java, Perl, Matlab, en ander gewilde tale te wees. Terwyl kapel bou voort op konsepte en sintaksis van baie vorige tale, sy parallel funksies mees direk beïnvloed deur ZPL, hoë-werkverrigting Fortran (HPF), en die Cray MTA en handel; / Cray XMT en handel; uitbreidings aan C en Fortran
Wat is nuut in hierdie release:.
- Hoogtepunte (sien hieronder vir besonderhede)
- split 'def' sleutelwoord in 'proc (vir prosedures) en' iter (vir iterators)
- (sien '$ CHPL_HOME / util / omskep-defs help uit te voer' vir hulp opdatering bestaande kodes)
- bygevoeg 'gerepliceerd' verspreiding en verbeterde 'Blok-Cyclic' verspreiding
- (sien & quot; Standard Distributions & quot; in spec en voorbeelde / primers / distributions.chpl)
- bygevoeg enkel-land taak lae vir Nanos ++ (BSC) en Qthreads (Sandia)
- (sien doc / README.tasks)
- groot herbewerking van reeks semantiek en implementering
- (sien & quot; Semantic Wysigings / Veranderinge aan Chapel taal & quot; onder vir detail)
- aanvanklike ondersteuning vir vlugtige tipes: Bool, int, uint, real, verbeelden
- (sien doc / technotes / README.volatile)
- ondersteuning vir eksterne consts en klasse (pointers-tot-structs)
- (sien doc / technotes / README.extern)
- verbeter ondersteuning vir data parallelisme op die Cray XMT
- uitgebreide verbeterings aan die monster kodes in die voorbeelde / directory
- (sien 'Voorbeeld kodes' hieronder en voorbeelde / README)
- mees kode voorbeelde bygevoeg die spec om 'n nuwe voorbeelde / directory
- (sien voorbeelde / spec / *)
- bygevoeg 'n tegniese kennis wat die gebruiker-gedefinieerde domein kaart koppelvlak
- (sien doc / technotes / README.dsi)
- uitgebreide updates die taalspesifikasie
- (sien 'Dokumentasie "hieronder)
- 'n paar verbeteringe aan die runtime tasking en kommunikasie lae
- (sien & quot; Runtime Biblioteek Wysigings & quot; onder)
- Sintaktiese / Naming Wysigings
- split 'def' sleutelwoord in 'proc (vir prosedures) en' iter (vir iterators)
- (sien '$ CHPL_HOME / util / omskep-defs help uit te voer' vir hulp opdatering bestaande kodes)
- herdoop 'rekenkundige' domains / skikkings om 'n reghoekige 'domains / skikkings
- bygevoeg ondersteuning vir drywende punt literals van die vorm '1.E ... "
- (voorheen, net '1e ... "en" 1.0e ... "is ondersteun)
- Semantic Wysigings / Veranderinge aan Chapel taal
- 'n paar verbeteringe aan reekse (sien 'Ranges 'n hoofstuk in die taal spec):
- bygevoeg 'n konsep van belyning om 'n aanpassing modulo dui | stride |
- 'n bygevoeg 'align' operateur en navraag te wissel na / navraag belyning spesifiseer
- (bv '1..10 deur 3 align 2' = & gt; '2, 5, 8' sedert 2 == == 5 8, mod 3)
- gedefinieer == op reekse in terme van die heelgetal reekse wat hulle genereer
- gedefinieer ident (R1, R2) om te sê of R1 en R2 is semanties identiese
- '# k' gedefinieer vir k & lt; 0 as betekenis & quot; tel van die einde van die reeks & quot;
- bygevoeg "eers", "laaste", "alignedLow," alignedHigh 'metodes om reekse
- (bv '1..10 deur -2' = & gt; eerste == 10, laaste == 2, alignedLow = 2, alignedHigh = 10)
- bygevoeg ondersteuning vir 'n verskeidenheid van nuwe reeks navraag funksies
- (bv alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- bygevoeg ondersteuning vir vlugtige Bool, int, uint, real, en tipes verbeelden
- (sien doc / technotes / README.volatile)
- 'n einde-van-lêer tjek by die lêer tipe
- (Bv., "Terwyl! Infile.eof ...)
- verwyder ondersteuning vir die behandeling van 'terugkeer' in Iterator as 'n 'opbrengs'
- (bv verandering 'iter cat () {terugkeer x;}' na 'iter cat () {opbrengs x; terugkeer;}')
- ondersteuning bygevoeg verwysing modules sonder om eers 'use'-ing hulle
- (bv module M1 {var x ...} module M2 {... M1.x ...} is nou reg)
- 'n callStackSize navraag by die tipe land
- (bv 'here.callStackSize' gee die oproep stapel grootte van die huidige land)
- verwyder die voorheen-vereiste kommapunt aan die einde van enum verklarings
- (bv 'enum kleure {rooi, blou, groen}' is nou reg; voorheen nodig ';')
- bygevoeg ondersteuning vir 'n enkele sleep komma aan die einde van enum lyste
- (bv 'enum kleure {rooi, blou, groen,}' is nou reg)
- verwyder ondersteuning vir +/- operateurs op reghoekige domeine; gebruik te vertaal ()
- nuut geïmplementeerde funksies
- geïmplementeer == /! = Vir vierkantige, assosiatiewe en yl domeine
- Standard Distributions
- bygevoeg 'n eerste-konsep 'gerepliceerd' verspreiding vir die berging van data kere
- (sien voorbeelde / primers / distributions.chpl)
- verbeterde 'Blok-Cyclic, voldoende is om korrek te implementeer HPCC PTRANS en HPL
- (sien voorbeelde / hpcc / ptrans.chpl, hpl.chpl; voorbeelde / primers / distributions.chpl)
- verwyder ontslag in spesifikasie van die leier iterators tussen domains / skikkings
- Standard Modules
- INFINITY en NAN konstantes bygevoeg word om die module Math.chpl
- (sien 'Math' onder & quot; Standard Modules & quot; in die taal spec)
- bygevoeg isinf () en isfinite (toets) roetines die Math.chpl module
- (sien 'Math' onder & quot; Standard Modules & quot; in die taal spec)
- 'n half dosyn meer roetines bygevoeg word om die module GMP.chpl
- Dokumentasie
- bygevoeg 'n nuwe tegniese kennis wat die gebruiker-gedefinieerde domein kaart koppelvlak
- (sien doc / technotes / README.dsi)
- het baie verbeterings aan die taalspesifikasie
- groot hersiening van die hoofstuk Domains te verbeter duidelikheid / akkuraatheid
- verbeter en verenigde struktuur van Records en klasse hoofstukke
- groot hersiening van die hoofstuk Maps Domain te verbeter duidelikheid / akkuraatheid
- vernoem voorbeeld kodes kruis-verwysing na voorbeelde te verskaf / spec / programme
- uitgeklaar die wettigheid van etiket / break / voortgaan in parallel loops
- opgedateer die beskrywings van lees [ln] / skryf [ln]
- 'n paar probleme in die lêer velde bestel vaste
- microverfilmde die spesifikasie as 'n 'boek' in LaTeX
- verskeie klein fixes van typos / foute
- verbeter definisies / beskrywings van verskeie terme
- bygevoeg dokumentasie van locale.name
- en baie ander veranderinge ...
- opgedateer vinnige verwysing dokument def- & gt insluit; proc / iter verandering, sluit op .
- herskryf / herorganiseer README.extern te verduidelik verduidelikings en bring up-to-date
- bygevoeg 'n beskrywing van die README 'plaaslike 'n verklaring (doc / technotes / README.local)
- bygevoeg 'n README beskryf vlugtige tipes (doc / technotes / README.volatile)
- opgedateer README.comm-diagnose vinnig vurk statistieke te noem
- opgedateer verskeie README lêers
- Voorbeeld kodes
- geplaas mees kode voorbeelde uit die taal spec. om 'n nuwe spec / subdirectory
- verbeter die primers / directory:
- bygevoeg 'n nuwe primer vir die gebruik van prosedures (primers / procedures.chpl)
- 'n basiese bygevoeg primer vir domeine (primers / domains.chpl)
- herdoop die locales primer locales.chpl en verbeterde dit
- verbeter die uitkerings primer en bygevoeg Blok-Cyclic en gerepliceerd gebruike
- opgedateer die reeks primer (primers / range.chpl)
- verbeter die iterators primer (primers / iterators.chpl)
- verbeter die vermindering primer (primers / reductions.chpl)
- bygevoeg getCurrentTime () om die timers primer (primers / timers.chpl)
- beskrywings van die tipe aliasse en tipes config bygevoeg veranderlikes primer
- (sien primers / variables.chpl)
- verbeter hpcc / maatstawwe directory
- eerste weergawe van HPCC PTRANS bygevoeg hpcc / gids (ptrans.chpl)
- skoner weergawe van HPCC HPL bygevoeg hpcc / gids (hpl.chpl)
- 'n variante / subdirectory bygevoeg voorbeelde / hpcc om ander benaderings uitstal
- bygevoeg stroom-promoted.chpl gebruik te maak van die bevordering wys in die globale STREAM Triad
- bygevoeg ra-cleanloop.chpl skoner wys (maar tans stadiger) RA kern
- verbeter top-vlak voorbeelde:
- herdoop bestaande & quot; hello, wêreld & quot; voorbeelde om 'n logiese lees orde stel
- (sien voorbeelde / hallo * .chpl)
- bygevoeg data parallelle en verspreide data parallel hello, wêreld voorbeelde
- (sien voorbeelde / hello3-datapar.chpl, voorbeelde / hello4-datapar-dist.chpl)
- bygevoeg kommentaar aan die verskillende hello, wêreld voorbeelde (voorbeelde / hallo * .chpl)
- opgedateer almal voorbeelde om huidige taal semantiek
- gebruik 'proc' / 'iter' eerder as 'def'
- update nuwe reeks semantiek weerspieël
- Platform spesifieke Notes
- vir Cray XT / Cray XE, die verbetering van die aprun en PBS-aprun laaiers
- (sien & quot; Launcher spesifieke notas & quot; onder)
- vir Cray XMT, bygevoeg ondersteuning vir parallel loops oor reekse
- vir Cray XMT, geslag noalias pragmas bygevoeg forall lus veranderlikes
- bygevoeg ondersteuning vir BSC se MareNostrum insluitend dokumente en 'n spesiale lanseerder
- (sien doc / platforms / README.marenostrum)
- Launcher spesifieke notas
- bygevoeg lanseerder spesifieke opsies te help uit te voer vermoë
- verbeter voortplanting van uitgang status kodes deur laaiers
- verander laaiers te ondersteun-exec gebaseer (eerder as stelsel wat gebaseer is) beveel
- gemaak laaiers gebruik 'Ontkoppel' eerder as stelsel ('rm') om tydelike lêers verwyder
- bygevoeg 'n lanseerder vir BSC se MareNostrum
- verminderde aantal tydelike lêers wat gebruik word om uitset van 'stelsel' te vang beveel
- aprun lanseerder verbeterings:
- bygevoeg 'n --cc vlag CPU opdrag spesifiseer w / in 'n knoop
- bygevoeg 'n -q vlag die lanseerder in die stille af hardloop
- bygevoeg debug vermoë via CHPL_LAUNCHER_DEBUG om tmp lêers rondom hou
- PBS-aprun lanseerder verbeterings:
- bygevoeg 'n --cc vlag CPU opdrag spesifiseer w / in 'n knoop
- bygevoeg debug vermoë via CHPL_LAUNCHER_DEBUG om tmp lêers rondom hou
- skoongemaak uitset om ontslae te raak van 'n paar vreemde druk
- gemaak lanseerder ondersteuning ons toets stelsel
- bygevoeg --walltime en --queue vlae te lanseerder as alternatiewe tot ENV. VARs.
- Compiler Wysigings
- het die samesteller druk 'waar' / 'onwaar' in die tipe handtekeninge eerder as 1/0
- bygevoeg config param 'noRefCount' om te verwys tel skakel (mag geheue lek)
- Compiler Flags
- bygevoeg 'n --print-callstack-op-fout vlag om te wys wat gelei het tot 'n slegte oproep
- bygevoeg 'n --no-codegen vlag die kode generasie en koppel fase slaan
- interoperabiliteit Wysigings
- bygevoeg ondersteuning vir eksterne C & quot; klasse & quot; (Pointer-tot-struct tipes)
- bygevoeg ondersteuning vir eksterne consts (sien README.extern)
- Fout Boodskap Verbeterings
- bygevoeg 'n waarskuwing wees gelaat 'gebruik' state buite verklaar modules
- (bv 'gebruik M1; module M2 {} "moet tipies' module M2 {gebruik M1;} ')
- gemaak parse-time fout boodskap gebruik die standaard 'filename: Lineno: "formaat
- gegenereer 'n fout boodskap vir verwysing na 'n klas naam in 'n primêre metode
- (bv 'n klas C {def cm () {...}} 'genereer nou 'n fout boodskap)
- Bug fixes / New Semantic Checks (vir die ou semantiek)
- verhoed tipes config uit ingestel met behulp van uitvoering tyd opdrag-lyn vlae
- vaste vermoë samesteller se vakbonde te hanteer met geen velde
- die vermindering minloc / maxloc vaste leë reekse / subranges waardes hanteer
- Vaste 'n fout in die 'pad 'n argument lêer vervaardigerskampioenskap is geïgnoreer
- gemaak leë vakbonde korrek te werk
- 'n oorloop kwessie in brokkies up reekse vir verspreiding / parallelliseren vaste
- Vaste 'n fout wat ondersteuning vir leë eksterne tipes rekord
- Vaste 'n fout wat eksterne funksies wat rekords terug
- Vaste 'n fout met betrekking tot die kopiëring eksterne rekords
- vaste implementering van +/- operateurs op assosiatiewe / yl domeine
- Vaste 'n fout met betrekking tot-filename gebaseer module name met verskeie 'se.
- bygevoeg fout boodskappe vir brei / buite / binne op onreëlmatige gebiede
- 'n fout bygevoeg vir vervaardigerskampioenskap / destructors met 'n bepaalde soort terugkeer
- vaste 'n paar van die foute met betrekking tot die 'fast op' optimization
- 'n tjek teen die bou van klasse bygevoeg sonder vermelding generiese velde
- Wysigings Packaging
- bygevoeg sintaksis highlighter kode vir GNU bron-hoogtepunt
- (sien etc / bron-hoogtepunt / README)
- verbeter Emacs kleur ondersteuning vir weergawe 22.x
- (sien etc / Emacs / README)
- updates te vim sintaksis kleur om nuwe 'proc' weerspieël / 'iter' sleutelwoorde
- (sien etc / vim / README)
- bygevoeg 'n script vir die omskakeling se gebruik van 'def bestaande kodes' na 'iter' / 'proc'
- (sien $ CHPL_HOME / util / omskep-defs)
- verwyder multirealm voorbeelde & dokumentasie vir die oomblik
- Derde-party sagteware wysigings
- opgedateer GASNet weergawe 1.16.1
- bygevoeg afskrifte van BSC se Nanos ++ en Sandia se Qthreads
- (sien derde party / README)
- 'n post-installasie stap vir GASNet dat absolute paaie verander na relatiewe
- verwyder PVM vir die oomblik as gevolg van onstabiliteit
- Runtime Biblioteek Wysigings
- bygevoeg enkel-land taak lae vir Nanos ++ (BSC) en Qthreads (Sandia)
- 'n paar verbeteringe aan die runtime tasking laag:
- bygevoeg 'n nuwe koppelvlak vir die feit dat die tasking laag oproep chpl_main ()
- verander tasking init funksie om maxThreadsPerLocale / callStackSize argumente neem
- 'n taak opbrengs vermoë by die tasking laag koppelvlak
- verbeter runtime kode om te verhoed dat sync Vars voor initializing tasking
- verwyder makro-ized vorm van tasking koppelvlak; met behulp van standaard name in plaas
- verenigde benaming van alle taak laag roetines chpl_sync _ * () en chpl_task _ * ()
- verwyder vereiste om die enkele veranderlike koppelvlak implementeer
- geskuif beëindiging van drade van EIEU tasking laag pthreads threading
- vereenvoudig implementering van sync veranderlikes in die pthread threading laag
- geskuif verantwoordelikheid vir draad tel van EIEU tasking te threading pthread
- 'n paar verbeteringe aan die runtime kommunikasie laag:
- herstruktureer die kommunikasie koppelvlak lengte / tipe argumente ondersteun
- bygevoeg 'n koppelvlak vir nie-blokkeer kry bedrywighede na die komm. koppelvlak
- verenig al remote kry bedrywighede CHPL_COMM_GET () makro gebruik
- refactored / herdoop die kommunikasie koppelvlak headers
- Toets System
- aansienlik verbeter die prestasietoetsing en grafiese vermoëns
- (sien kommentaar op die voorkant van start_test dokumentasie)
- verbeter se steun die toets stelsel vir skoonmaak na homself
- bygevoeg vermoë om te verhoed dat die gebruik van enige indirection van stdin
- bygevoeg 'n opsie om 'n prediff opsie hele stelsel te voorsien
- bygevoeg vermoë om moedertaal timeout funksie 'n lanseerder se gebruik eerder as Python se
- verbeter hoe die toets stelsel dood 'n toets wat keer uit
- Vaste 'n fout in wat .preexec lêers net gewerk as '. " was in jou pad
- Interne
- bygevoeg 'n --break-on-id samesteller vlag vir ontwikkelaars op te spoor AST node skep
- verbeter organisasie van die inhoud util / directory
- verander die manier waarop weergawe nommers word bereken / vertoon SVN-gebaseerde gebruikers
- bygevoeg ondersteuning vir taak- / draad-spesifieke module-kode
- bygevoeg 'n vermoë om die AST tel tussen elke pass toegeken druk
- bygevoeg 'n nuwe gdb alias om --gdb compiler: "loc 'druk 'n AST node se plek
- aansienlik verbeter implementering van pragmas / vlae om fouthantering te vermy
- verwyder verskeie gevalle van onnodige string vergelykings in die samesteller
- verwyder fout sensitiewe gebruik van CHPL_TASKS en CHPL_THREADS as voorverwerker simbole
- bygevoeg dokumentasie bestPractices vir ontwikkelaars (nie ingesluit in release)
- verander interne munging van '=' en '==' na 'OPDRAG "en" GELYK' onderskeidelik
- bygevoeg 'n --print-id-op-fout ontwikkelaar vlag AST ID op foute druk
- verbeter die strengheid van C ++ prototipe nagaan
- eksterne bydraer ooreenkomste by die SVN boom (nie in release)
- bygevoeg 'n idee van interne tipes wat gebruik word deur die samesteller, maar nie die gebruiker
Kommentaar nie gevind