Chapel is een nieuwe parallelle programmeertaal door Cray Inc. worden ontwikkeld als onderdeel van de DARPA geleide programma High Productivity Computing Systems (HPCS). Kapel is ontworpen om de productiviteit van high-end computergebruikers zorgt bovendien draagbare parallel programmeren dat kan worden gebruikt op grondstoffen clusters of desktop multicoresystemen verbeteren. Chapel streeft ernaar om sterk verbeteren van de programmeerbaarheid van grootschalige parallelle computers te laten overeenstemmen of het verslaan van de prestaties en de overdraagbaarheid van de huidige programmering modellen zoals MPI.
De kapel app ondersteunt een multithreaded uitvoering model via high-level abstracties voor data parallellisme, taak parallellisme, concurrency, en geneste parallellisme & nbsp;. Chapel's locale soort stelt gebruikers in staat om aan te geven en reden over de plaatsing van gegevens en taken op een doel architectuur in orde om af te stemmen voor de lokaliteit. Chapel ondersteunt global-view gegevensaggregaten met door de gebruiker gedefinieerde implementaties operaties mogelijk op gedistribueerde datastructuren worden uitgedrukt op een natuurlijke wijze. In tegenstelling tot veel eerdere hogere parallel talen, is Chapel ontworpen rondom een multiresolutie filosofie, waardoor gebruikers om in eerste instantie te schrijven zeer abstract code en dan stapsgewijs voeg meer detail tot ze zo dicht mogelijk bij de machine als hun behoeften nodig. Chapel ondersteunt hergebruik van code en rapid prototyping via object-georiënteerd ontwerp, type gevolgtrekking, en functies voor generieke programmering.
Kapel werd ontworpen vanaf de eerste beginselen in plaats van door de uitbreiding van een bestaande taal. Het is een absoluut-blok gestructureerde taal, ontworpen om gemakkelijk te leren voor gebruikers van C, C ++, Fortran, Java, Perl, Matlab, en andere populaire talen te zijn. Terwijl Chapel bouwt voort op concepten en syntaxis van vele eerdere talen, zijn de parallel functies het meest direct beïnvloed door ZPL, High Performance Fortran (HPF) en de Cray MTA & trade; / Cray XMT & trade; uitbreidingen op C en Fortran
Wat is nieuw in deze release:.
- Highlights (zie hieronder voor details)
- split 'def' trefwoord in 'proc' (voor procedures) en "iter" (voor iterators)
- (zie '$ CHPL_HOME / util / convert-defs --help' voor hulp updaten bestaande codes)
- toegevoegd 'Replicatie' distributie en verbeterde 'Block-Cyclisch' distributie
- (zie & quot; Standard Uitkeringen & quot; in spec en voorbeelden / primers / distributions.chpl)
- toegevoegd single-locale taak lagen voor Nanos ++ (BSC) en Qthreads (Sandia)
- (zie doc / README.tasks)
- belangrijke bewerking van range semantiek en implementatie
- (zie & quot; Semantic Wijzigingen / Wijzigingen Chapel Taal & quot; hieronder voor detail)
- aanvankelijke steun voor vluchtige types: bool, int, uint, real, imag
- (zie doc / technotes / README.volatile)
- Ondersteuning voor extern consts en klassen (pointers-to-structs)
- (zie doc / technotes / README.extern)
- verbeterde ondersteuning voor data parallellisme op de Cray XMT
- uitgebreide verbeteringen aan het monster codes in de voorbeelden / directory
- (zie 'Voorbeeld Codes' hieronder en voorbeelden / README)
- de meeste codevoorbeelden toegevoegd uit de spec om een nieuwe voorbeelden / directory
- (zie voorbeelden / spec / *)
- voegde een technische notitie beschrijft de door de gebruiker gedefinieerde domein kaart-interface
- (zie doc / technotes / README.dsi)
- uitgebreide updates om de taal specificatie
- (zie 'Documentatie' hieronder)
- een aantal verbeteringen aan de runtime-tasking en communicatie lagen
- (zie & quot; Runtime Library Wijzigingen & quot; hieronder)
- Syntactic / Naamgeving Wijzigingen
- split 'def' trefwoord in 'proc' (voor procedures) en "iter" (voor iterators)
- (zie '$ CHPL_HOME / util / convert-defs --help' voor hulp updaten bestaande codes)
- omgedoopt tot 'rekenen' domeinen / arrays 'rechthoekig' domeinen / arrays
- toegevoegde ondersteuning voor floating point literals van het formulier '1.e ...'
- (voorheen, alleen '1e ...' en '1.0e ...' werden ondersteund)
- Semantic Wijzigingen / Wijzigingen Kapel Taal
- een aantal verbeteringen te bereiken (zie 'Ranges' hoofdstuk in de taal specificatie):
- toegevoegd een concept van aanpassing aan een uitlijning modulo geven | stride |
- voegde een 'align' operator en query reeksen aan / vraag uitlijning opgeven
- (bijvoorbeeld, '1..10 door 3 align 2' = & gt; '2, 5, 8' sinds 2 == 5 == 8, mod 3)
- gedefinieerd == op bereiken in termen van de integer sequenties die ze genereren
- gedefinieerd ident (R1, R2) om te zeggen of R1 en R2 zijn semantisch identiek
- '# k' gedefinieerd voor K & lt; 0 als betekenis & quot; tellen vanaf het einde van de reeks & quot;
- toegevoegd 'eerste', 'laatste', 'alignedLow,' alignedHigh 'methoden te bereiken
- (bijvoorbeeld, '1..10 door -2' = & gt; eerste == 10, laatste == 2, alignedLow = 2, alignedHigh = 10)
- ondersteuning toegevoegd voor een aantal nieuwe range vraag functies
- (bv alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- ondersteuning toegevoegd voor vluchtige bool, int, uint, echt, en types imag
- (zie doc / technotes / README.volatile)
- een end-of-file controle toegevoegd aan het bestandstype
- (bijv., 'Terwijl! Infile.eof ...')
- verwijderd ondersteuning voor de behandeling van 'return' in iterator als een 'yield'
- (bijvoorbeeld, change 'iter foo () {return x;}' naar 'iter foo () {opbrengst x; return;}')
- ondersteuning toegevoegd aan refereren modules zonder eerst 'use'-ing hen
- (bv module M1 {var x ...} module M2 {... M1.x ...} is nu juridisch)
- een callStackSize vraag toegevoegd aan het soort locale
- (bijvoorbeeld, 'here.callStackSize' geeft de call stack grootte op de huidige locale)
- verwijderd van de eerder gewenste puntkomma aan het einde van enum verklaringen
- (bijvoorbeeld, 'enum {kleuren rood, blauw, groen}' is nu juridisch; voorheen nodig ';')
- extra ondersteuning voor één afsluitende komma eind enum lijsten
- (bijvoorbeeld, 'enum {kleuren rood, blauw, groen,}' is nu juridisch)
- verwijderd ondersteuning voor +/- exploitanten op rechthoekige domeinen; gebruik Vertalen ()
- nieuw geïmplementeerde functies
- geïmplementeerd == /! = Voor rechthoekige, associatieve, en schaars domeinen
- Standaard Uitkeringen
- toegevoegd een eerste ontwerp 'Replicatie' distributie voor het opslaan van gegevens redundant
- (zie voorbeelden / primers / distributions.chpl)
- verbeterde 'Block-cyclisch ", voldoende te kunnen implementeren HPCC PTrans en HPL
- (zie voorbeelden / hpcc / ptrans.chpl, hpl.chpl; voorbeelden / primers / distributions.chpl)
- verwijderd redundantie in specificatie van leider iteratoren tussen domeinen / arrays
- Standaard Modules
- oneindigheid en NAN constanten toegevoegd aan de Math.chpl module
- (zie 'Math' onder & quot; Modules Standard & quot; in de taal spec)
- toegevoegd isinf () en isfinite () testroutines aan de Math.chpl module
- (zie 'Math' onder & quot; Modules Standard & quot; in de taal spec)
- een half dozijn meer routines toegevoegd aan de GMP.chpl module
- Documentatie
- voegde een nieuwe technische notitie beschrijft de door de gebruiker gedefinieerde domein kaart-interface
- (zie doc / technotes / README.dsi)
- maakte vele verbeteringen aan de taal specificatie
- belangrijke herzieningen van het hoofdstuk Domeinen te verbeteren duidelijkheid / nauwkeurigheid
- verbeterd en uniforme structuur van Records en klassen hoofdstukken
- belangrijke herzieningen van het hoofdstuk Maps domein te verbeteren duidelijkheid / nauwkeurigheid
- de naam bijvoorbeeld codes om cross-verwijzing naar voorbeelden te geven / spec / programma's
- verduidelijkt de wettigheid van label / break / blijven parallel lussen
- update de beschrijvingen van lezen [ln] / schrijven [LN]
- een aantal problemen in het bestand velden bestellen vast
- geformatteerd de specificatie als een 'boek' in LaTeX
- diverse kleine fixes van typefouten / fouten
- verbeterde definities / beschrijvingen van de verschillende termen
- toegevoegd documentatie van locale.name
- en vele andere veranderingen ...
- bijgewerkt snel referentiedocument DEF- & gt omvatten; proc / iter verandering, uitlijnen op .
- herschreef / gereorganiseerd README.extern te verduidelijken uitleg en up-to-date
- voegde een README beschrijven van de 'lokale' statement (doc / technotes / README.local)
- voegde een README beschrijft vluchtige soorten (doc / technotes / README.volatile)
- bijgewerkt README.comm-diagnostiek snel vork statistieken vermelden
- bijgewerkt diverse README bestanden
- Voorbeeld Codes
- geplaatst meeste code voorbeelden uit de taal spec. om een nieuwe spec / subdirectory
- verbeterde de primers / directory:
- voegde een nieuwe primer voor het gebruik van procedures (primers / procedures.chpl)
- toegevoegd een basis primer voor domeinen (primers / domains.chpl)
- omgedoopt tot de locales primer locales.chpl en verbeterde hij
- verbeterde de distributies primer en toegevoegde Block-cyclisch en gekopieerd gebruik
- bijgewerkt het bereik primer (primers / range.chpl)
- verbeterde de iterators primer (primers / iterators.chpl)
- verbeterde de reducties primer (primers / reductions.chpl)
- toegevoegd getCurrentTime () om de timers primer (primers / timers.chpl)
- beschrijving van het type aliassen en types config toegevoegd aan variabelen primer
- (zie primers / variables.chpl)
- verbeterd hpcc / benchmarks directory
- de eerste versie van HPCC PTrans toegevoegd aan hpcc / directory (ptrans.chpl)
- schonere versie van HPCC HPL toegevoegd aan hpcc / directory (hpl.chpl)
- een varianten / subdirectory toegevoegd aan voorbeelden / hpcc naar andere benaderingen vertonen
- toegevoegd stroom-promoted.chpl om gebruik te maken van de promotie te tonen in de wereldwijde STREAM Triad
- toegevoegd ra-cleanloop.chpl om schoner te laten zien (maar momenteel langzamer) RA kernel
- verbeterde top-level voorbeelden:
- omgedoopt bestaande & quot; hello, world & quot; voorbeelden om een logische leesvolgorde suggereren
- (zie voorbeelden / hello * .chpl)
- toegevoegde gegevens parallelle en gedistribueerde data parallel hello, world voorbeelden
- (zie voorbeelden / hello3-datapar.chpl, voorbeelden / hello4-datapar-dist.chpl)
- toegevoegd reacties op de verschillende hello, world voorbeelden (voorbeelden / hello * .chpl)
- bijgewerkt allemaal voorbeelden om de huidige taal semantiek
- Gebruik 'proc' / 'ITER' in plaats van 'def'
- update naar nieuwe reeks semantiek weerspiegelen
- Platform-specifieke Notes
- voor Cray XT / Cray XE, verbeterde de aprun en PBS-aprun draagraketten
- (zie & quot; Launcher-specifieke notes & quot; hieronder)
- voor Cray XMT, toegevoegde ondersteuning voor parallelle lussen over reeksen
- voor Cray XMT, generatie noalias pragma toegevoegd aan forall lus variabelen
- ondersteuning toegevoegd voor BSC's Enterprise Performance Management Collaboratie waaronder docs en een speciale launcher
- (zie doc / platforms / README.marenostrum)
- Launcher-specifieke opmerkingen
- toegevoegd launcher-specifieke opties op het vermogen --help
- een betere verspreiding van de exit status codes door middel van draagraketten
- veranderd draagraketten te ondersteunen-exec gebaseerd (in plaats van-systeem op basis) commando's
- gemaakt launchers gebruiken 'unlink' in plaats van het systeem ('rm') om tijdelijke bestanden te verwijderen
- voegde een launcher voor BSC's Enterprise Performance Management Collaboratie
- verminderde aantal tijdelijke bestanden die gebruikt worden om de productie van 'systeem' vastleggen commando's
- aprun launcher verbeteringen:
- voegde een --cc vlag om CPU opdracht te geven w / in een knoop
- voegde een q vlag om de launcher in de stille modus draaien
- toegevoegd debug mogelijkheid via CHPL_LAUNCHER_DEBUG om tmp files rond houden
- PBS-aprun launcher verbeteringen:
- voegde een --cc vlag om CPU opdracht te geven w / in een knoop
- toegevoegd debug mogelijkheid via CHPL_LAUNCHER_DEBUG om tmp files rond houden
- opgeruimd uitgang om zich te ontdoen van een aantal vreemde druk
- gemaakt launcher support ons testsysteem
- toegevoegd --walltime en --queue vlaggen launcher als alternatief voor env. vars.
- Compiler Wijzigingen
- maakte de compiler print 'true' / 'valse' out in type handtekeningen in plaats van 1/0
- toegevoegd config param 'noRefCount om verwijzing tellen schakelen (kan geheugenlek)
- Compiler Vlaggen
- voegde een --print-aanroepstapel-on-error vlag te laten zien wat leidde tot een slechte call
- voegde een --no-Codegen vlag om de code-generatie en het koppelen van fase overslaan
- Interoperabiliteit Wijzigingen
- toegevoegde ondersteuning voor extern C & quot; klassen & quot; (Pointer-naar-struct types)
- toegevoegde ondersteuning voor externe consts (zie README.extern)
- Foutmelding Verbeteringen
- toegevoegd een waarschuwing verweesde "gebruik" verklaringen buiten verklaarde modules
- (bijvoorbeeld, 'gebruiken M1; module M2 {}' moet doorgaans 'module M2 {gebruik M1;}')
- gemaakt parse time foutbericht gebruik maken van de standaard 'filename: lineno:' format
- genereerde een foutmelding voor het verwijzen naar een klasse naam in een primaire methode
- (bijvoorbeeld, 'klasse C {def Cm () {...}}' genereert nu een foutmelding)
- Bug Fixes / New Semantische Controles (voor oude semantiek)
- verhinderd types config van wordt ingesteld met behulp van uitvoeringstijd command-line flags
- vaste vermogen van de compiler om vakbonden te behandelen zonder velden
- de verminderingen minloc / maxloc bevestigd aan lege reeksen / subbereiken waarden verwerken
- vast een bug waarin het 'pad' argument file constructeurs werd genegeerd
- gemaakt lege vakbonden correct werken
- een overflow probleem in chunking up gebieden voor distributie / parallellisatie vast
- vast een bug met ondersteuning voor lege extern record types
- vast een bug met externe functies die verslagen terug
- Fixed a bug met betrekking tot het kopiëren van externe registers
- vaste uitvoering van +/- operators op associatieve / schaars domeinen
- Fixed a bug met betrekking tot-bestandsnaam gebaseerde module namen met meerdere ''s.
- toegevoegd foutmeldingen voor uitbreiding / exterieur / interieur op onregelmatige domeinen
- een fout toegevoegd constructeurs / destructors met een bepaald soort terugkeer
- vast een paar bugs in verband met de 'fast op' optimalisatie
- een controle tegen de bouw van klassen toegevoegd zonder opgaaf generieke velden
- Wijzigingen Packaging
- toegevoegd syntax highlighter code voor GNU source-highlight
- (zie etc / source-highlight / README)
- verbeterde emacs kleuren ondersteuning voor versie 22.x
- (zie etc / emacs / README)
- updates voor vim syntax kleuring om nieuwe 'proc' weerspiegelen / 'iter' keywords
- (zie etc / vim / README)
- toegevoegd een script voor het omzetten van 'gebruik van' def bestaande codes 'naar' ITER '/' proc '
- (zie $ CHPL_HOME / util / convert-defs)
- verwijderd multirealm voorbeelden en documentatie voor het moment
- Third-Party Software Wijzigingen
- GASNET bijgewerkt naar versie 1.16.1
- toegevoegd exemplaren van BSC Nanos ++ en Sandia's Qthreads
- (zie derden / README)
- maakte een post-install stap voor GASNET dat absolute paden verandert in relatieve
- verwijderd PVM voor het moment te wijten aan instabiliteit
- Runtime Library Wijzigingen
- toegevoegd single-locale taak lagen voor Nanos ++ (BSC) en Qthreads (Sandia)
- een aantal verbeteringen aan de runtime-tasking laag:
- voegde een nieuwe interface voor het feit dat de tasking laag oproep chpl_main ()
- veranderd tasking init functie maxThreadsPerLocale / callStackSize args nemen
- een taak opbrengst vermogen toegevoegd aan de tasking layer-interface
- verbeterde runtime code om te voorkomen dat het gebruik van sync vars voordat initialiseren tasking
- verwijderd macro-ized vorm van tasking interface; met behulp van standaard namen in plaats
- uniforme naamgeving van alle taak laag routines te chpl_sync _ * () en chpl_task _ * ()
- verwijderd eis om de enkele variabele-interface implementeren
- verplaatst beëindiging van draden van fifo tasking laag om pthreads threading
- vereenvoudigde uitvoering van sync variabelen in de pthread threading laag
- verplaatst de verantwoordelijkheid voor draad telt van fifo tasking tot threading pthread
- een aantal verbeteringen aan de runtime communicatie laag:
- geherstructureerd de communicatie-interface op lengte / soort argumenten ondersteunen
- voegde een interface voor non-blocking krijgen behandelingen om de comm. -interface
- verenigd alle externe krijgen operaties CHPL_COMM_GET () macro gebruiken
- herwerkt / omgedoopt tot de communicatie-interface headers
- Testing System
- sterk verbeterd de prestaties testen en grafische mogelijkheden
- (zie de opmerkingen aan de voorzijde van start_test voor documentatie)
- verbeterde ondersteuning van het testsysteem voor het opruimen na zelf
- toegevoegde mogelijkheid om te voorkomen dat het gebruik van een indirectie van stdin
- toegevoegd een optie om een prediff optie systeem-brede bieden
- toegevoegde mogelijkheid om native time-out-functie een draagraket's gebruiken in plaats van Python's
- verbeterd hoe het testsysteem doodt een test die een time-out
- vast een bug waarin .preexec bestanden werkte alleen als ''. was in je pad
- Internal
- voegde een --break-on-id compiler vlag voor ontwikkelaars te vinden AST knoop creëert
- een betere organisatie van de inhoud util / directory
- de manier veranderd waarop versienummers worden berekend / weergegeven SVN-gebaseerde gebruikers
- ondersteuning toegevoegd voor taak- / thread-specifieke module code
- nog een mogelijkheid om de AST tellingen tussen elke bal toegewezen te drukken
- voegde een nieuwe gdb alias --gdb compiler: 'loc' drukt een AST node locatie
- sterk verbeterde uitvoering van pragma / vlaggen aan fout gevallen voorkomen
- verwijderd meerdere gevallen van onnodige reeks vergelijkingen in de compiler
- verwijderd foutgevoelige gebruik van CHPL_TASKS en CHPL_THREADS als voorprocessor symbolen
- toegevoegd documentatie BestPractices voor ontwikkelaars (niet inbegrepen in release)
- veranderd interne vervormen van de '=' en '==' naar 'ASSIGN' en 'GELIJK' respectievelijk
- voegde een --print-id-on-error ontwikkelaar vlag om AST ID op fouten af te drukken
- verbeterde de striktheid van C ++ prototype controleren
- externe bijdrage overeenkomsten toegevoegd aan de SVN boom (niet in de release)
- toegevoegd een notie van interne types gebruikt door de compiler, maar niet de gebruiker
Reacties niet gevonden