Kapel er en ny parallel programmeringssprog er udviklet af Cray Inc. som led i DARPA-ledede høj produktivitet computersystemer program (HPCS). Kapel er designet til at forbedre produktiviteten af high-end computer brugere samtidig tjener som en bærbar parallel programmering model, der kan bruges på råvaremarkederne klynger eller desktop multi-core systemer. Kapel tilstræber at langt forbedre programmerbarhed af store parallelle computere ved at matche eller slå ydeevne og overførsel af nuværende programmering modeller som MPI.
Kapel app understøtter en flertrådet udførelse model via højt niveau abstraktioner for data parallelitet, opgave parallelitet, concurrency, og indlejrede parallelitet. & Nbsp; Chapel s locale typen giver brugerne mulighed for at angive og grund om placering af data og opgaver på et mål arkitektur i orden at tune til lokalitet. Kapel understøtter global-view data aggregater med brugerdefinerede implementeringer, tillader operationer på distribuerede datastrukturer at blive udtrykt på en naturlig måde. I modsætning til mange tidligere højere niveau parallelle sprog, er Chapel designet omkring en multiresolution filosofi, tillader brugere at begynde med skrive meget abstrakt kode og derefter trinvist tilføje flere detaljer, indtil de er så tæt på maskinen som deres behov kræver. Kapel understøtter genbrug af kode og rapid prototyping via objektorienteret design, type inferens, og funktioner til generisk programmering.
Kapel designet fra første principper snarere end ved at udvide en eksisterende sprog. Det er en absolut nødvendighed blok struktureret sprog, der er designet til at være let at lære for brugere af C, C ++, Fortran, Java, Perl, Matlab, og andre populære sprog. Mens Chapel bygger på begreber og syntaks fra mange tidligere sprog, er dens parallelle funktioner mest direkte påvirket af ZPL, High-Performance Fortran (HPF), og Cray MTA & handel; / Cray XMT & handel; udvidelser til C og Fortran
Hvad er nyt i denne udgivelse:.
- Højdepunkter (se nedenfor for detaljer)
- split "def" søgeord i "proc« (procedurer) og "ITER" (for iteratorer)
- (se '$ CHPL_HOME / util / konvertere-defs --help' om hjælp opdatering af eksisterende koder)
- tilføjet 'replikeret "distribution og forbedret" Block-cyklisk' fordeling
- (se & quot; Standard Udbyttebetalinger & quot; i spec og eksempler / primere / distributions.chpl)
- tilføjede single-locale opgave lag for Nanos ++ (BSC) og Qthreads (Sandia)
- (se doc / README.tasks)
- større omarbejdning af range semantik og implementering
- (se & quot; Semantiske Ændringer / Ændringer i Chapel Sprog & quot; nedenfor for detaljer)
- indledende støtte for flygtige typer: bool, int, uint, real, imag
- (se doc / technotes / README.volatile)
- støtte til externe consts og klasser (pointers-til-structs)
- (se doc / technotes / README.extern)
- forbedret understøttelse for data parallelitet på Cray XMT
- omfattende forbedringer prøven koder i eksemplerne / mappen
- (se 'Eksempel Koder' nedenfor og eksempler / README)
- tilføjede fleste kodeeksempler fra spec til en ny eksempler / mappe
- (se eksempler / spec / *)
- tilføjet en teknisk note, der beskriver den brugerdefinerede domæne map-grænseflade
- (se doc / technotes / README.dsi)
- omfattende opdateringer til sprog specifikation
- (se 'Dokumentation' nedenfor)
- adskillige forbedringer af runtime tasking og kommunikation lag
- (se & quot; Runtime Library ændringer & quot; nedenfor)
- Syntaktisk / Navngivning ændringer
- split "def" søgeord i "proc« (procedurer) og "ITER" (for iteratorer)
- (se '$ CHPL_HOME / util / konvertere-defs --help' om hjælp opdatering af eksisterende koder)
- omdøbt 'aritmetiske' domæner / arrays til "rektangulære" domæner / arrays
- tilføjet støtte til floating point litteraler af formen »1.e ..."
- (tidligere, kun "1e ..." og "1,0E ...« blev støttet)
- Semantiske Ændringer / Ændringer Kapel Sprog
- adskillige forbedringer af intervaller (se 'Ranges "kapitel i sproget spec):
- tilføjet en begrebet tilpasning for at angive en tilpasning modulo | skridtlængde |
- tilføjet en "align" operatør og forespørgsel til intervaller for at angive / query justering
- (fx '1..10 med 3 align 2' = & gt; '2, 5, 8' siden 2 == 5 == 8, mod 3)
- defineret == på intervaller i forhold til de heltal sekvenser de genererer
- defineret ident (R1, R2) at sige, om r1 og r2 er semantisk identiske
- defineret '# k' for k & lt; 0 således, & quot; tæller fra slutningen af intervallet & quot;
- tilføjet 'først', 'sidste', 'alignedLow, "alignedHigh' metoder til intervaller
- (fx '1..10 ved -2' = & gt; første == 10, sidste == 2, alignedLow = 2, alignedHigh = 10)
- tilføjet støtte til en række nye udvalg forespørgsel funktioner
- (f.eks alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- tilføjet støtte til flygtige bool, int, uint, real, og imag typer
- (se doc / technotes / README.volatile)
- tilføjet en end-of-file check til filtype
- (f.eks. ', Mens! Infile.eof ... «)
- fjernede støtte til behandling "tilbagesendelse" i iterator som en "udbytte"
- (fx ændring "ITER foo () {tilbagevenden x;} 'til' ITER foo () {udbytte x, tilbagevenden} ')
- ekstra støtte til at refererer moduler uden først 'use'-ing dem
- (f.eks modul M1 {var x ...} modul M2 {... M1.x ...} er nu juridisk)
- tilføjet en callStackSize forespørgsel til locale typen
- (fx "here.callStackSize 'returnerer kaldstakkens størrelse på den aktuelle lokalitet)
- fjernede den tidligere krævede semikolon fra slutningen af enum erklæringer
- (fx "enum farver {rød, blå, grøn} 'nu er lovlig, tidligere brug for« «)
- tilføjet støtte til en enkelt afsluttende komma i slutningen af enum lister
- (fx "enum farver {rød, blå, grøn,} 'nu juridisk)
- fjernede støtten til +/- operatører på rektangulære domæner; Brug Oversæt ()
- Nyligt Gennemførte Features
- implementeret == /! = For rektangulære, associativ og sparsomme domæner
- Standard Distributions
- tilføjet et første udkast "replikeret" distribution til lagring af data redundant
- (se eksempler / primere / distributions.chpl)
- forbedret "Block-cyklisk", er tilstrækkelig til korrekt gennemføre HPCC PTRANS og HPL
- (se eksempler / HPCC / ptrans.chpl, hpl.chpl; eksempler / primere / distributions.chpl)
- fjernet redundans i specifikation af leder iteratorer mellem domæner / arrays
- standardmoduler
- tilføjede INFINITY og NAN konstanter til Math.chpl modulet
- (se 'Math' under & quot; Standard Moduler & quot; i sproget spec)
- tilføjede isinf () og isfinite () testrutiner til Math.chpl modulet
- (se 'Math' under & quot; Standard Moduler & quot; i sproget spec)
- tilføjet en halv snes flere rutiner til GMP.chpl modulet
- Dokumentation
- tilføjet en ny teknisk note, der beskriver den brugerdefinerede domæne map-grænseflade
- (se doc / technotes / README.dsi)
- lavet mange forbedringer til det sprog specifikation
- store revisioner af Domæner kapitlet for at forbedre klarhed / nøjagtighed
- forbedret og ensartet struktur Records og klasser kapitler
- større revisioner til Maps Domain kapitlet for at forbedre klarhed / nøjagtighed
- navngivet eksempel koder til at give krydshenvisning til eksempler / spec / programmer
- afklaret lovligheden af etiketten / pause / fortsætte i parallelle løkker
- opdateret beskrivelserne af læst [ln] / skrive [ln]
- fast nogle problemer i fil felter bestilling
- omformateret specifikationen som en "bog" i LaTeX
- forskellige mindre rettelser af slåfejl / fejl
- forbedrede definitioner / beskrivelser af flere ord
- tilføjede dokumentation af locale.name
- og mange andre ændringer ...
- opdateret hurtig referencedokument at omfatte underdæk- & gt; proc / ITER forandring, justere op .
- omskrev / reorganiseret README.extern at afklare forklaringer og bringe up-to-date
- tilføjet en README beskriver 'lokal' erklæring (doc / technotes / README.local)
- tilføjet en README beskriver flygtige typer (doc / technotes / README.volatile)
- opdaterede README.comm-diagnostik til at nævne hurtige gaffel statistik
- opdaterede forskellige README-filer
- Eksempel Koder
- placeret fleste kodeeksempler fra sproget spec. til en ny spec / undermappe
- forbedret primere / mappen:
- tilføjet en ny primer til brug af procedurer (primere / procedures.chpl)
- tilføjet en grundlæggende primer til domæner (primere / domains.chpl)
- omdøbt de landestandarder primer for at locales.chpl og forbedret det
- forbedret distributioner primer og tilføjede Block-Cykliske og replikeres anvendelser
- opdateret området primer (primere / range.chpl)
- forbedret iteratorer primer (primere / iterators.chpl)
- forbedret primer for reduktioner (primere / reductions.chpl)
- tilføjet getCurrentTime () til timere primer (primere / timers.chpl)
- tilføjet beskrivelser af typen alias og config typer at variabler primer
- (se primere / variables.chpl)
- forbedret HPCC / benchmarks mappe
- tilføjede første version af HPCC PTRANS til HPCC / mappe (ptrans.chpl)
- tilføjede renere version af HPCC HPL til HPCC / mappe (hpl.chpl)
- tilføjede et varianter / underindeks med eksemplerne / HPCC at udvise andre tilgange
- tilføjede stream-promoted.chpl at vise brugen af forfremmelse i den globale STREAM Triad
- tilføjede ra-cleanloop.chpl at vise renere (men i øjeblikket langsommere) RA kernel
- forbedrede eksempler på øverste niveau:
- omdøbt eksisterende & quot; hej, verden & quot; eksempler til at foreslå en logisk læserækkefølge
- (se eksempler / hello * .chpl)
- tilføjede data parallelle og distribuerede data parallelle goddag, verden eksempler
- (se eksempler / hello3-datapar.chpl, eksempler / hello4-datapar-dist.chpl)
- tilføjede kommentarer til de forskellige hej, verden eksempler (eksempler / goddag * .chpl)
- opdateret alle eksempler til aktuelle sprog semantik
- brug 'proc' / 'ITER "snarere end" def "
- opdatering for at afspejle nye serie semantik
- Platform-specifikke noter
- for Cray XT / Cray XE, forbedrede de aprun og pbs-aprun løfteraketter
- (se & quot; Launcher-specifikke noter & quot; nedenfor)
- for Cray XMT, tilføjet støtte til parallelle løkker i intervaller
- for Cray XMT, tilføjede generation af noalias pragmas til forall loop variabler
- tilføjet støtte til BSC s Marenostrum herunder docs og en særlig løfteraket
- (se doc / platforme / README.marenostrum)
- Launcher-specifikke noter
- tilføjede launcher-specifikke muligheder for at --help kapacitet
- forbedret udbredelse af exit statuskoder gennem løfteraketter
- skiftet løfteraketter for at støtte exec-baserede (snarere end systemet-baserede) kommandoer
- gjort løfteraketter brug 'Unlink "snarere end systemet (rm) til at fjerne midlertidige filer
- tilføjet en løfteraket for BSC s Marenostrum
- reduceret antal midlertidige filer, der bruges til at fange output af 'systemet' kommandoerne
- aprun launcher forbedringer:
- tilføjet en --cc flag til at angive CPU opgave w / i en node
- tilføjet en -q flag at køre løfteraket uden brugerinput
- tilføjede debug kapacitet via CHPL_LAUNCHER_DEBUG at holde tmp filer rundt
- pbs-aprun launcher forbedringer:
- tilføjet en --cc flag til at angive CPU opgave w / i en node
- tilføjede debug kapacitet via CHPL_LAUNCHER_DEBUG at holde tmp filer rundt
- renset output til slippe af med nogle uvedkommende udskrivning
- gjort løfteraket support vores testsystem
- tilføjede --walltime og --queue flag til launcher som alternativer til ENV. Vars.
- Compiler ændringer
- gjorde compiler print 'sand' / "falske" i typen signaturer snarere end 1/0
- tilføjede config param "noRefCount" for at deaktivere henvisning optælling (kan lække hukommelse)
- Compiler Flag
- tilføjet en --print-kaldstak-on-fejl flag for at vise, hvad der førte til en dårlig opkald
- tilføjet en --no-Codegen flag for at springe koden generation og forbinder fase
- Interoperabilitet ændringer
- tilføjet støtte til ekstern C & quot; klasser & quot; (Markøren-til-struct typer)
- tilføjet støtte til externe consts (se README.extern)
- Fejl Besked Forbedringer
- tilføjet en advarsel forældreløse »brug« udsagn uden for deklareret moduler
- (fx 'bruge M1, modul M2 {}' bør typisk være 'modul M2 {brug M1;}')
- lavet parse-tiden fejlmeddelelse bruge standard 'filename: LINENO:' format
- genererede en fejlmeddelelse for at henvise til en klasse navn i en primær metode
- (f.eks klasse C {def Cm () {...}} 'nu en fejlmeddelelse)
- Fejlrettelser / Nye Semantisk Kontrol (for gamle semantik)
- forhindrede config typer fra at blive sat hjælp gennemførelsestid kommando-line flag
- fast compiler evne til at håndtere fagforeninger uden felter
- fastsættes minloc / maxloc reduktioner at håndtere tomme intervaller / underområder af værdier
- rettet en fejl, hvor "vej" argument til fil konstruktører blev ignoreret
- gjort tomme fagforeninger fungerer korrekt
- fast et overløb problem i chunking op intervaller for distribution / parallelisering
- rettet en fejl, der involverer støtte til tomme extern posttyper
- rettet en fejl, der involverer externe funktioner, der returnerer poster
- rettet en fejl relateret til kopiering eksterne poster
- fast implementering af +/- operatører på associative / sparsomme domæner
- rettet en fejl vedrørende filnavn-baserede modulnavne indeholder flere '' s.
- tilføjet fejlmeddelelser for at udvide / udvendig / indvendig på uregelmæssige domæner
- tilføjet en fejl for konstruktører / destructorer med et specifikt afkast typen
- fast et par bugs i forbindelse med "fast på" optimering
- tilføjet en check mod konstruere klasser uden at specificere generiske felter
- Emballage ændringer
- tilføjede syntaks overstregningstusch kode til GNU source-highlight
- (se etc / source-highlight / README)
- forbedrede emacs farvelægning støtte for version 22.x
- (se etc / emacs / README)
- opdateringer til vim syntaxfarvning at afspejle nye "proc '/' ITER søgeord
- (se etc / vim / README)
- tilføjet et script til konvertering af eksisterende kodekser brug af 'def' til 'ITER' / 'proc "
- (se $ CHPL_HOME / util / konvertere-defs)
- fjernet multirealm eksempler og dokumentation for tiden
- tredjeparts software ændringer
- opdateret GasNet til version 1.16.1
- tilføjede kopier af BSC s Nanos ++ og Sandia s Qthreads
- (se tredjepart / README)
- lavet en post-installation skridt for GasNet der ændrer absolutte stier til relative
- fjernet PVM for tiden på grund af ustabilitet
- Runtime Library ændringer
- tilføjede single-locale opgave lag for Nanos ++ (BSC) og Qthreads (Sandia)
- adskillige forbedringer af runtime tasking lag:
- tilføjet en ny grænseflade for at have tasking laget call chpl_main ()
- ændret tasking init funktion til at tage maxThreadsPerLocale / callStackSize args
- tilføjet en opgave udbytte evne til tasking lag interfacet
- forbedret runtime kode for at undgå at bruge sync vars før initialisering tasking
- fjernet makro-ized form for tasking interface; ved hjælp af standard navne i stedet
- samlet navngivning af alle opgave lag rutiner at chpl_sync _ * () og chpl_task _ * ()
- fjernet kravet om at gennemføre det indre variable grænseflade
- flyttet opsigelse af tråde fra FIFO tasking lag til pthreads gevindskæring
- forenklet implementering af sync variabler i pthread threading lag
- flyttet ansvaret for tråd tæller fra fifo tasking til pthread threading
- adskillige forbedringer af runtime kommunikation lag:
- omstruktureret kommunikationsinterface at støtte længde / typen argumenter
- tilføjede et interface til ikke-blokerende får operationer til comm. grænseflade
- forenet alle remote få operationer for at bruge CHPL_COMM_GET () makro
- refactored / omdøbt kommunikationsgrænsefladen overskrifter
- Testing System
- stærkt forbedret test ydeevne og graffaciliteten
- (se kommentarer på forsiden af start_test til dokumentation)
- forbedret testsystem støtte til at rydde op efter sig selv
- tilføjet evne til at undgå at bruge enhver indirection af stdin
- tilføjet en mulighed for at give en hele systemet prediff option
- ekstra mulighed for at bruge en løfteraket native timeout-funktion i stedet for Pythons
- forbedret hvordan testsystemet dræber en test, timeout
- rettet en fejl, hvor .preexec filer kun arbejdede hvis "." var i din vej
- Intern
- tilføjet en --break-on-id compiler flag for udviklere at lokalisere AST node skaber
- forbedret organisering af util / mappe indholdet
- ændret den måde versionsnumre beregnes / vises for SVN-baserede brugere
- tilføjet støtte til opgave- / tråd-specifikke modul kode
- tilføjet en mulighed for at udskrive AST tæller tildelt mellem hvert pass
- tilføjet en ny gdb alias til compiler --gdb: loc «udskriver en AST node placering
- stærkt forbedret implementering af pragmas / flag for at undgå fejl sager
- fjernet flere tilfælde af unødvendige snor sammenligninger i compileren
- fjernet fejlbehæftet brug af CHPL_TASKS og CHPL_THREADS som præprocessordirektiver symboler
- tilføjede bestPractices dokumentation for udviklere (ikke inkluderet i release)
- ændrede interne munging af '=' og '==' til 'ASSIGN "og" ligemænd "henholdsvis
- tilføjet en --print-id-on-fejl udvikler flag til at udskrive AST-ID på fejl
- forbedret strenge C ++ prototype kontrol
- tilføjet eksterne bidragsyder aftaler til SVN træ (ikke i release)
- tilføjet en forestilling af interne typer, der anvendes af compileren, men ikke bruger
Kommentarer ikke fundet