kapell er en ny parallell programmeringsspråk utviklet av Cray Inc. som en del av DARPA-ledede høy produktivitet Computing Systems program (HPCS). Kapellet er utformet for å forbedre produktiviteten til high-end brukere datamaskin samtidig fungerer som en bærbar parallell programmering modell som kan brukes på råvare klynger eller systemer desktop flerkjernede. Chapel arbeider for å vesentlig forbedre programmering av store parallelle datamaskiner samtidig som du eller banke ytelse og portabilitet av dagens programmering modeller som MPI.
Kapellet app støtter en flertrådet gjennomføringsmodell via høynivå abstraksjoner for data parallellitet, oppgave parallellitet, samtidighet, og nestet parallellitet. & Nbsp; Chapel locale typen gjør det mulig å spesifisere og grunn om plassering av data og oppgaver på et mål arkitektur for å tune for lokaliteten. Chapel støtter global-view data aggregater med brukerdefinerte implementeringer, tillater operasjoner på distribuerte datastrukturer som skal uttrykkes på en naturlig måte. I motsetning til mange tidligere høyere nivå parallelle språk, er Chapel designet rundt en Fleroppløsnings filosofi, som tillater brukere å først skrive veldig abstrakt kode og deretter gradvis legge mer i detalj før de er så nær den maskinen som deres behov krever. Chapel støtter gjenbruk av kode og rapid prototyping via objektorientert design, type slutning, og funksjoner for generisk programmering.
Kapellet er designet fra første prinsipper heller enn ved å utvide et eksisterende språk. Det er en viktig blokk strukturert språk, designet for å være lett å lære for brukere av C, C ++, Fortran, Java, Perl, Matlab, og andre populære språk. Mens Chapel bygger på konsepter og syntaks fra mange tidligere språk, sine parallelle funksjoner mest direkte påvirket av ZPL, High-Performance Fortran (HPF), og Cray MTA & trade; / Cray SEND & trade; utvidelser til C og Fortran
Hva er nytt i denne utgaven:.
- Høydepunkter (se nedenfor for detaljer)
- split 'def' nøkkelord i 'proc' (for prosedyrer) og 'ITER' (for iteratorer)
- (se '$ CHPL_HOME / util / konvertere-defs --help »for hjelp oppdatere eksisterende koder)
- lagt 'Replikert' distribusjon og forbedret 'Block-Cyclic' distribusjon
- (se & quot; Standard Fordelinger & quot; i spec og eksempler / primere / distributions.chpl)
- lagt single-locale oppgave lag for Nanos ++ (BSC) og Qthreads (Sandia)
- (se doc / README.tasks)
- stor omarbeiding av rekkevidde semantikk og implementering
- (se & quot; Semantiske Endringer / Endringer i Chapel Language & quot; under for detaljer)
- innledende støtte for flyktige typer: bool, int, uint, real, imag
- (se doc / tech / README.volatile)
- støtte for extern consts og klasser (pekere-til-structs)
- (se doc / tech / README.extern)
- forbedret støtte for data parallellitet på Cray SEND
- omfattende forbedringer i eksempelkodene i eksempler / katalog
- (se "Eksempel Koder 'under og eksempler / readme)
- lagt fleste kode eksempler fra spec til en ny eksempler / katalog
- (se eksempler / spec / *)
- lagt et teknisk notat som beskriver brukerdefinert domene kartgrensesnitt
- (se doc / tech / README.dsi)
- omfattende oppdateringer til språkspesifikasjonen
- (se "Dokumentasjon" nedenfor)
- flere forbedringer til runtime tasking og kommunikasjon lag
- (se & quot; Runtime Library Changes & quot; nedenfor)
- Syntaktisk / Naming Endringer
- split 'def' nøkkelord i 'proc' (for prosedyrer) og 'ITER' (for iteratorer)
- (se '$ CHPL_HOME / util / konvertere-defs --help »for hjelp oppdatere eksisterende koder)
- omdøpt 'aritmetiske' domener / arrays til "rektangulære" domener / arrays
- lagt til støtte for flyttall litteraler av skjemaet "1.E ...
- (tidligere, bare '1e ...' og '1.0e ...' ble støttet)
- Semantiske Endringer / Endringer i Chapel Språk
- flere forbedringer i områder (se 'Ranges' kapittel i språket spec):
- lagt et konsept av stilling for å angi en justerings modulo | stride |
- lagt til en 'justere' operatør og spørring til områder for å spesifisere / query justering
- (f.eks '1..10 av tre sluttar 2' = & gt; '2, 5, 8' siden 2 == 5 == 8, mod 3)
- definert == på områder i form av heltallssekvenser de genererer
- definert ID- (R1, R2) for å si hvorvidt r1 og r2 er semantisk identiske
- definert '# k' for k & lt; 0 som betyr & quot; telle fra slutten av serien & quot;
- lagt 'første', 'siste', 'alignedLow,' alignedHigh 'metoder til områder
- (f.eks '1..10 ved -2' = & gt; første == 10, siste == 2, alignedLow = 2, alignedHigh = 10)
- lagt til støtte for en rekke nye utvalg spørring funksjoner
- (f.eks alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- lagt til støtte for volatile bool, int, uint, real, og imag typer
- (se doc / tech / README.volatile)
- lagt til en end-of-file sjekk til filtype
- (f.eks. "Mens! Infile.eof ... ')
- fjernet støtte for behandling av "tilbake" i iterator som en "utbytte"
- (for eksempel endring 'ITER foo () {return x;}' til 'ITER foo () {avkastning x; tilbake;})
- lagt til støtte for å referere moduler uten først 'use'-ing dem
- (f.eks modul M1 {var x ...} modul M2 {... M1.x ...} er nå lovlig)
- lagt en callStackSize spørring til locale typen
- (f.eks, returnerer 'here.callStackSize' samtalen stabelen størrelsen på gjeldende locale)
- fjernet tidligere kreves semikolon fra slutten av enum erklæringer
- (f.eks 'enum farger {rød, blå, grønn} er nå lovlig, tidligere trengte'; ')
- lagt til støtte for en enkelt etterfølgende komma på slutten av enum lister
- (f.eks 'enum farger {rød, blå, grønn,} er nå lovlig)
- fjernet støtte for +/- operatører på rektangulære domener; bruker sette ()
- Nylig Iverk Egenskaper
- implementert == /! = For rektangulære, assosiativ, og spredte domener
- Standard Fordelinger
- lagt til en første-utkast 'Replikert' distribusjon for lagring av data redundant
- (se eksempler / primere / distributions.chpl)
- forbedret 'Block-Cyclic ", tilstrekkelig til riktig implementere HPCC PTRANS og HPL
- (se eksempler / HPCC / ptrans.chpl, hpl.chpl; eksempler / primere / distributions.chpl)
- fjernet redundans i spesifikasjon av lederiteratorer mellom domener / arrays
- standardmoduler
- lagt INFINITY og NAN konstanter til Math.chpl modul
- (se 'Math "under & quot; Standard Modules & quot; i språket spec)
- lagt isinf () og isfinite () testrutiner til Math.chpl modul
- (se 'Math "under & quot; Standard Modules & quot; i språket spec)
- lagt et halvt dusin flere rutiner til GMP.chpl modul
- Dokumentasjon
- lagt til en ny teknisk notat som beskriver brukerdefinert domene kartgrensesnitt
- (se doc / tech / README.dsi)
- gjort mange forbedringer i språkspesifikasjonen
- kraftig omlegging av domener kapittelet for å bedre klarhet / nøyaktighet
- bedre og enhetlig struktur of Records og klasser kapitler
- kraftig omlegging av Domene Maps kapittelet for å bedre klarhet / nøyaktighet
- oppkalt eksempel koder for å gi kryssreferanse til eksempler / spec / programmer
- avklart lovligheten av etiketten / pause / fortsette i parallelle sløyfer
- oppdatert beskrivelsene av lese [ln] / skrive [ln]
- fikset noen problemer i filfelt bestilling
- reforma spesifikasjonen som en "bok" i LaTeX
- ulike mindre reparasjoner av skrivefeil / feil
- forbedrede definisjoner / beskrivelser av flere vilkår
- lagt dokumentasjon av locale.name
- og mange andre endringer ...
- oppdatert rask referansedokument for å inkludere def- & gt; proc / ITER endring, justere op .
- omskrev / omorganisert README.extern å avklare forklaringer og få up-to-date
- lagt en README beskriver "lokale" statement (doc / tech / README.local)
- lagt en README beskriver flyktige typer (doc / tech / README.volatile)
- oppdatert README.comm-diagnostikk for å nevne raske gaffel statistikk
- oppdaterte ulike README-filer
- Eksempel Codes
- plassert fleste kode eksempler fra språket spec. til en ny spec / underkatalog
- forbedret primere / katalogen:
- lagt til en ny primer for bruk av prosedyrer (primere / procedures.chpl)
- lagt en grunnleggende primer for domener (primere / domains.chpl)
- omdøpt steder primer til locales.chpl og forbedret det
- forbedret distribusjoner primer og lagt Block-Sykliske og gjenskapt bruker
- oppdatert utvalget primer (grunning / range.chpl)
- forbedret iteratorer primer (grunning / iterators.chpl)
- forbedret reduksjoner primer (grunning / reductions.chpl)
- lagt getCurrentTime () til tidtakere primer (grunning / timers.chpl)
- lagt beskrivelser av typen aliaser og config typer å variabler primer
- (se primere / variables.chpl)
- forbedret HPCC / benchmarks katalogen
- lagt første versjonen av HPCC PTRANS å HPCC / katalog (ptrans.chpl)
- lagt renere versjon av HPCC HPL å HPCC / katalog (hpl.chpl)
- lagt et varianter / underkatalog til eksempler / HPCC å vise andre tilnærminger
- lagt stream-promoted.chpl vise bruk av opprykk i global STREAM Triad
- lagt ra-cleanloop.chpl vise renere (men foreløpig saktere) RA kernel
- forbedrede toppnivå eksempler:
- omdøpt eksisterende & quot; Hei, verden & quot; eksempler for å foreslå en logisk leserekkefølge
- (se eksempler / hallo * .chpl)
- lagt data parallelle og distribuerte data parallelle Hello, World eksempler
- (se eksempler / hello3-datapar.chpl, eksempler / hello4-datapar-dist.chpl)
- lagt kommentarer til de ulike hallo, verden eksempler (eksempler / hallo * .chpl)
- oppdatert alle eksempler på aktuelle språk semantikk
- bruke "proc '/' ITER" heller enn "def"
- oppdatering til å reflektere ny serie semantikk
- Plattformspesifikke Merknader
- for Cray XT / Cray XE, forbedret aprun og PBS-aprun kastere
- (se & quot; Launcher-spesifikke notater & quot; nedenfor)
- for Cray SEND, lagt til støtte for parallelle loops løpet områder
- for Cray SEND, lagt generasjon noalias pragmas å forall sløyfe variabler
- lagt til støtte for BSC sin MareNostrum inkludert docs og en spesiell bærerakett
- (se doc / plattformer / README.marenostrum)
- Launcher-spesifikke notater
- lagt launcher spesifikke alternativer til --help evne
- bedre spredning av exit statuskoder gjennom kastere
- endret bæreraketter for å støtte exec-basert (i stedet for systembasert) kommandoer
- gjort kastere bruke "unlink" heller enn systemet ('rm') for å fjerne midlertidige filer
- lagt en bærerakett for BSC sin MareNostrum
- redusert antall midlertidige filer som brukes til å fange opp produksjonen av "systemet" kommandoer
- aprun launcher forbedringer:
- lagt en --cc flagg for å spesifisere CPU oppdrag w / i en node
- lagt en -q flagg for å kjøre launcher i stille modus
- lagt debug mulighet via CHPL_LAUNCHER_DEBUG å holde tmp filer rundt
- PBS-aprun launcher forbedringer:
- lagt en --cc flagg for å spesifisere CPU oppdrag w / i en node
- lagt debug mulighet via CHPL_LAUNCHER_DEBUG å holde tmp filer rundt
- ryddet opp produksjonen for å bli kvitt noen overflødige utskrift
- gjort launcher støtte vårt testsystem
- lagt --walltime og --queue flagg for å launcher som alternativer til env. vars.
- Iler Endringer
- gjort kompilatoren print 'true' / 'falske' out in typen signaturer i stedet for 1/0
- lagt config param 'noRefCount "for å deaktivere referansetelling (kan lekke minne)
- Iler Flags
- lagt en --print-callstack-on-feil flagg for å vise hva som førte til en dårlig samtale
- lagt en no-Codegen flagg for å hoppe over kodegenerering og knytte fase
- Interoperabilitet Endringer
- lagt til støtte for extern C & quot; klasser & quot; (Pekeren-til-struct typer)
- lagt til støtte for extern consts (se README.extern)
- Feilmelding Forbedringer
- lagt til en advarsel foreldreløs use 'uttalelser utenfor erklært moduler
- (f.eks 'bruke M1; modul M2 {} skal vanligvis være "modul M2 {bruk M1;})
- gjort parse-tiden feilmelding bruke standard 'filnavn: linjenr:' format
- generert en feilmelding for å henvise til en klasse navn i en primær metode
- (f.eks 'klasse C {def Cm () {...}}' nå genererer en feilmelding)
- feilrettinger / Nye Semantiske Sjekker (for gamle semantikk)
- forhindret config typer blir innstilt med gjennomføringstid kommandolinjeflagg
- fast kompilatoren evne til å håndtere fagforeninger med ingen felt
- fast reduksjonene minloc / maxloc å handtera tomme serier / subranges av verdier
- fikset en bug der 'path' argument til fil konstruktører ble ignorert
- gjort tomme fagforeninger fungere riktig
- fast overløp problem i chunking opp områder for distribusjon / parallellise
- fikset en bug som involverer støtte for tomme extern posttyper
- fikset en bug som involverer extern funksjoner som returnerer poster
- fikset en bug knyttet til kopiering av eksterne poster
- fast gjennomføring av +/- operatører på assosiativ / sparsom domener
- fikset en bug knyttet til filnavn baserte modul navn som inneholder flere "s.
- lagt feilmeldinger for å utvide / utvendig / innvendig på uregelmessige domener
- lagt en feil for konstruktører / destructors med en spesifisert returtype
- fikset et par bugs relatert til "rask på" optimalisering
- lagt til en sjekk mot bygging av klasser uten å spesifisere generiske felt
- Emballasje Endringer
- lagt syntaks utheving kode for GNU kilde høydepunkt
- (se etc / kilde høydepunkt / README)
- forbedrede emacs fargelegging støtte for versjon 22.x
- (se etc / emacs / README)
- vedrørende vim syntaks farge for å reflektere nye "proc '/' Iter" søkeord
- (se etc / vim / README)
- lagt et skript for å konvertere eksisterende koder 'bruk av' def 'til' ITER '/' proc '
- (se $ CHPL_HOME / util / konvertere-defs)
- fjernet multirealm eksempler og dokumentasjon for tiden
- tredjepartsprogramvare Endringer
- oppdatert GASNet til versjon 1.16.1
- lagt kopier av BSC er Nanos ++ og Sandia Qthreads
- (se tredjepart / README)
- laget en post-installere skritt for GASNet som endrer absolutte stier til relative
- fjernet PVM for tiden på grunn av ustabilitet
- Runtime Library Endringer
- lagt single-locale oppgave lag for Nanos ++ (BSC) og Qthreads (Sandia)
- flere forbedringer i runtime tasking lag:
- lagt til et nytt grensesnitt for å ha tasking lag samtalen chpl_main ()
- endret tasking init funksjon for å ta maxThreadsPerLocale / callStackSize args
- lagt en oppgave flyteevne til tasking lag grensesnittet
- forbedret runtime-koden for å unngå å bruke sync vars før initialisering tasking
- fjernet makro-ized form av tasking grensesnitt; ved hjelp av standard navn i stedet
- enhetlig navngiving av alle oppgave lag rutiner for å chpl_sync _ * () og chpl_task _ * ()
- fjernet kravet om å implementere enkelt variabel grensesnittet
- flyttet oppsigelse av tråder fra FIFO tasking lag til pthreads threading
- forenklet gjennomføring av synkroniserings variabler i pthread threading lag
- flyttet ansvaret for tråden teller fra FIFO tasking til pthread threading
- flere forbedringer i runtime kommunikasjon lag:
- restrukturert kommunikasjonsgrensesnitt for å støtte lengde / type argumenter
- lagt et grensesnitt for ikke-blokkerende få operasjoner til komm. grensesnitt
- enhetlig all ekstern få driften til å bruke CHPL_COMM_GET () makro
- refactored / omdøpt kommunikasjonsgrensesnittet overskrifter
- Testing System
- vesentlig forbedret ytelsestesting og grafiske mulighetene
- (se kommentarer på forsiden av start_test for dokumentasjon)
- forbedret testing system støtte til å rydde opp etter seg selv
- ekstra muligheten til å unngå å bruke noen indirekte av stdin
- lagt et alternativ å gi en systemomfattende prediff alternativ
- ekstra muligheten til å bruke en bærerakett mors timeout funksjon fremfor Pythons
- forbedret hvordan testing system dreper en test som går ut på tid
- fikset en bug der .preexec filer jobbet bare hvis '.' var i veien
- Intern
- lagt en --break-on-id kompilatoren flagg for utviklere å finne AST node skaper
- forbedret organisering av util / katalogen innholdet
- endret måten versjonsnumrene er beregnet / vises for SVN-baserte brukere
- lagt til støtte for oppgave- / trådspesifikk modul kode
- lagt en evne til å skrive ut AST teller allokert mellom hver passering
- lagt til en ny gdb alias til kompilatoren --gdb: 'loc "skriver en AST node beliggenhet
- kraftig forbedret implementering av pragmas / flagg for å unngå feil tilfeller
- fjernet flere tilfeller av unødvendig streng sammenligninger i kompilatoren
- fjernet utsatt for feil bruk av CHPL_TASKS og CHPL_THREADS som preprosessor symboler
- lagt bestPractices dokumentasjon for utviklere (ikke inkludert i utgivelsen)
- endret intern munging av '=' og '==' til 'ASSIGN' og 'lik' henholdsvis
- lagt en --print-id-on-error utvikler flagget for å skrive ut AST ID på feil
- forbedret strenghet C ++ prototype sjekke
- lagt eksterne bidragsyter avtaler til SVN treet (ikke på release)
- lagt til en forestilling om interne typer som brukes av kompilatoren, men ikke bruker
Kommentarer ikke funnet