Chapelle est un nouveau langage de programmation parallèle développé par Cray Inc. dans le cadre du programme des systèmes informatiques haute productivité DARPA-conduit (HPCS). Chapelle est conçu pour améliorer la productivité des utilisateurs d'ordinateurs haut de gamme tout en servant aussi un modèle de programmation parallèle portable qui peut être utilisé sur les clusters de matières premières ou de systèmes de bureau multicœurs. Chapelle vise à améliorer considérablement la programmation des ordinateurs parallèles à grande échelle tout en correspondant ou de battre la performance et la portabilité des modèles de programmation actuels comme MPI.
L'application de la Chapelle prend en charge un modèle d'exécution multithread via abstractions de haut niveau pour le parallélisme de données, parallélisation des tâches, la concurrence, et le parallélisme imbriqué. & Nbsp; le type de lieu de chapelle permet aux utilisateurs de spécifier et de la raison au sujet du placement des données et des tâches sur une architecture cible afin à accorder pour la localité. Chapelle soutient-vue globale des données des agrégats avec les implémentations définis par l'utilisateur, les opérations sur les structures de données distribuées permettant d'être exprimé d'une manière naturelle. Contrairement à beaucoup de niveau supérieur langages parallèles précédentes, chapelle est conçu autour d'une philosophie multi-résolution, permettant aux utilisateurs d'écrire d'abord le code très abstraite, puis ajouter par incréments plus en détail jusqu'à ce qu'ils soient aussi près de la machine que leurs besoins l'exigent. Chapelle soutient la réutilisation du code et de prototypage rapide par la conception orientée objet, l'inférence de type, et des fonctionnalités pour la programmation générique.
Chapelle a été conçu à partir des principes plutôt que par l'extension d'une langue existante. Il est un langage structuré en blocs impératif, conçu pour être facile à apprendre pour les utilisateurs de C, C ++, Fortran, Java, Perl, Matlab, et d'autres langues populaires. Bien Chapelle fonde sur les concepts et la syntaxe de nombreuses langues précédentes, ses caractéristiques parallèles sont plus directement influencés par ZPL, High-Performance Fortran (HPF) et le Cray MTA & trade; / Cray XMT & trade; extensions C et Fortran
Quoi de neuf dans cette version:.
- Faits saillants (voir ci-dessous pour plus de détails)
- Split 'def' mot-clé dans 'proc' (des procédures) et 'iter' (pour les itérateurs)
- (voir '$ CHPL_HOME / util / convert-defs --help' pour l'aide mise à jour des codes existants)
- ajouté distribution »Replicated 'et l'amélioration de la distribution' Bloc-cyclique"
- (voir & quot; standard Distributions & quot; dans spec et des exemples / amorces / distributions.chpl)
- ajouté couches de tâches unique locale pour Nanos ++ (BSC) et qthreads (Sandia)
- (voir doc / README.tasks)
- au remaniement de la sémantique et de la mise en œuvre de la portée
- (voir & quot; Les changements sémantiques / Changements à Chapel Langue & quot; ci-dessous pour les détails)
- support initial pour les types volatiles: bool, int, uint, réel, imag
- (voir doc / technotes / README.volatile)
- soutien à consts et classes Externe (pointeurs-à-structs)
- (voir doc / technotes / README.extern)
- un support amélioré pour le parallélisme de données sur le Cray XMT
- vastes améliorations aux codes de l'échantillon dans le répertoire examples /
- (voir "Codes d'exemple, 'ci-dessous et des exemples / README)
- ajouté la plupart des exemples de code à partir de la spécification d'un nouveau répertoire examples /
- (voir les exemples / spec / *)
- a ajouté une note technique décrivant le domaine carte interface définie par l'utilisateur
- (voir doc / technotes / README.dsi)
- vastes mises à jour de la spécification du langage
- (voir «Documentation» ci-dessous)
- plusieurs améliorations à l'attribution des tâches d'exécution et de couches de communication
- (voir & quot; Runtime Library Changes & quot; ci-dessous)
- syntaxique / Nommer les modifications
- Split 'def' mot-clé dans 'proc' (des procédures) et 'iter' (pour les itérateurs)
- (voir '$ CHPL_HOME / util / convert-defs --help' pour l'aide mise à jour des codes existants)
- domaines renommés 'arithmétiques' / tableaux à des domaines '' rectangulaires / tableaux
- Ajout du support pour virgule flottante littéraux de la forme '1.e ... "
- (auparavant, seul '1e ... »et« ... 1.0e' ont été pris en charge)
- Les changements sémantiques / Changements à Chapel Langue
- plusieurs améliorations à des plages (voir "Ranges" chapitre dans la spécification de la langue):
- ajouté un concept d'alignement pour indiquer un modulo d'alignement | foulée |
- ajouté un opérateur 'align' et requête aux gammes de spécifier l'alignement / de requête
- (par exemple, '1..10 par 3 align 2' = & gt; '2, 5, 8' depuis le 2 == == 5 8, mod 3)
- == défini sur les gammes en termes de séquences entières qu'ils génèrent
- ident défini (R1, R2) pour dire si R1 et R2 sont identiques sémantiquement
- défini '# k' pour k & lt; 0 en ce sens & quot; compter à partir de la fin de la gamme & quot;
- ajouté «première», les méthodes alignedHigh 'à des plages' dernière ',' alignedLow, '
- (par exemple, '1..10 par -2' = & gt; première == 10, dernière == 2, alignedLow = 2, alignedHigh = 10)
- Ajout du support pour une variété de nouvelles fonctions gamme de requête
- (par exemple, alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- Ajout du support pour bool volatile, int, uint, réelle, et les types de imag
- (voir doc / technotes / README.volatile)
- a ajouté un chèque de fin de fichier pour le type de fichier
- (par ex., 'Tout! Infile.eof ...')
- retiré le soutien pour le traitement de «retour» dans la propriété iterator comme un «rendement»
- (par exemple, le changement 'foo iter () {return x;}' à 'foo iter () {x rendement; retour;}')
- a ajouté le support de modules de référencement sans avoir d'abord «les ing use'-
- (par exemple, le module M1 {var x ...} module M2 {...} ... M1.x est maintenant légal)
- ajouté une requête callStackSize le type de paramètres régionaux
- (par exemple, «here.callStackSize 'renvoie la taille de pile d'appel sur la localisation en cours)
- supprimé le point-virgule précédemment nécessaire de la fin des déclarations d'énumération
- (par exemple, «couleurs d'énumération {rouge, bleu, vert} 'est maintenant légal; préalablement nécessaire'; ')
- Ajout du support pour une seule virgule finale à la fin des listes d'énumération
- (par exemple, «couleurs d'énumération {rouge, bleu, vert,} 'est maintenant légal)
- Support supprimé car +/- opérateurs sur des domaines rectangulaires; utilisez translate ()
- Caractéristiques nouvellement mis en œuvre
- == œuvre /! = Pour rectangulaire, associative, et rares domaines
- Distributions standard
- a ajouté un premier projet de distribution »répliqués» pour stocker des données de manière redondante
- (voir les exemples / amorces / distributions.chpl)
- amélioration 'Block-cyclique », suffisant pour mettre en œuvre correctement HPCC PTrans et HPL
- (voir les exemples / hpcc / ptrans.chpl, hpl.chpl; exemples / amorces / distributions.chpl)
- redondance enlevé dans la spécification des itérateurs leader entre domaines / tableaux
- Modules standard
- ajouté constantes INFINITY et Nan au module Math.chpl
- (voir 'Math' sous & quot; & quot modules standard; dans spec de langue)
- ajouté isinf () et isfinite () routines de test au module Math.chpl
- (voir 'Math' sous & quot; & quot modules standard; dans spec de langue)
- ajouté une demi-douzaine d'autres routines pour le module GMP.chpl
- Documentation
- a ajouté une nouvelle note technique décrivant le domaine carte interface définie par l'utilisateur
- (voir doc / technotes / README.dsi)
- apporté de nombreuses améliorations à la spécification du langage
- des révisions majeures au chapitre des domaines pour améliorer la clarté / précision
- amélioration et la structure unifiée des dossiers et Classes chapitres
- révisions majeures à ce chapitre Plans de domaine pour améliorer la clarté / précision
- exemple nommé codes pour fournir renvoi à des exemples / SPEC / programmes
- clarifiée la légalité de l'étiquette / pause / poursuivre en boucles parallèles
- mis à jour les descriptions de lire [En] / écriture [En]
- Correction de quelques problèmes dans les domaines de fichiers ordonnant
- reformaté la spécification comme un «livre» en LaTeX
- diverses corrections mineures de fautes de frappe des erreurs /
- amélioration des définitions / descriptions de plusieurs termes
- ajouté documentation des locale.name
- et de nombreux autres changements ...
- mise à jour le document de référence rapide pour inclure nition & gt; proc / changement iter, aligner op .
- réécrit / réorganisé README.extern explications pour clarifier et d'élever à jour
- ajouté un fichier README décrivant la déclaration «local» (doc / technotes / README.local)
- ajouté un fichier README décrivant types volatils (doc / technotes / README.volatile)
- README.comm-diagnostic mis à jour les statistiques mentionnent fourche rapides
- différents fichiers README mises à jour
- des exemples de codes
- placé la plupart des exemples de code à partir de la spécification de langage. à un nouveau répertoire / sous-spec
- amélioré la amorces / répertoire:
- ajoute une nouvelle amorce pour l'utilisation de procédures (amorces / procedures.chpl)
- ajouté une amorce de base pour les domaines (amorces / domains.chpl)
- rebaptisé les lieux apprêt locales.chpl et a amélioré
- amélioration de la distribution primaire et ajoutée utilisations Bloc-cycliques et répliquées
- mise à jour la gamme amorce (amorces / range.chpl)
- amélioré la itérateurs amorce (amorces / iterators.chpl)
- amélioré la réduction primaire (amorces / reductions.chpl)
- ajouté getCurrentTime () à l'amorce des minuteries (amorces / timers.chpl)
- ajouté descriptions d'alias de type et les types de configuration des variables amorce
- (voir amorces / variables.chpl)
- amélioration répertoire HPCC / benchmarks
- ajouté première version de HPCC PTrans à hpcc / répertoire (ptrans.chpl)
- ajouté version plus nette de HPCC HPL à hpcc / répertoire (hpl.chpl)
- a ajouté un / sous-répertoire de variantes à des exemples / hpcc à présenter d'autres approches
- ajouté flux-promoted.chpl pour montrer l'utilisation de la promotion mondiale dans STREAM Triad
- ajouté ra-cleanloop.chpl montrer plus propre (mais actuellement plus lent) noyau RA
- exemples de haut niveau améliorés:
- rebaptisé existante & quot; bonjour, monde & quot; exemples suggèrent un ordre de lecture logique
- (voir les exemples / bonjour * .chpl)
- ajouté données données parallèles et distribués parallèles bonjour, des exemples du monde
- (voir les exemples / hello3-datapar.chpl, exemples / hello4-datapar-dist.chpl)
- ajouté des commentaires aux différents bonjour, des exemples du monde (exemples / bonjour * .chpl)
- mise à jour tous les exemples de la sémantique des langages actuels
- utiliser 'proc' / 'iter' plutôt que 'def'
- mise à jour pour refléter les nouvelles sémantique de gamme
- Notes de chaque plateforme
- pour Cray XT / Cray XE, amélioré les aprun et pbs-aprun lanceurs
- (voir & quot; Launcher notes propres au & quot; ci-dessous)
- pour Cray XMT, a ajouté le support pour les boucles parallèles sur des plages
- pour Cray XMT, a ajouté génération de noalias pragmas à forall variables de boucle
- Ajout du support pour la MareNostrum de BSC y compris docs et un lanceur spécial
- (voir doc / plates-formes / README.marenostrum)
- Lanceur spécifique notes
- ajouté des options spécifiques à lanceur à --help capacité
- amélioration de la propagation des codes d'état de sortie à travers lanceurs
- changé lanceurs pour soutenir exec-base (plutôt que basé sur le système) les commandes
- fait lanceurs utilisent 'unlink' plutôt que le système ('rm') pour supprimer les fichiers temporaires
- a ajouté un lanceur de BSC MareNostrum
- réduction du nombre de fichiers temporaires utilisés pour capturer la sortie de «système» des commandes
- amélioration de lanceurs de aprun:
- ajouté un drapeau --cc de préciser l'affectation de CPU w / dans un noeud
- ajouté un drapeau -q pour exécuter le lanceur en mode silencieux
- ajouté la capacité de débogage via CHPL_LAUNCHER_DEBUG de garder les fichiers temporaires autour
- amélioration du lanceur pbs-aprun:
- ajouté un drapeau --cc de préciser l'affectation de CPU w / dans un noeud
- ajouté la capacité de débogage via CHPL_LAUNCHER_DEBUG de garder les fichiers temporaires autour
- sortie nettoyé pour se débarrasser de certaines impressions étrangères
- fait du soutien du lanceur notre système de test
- --walltime et drapeaux --queue ajouté au lanceur comme des alternatives à env. vars.
- Changements compilateur
- fait l'impression de compilateur «vrai» / «faux» dans Type signatures plutôt que 1/0
- ajouté config param 'noRefCount' pour désactiver le comptage de référence (peut fuite de mémoire)
- Drapeaux de compilation
- ajouté un drapeau --print-callstack-on-error pour montrer ce qui a conduit à un mauvais call
- ajouté un drapeau --no-codegen de sauter la génération de code et de phase reliant
- Interopérabilité modifications
- soutien externe C & quot ajouté; (Types pointeur-à-struct)
- Ajout du support pour consts Externe (voir README.extern)
- Amélioration des messages d'erreur
- ajouté un avertissement orphelin «utilisation» des déclarations en dehors de modules déclarés
- (par exemple, «utiliser M1; module M2 {} 'doit généralement être« module M2 {utilisation M1;}')
- fait message d'erreur d'analyse en temps utiliser le 'filename: de lineno: «format standard
- généré un message d'erreur pour faire référence à un nom de classe dans une méthode primaire
- (par exemple, «classe C {def cm () {...}} 'génère désormais un message d'erreur)
- Correction de bugs / nouveaux contrôles sémantique (pour les anciens sémantique)
- empêché types de configuration d'être réglée à l'aide des drapeaux temps d'exécution de ligne de commande
- fixé la capacité du compilateur à manipuler les syndicats sans champs
- fixe les réductions minloc / maxloc pour gérer vides plages / sous-gammes de valeurs
- Correction d'un bug dans lequel le 'chemin' argument de constructeurs de fichiers a été ignoré
- fait syndicats vides fonctionnent correctement
- Correction d'un problème de débordement dans la segmentation des gammes pour la distribution / parallélisation
- corrigé un bug impliquant un soutien pour vides extern types d'enregistrement
- corrigé un bug impliquant fonctions extern qui retournent les dossiers
- correction d'un bug lié à la copie de documents externes
- la mise en œuvre fixe de +/- opérateurs sur associative / domaines clairsemées
- Correction d'un bug concernant les noms de module basé filename contenant multiples 'de.
- Messages d'erreur ajoutée pour développer / extérieur / intérieur sur des domaines irréguliers
- ajoute une erreur pour les constructeurs / destructeurs avec un type de retour spécifiée
- fixé une paire de bogues relatifs à la "rapide sur« l'optimisation
- Ajout d'une vérification contre la construction de classes sans spécifier domaines génériques
- Les changements d'emballage
- ajouté syntaxe surligneur code pour GNU source culminant
- (voir etc / source-highlight / README)
- emacs amélioration de la couleur support pour la version 22.x
- (voir etc / emacs / README)
- mises à jour de vim coloration de la syntaxe pour refléter les nouvelles 'proc' / mots clés «ITER»
- (voir etc / vim / README)
- ajouté un script pour convertir de l'utilisation de 'def codes existants »à« iter' / 'proc'
- (voir $ CHPL_HOME / util / convert-defs)
- exemples multirealm enlevés et la documentation pour le moment
- Logiciels tiers les modifications
- mise à jour vers la version 1.16.1 GASNET
- ajouté copies de Nanos de BSC ++ et de Sandia qthreads
- (voir tiers / README)
- fait une étape de post-installation pour GASNET qui change par rapport aux chemins absolus
- PVM retiré pour le moment en raison de l'instabilité
- Runtime Library modifications
- ajouté couches de tâches unique locale pour Nanos ++ (BSC) et qthreads (Sandia)
- plusieurs améliorations à la couche de l'exécution de tâches:
- ajoute une nouvelle interface pour avoir la couche de tâches appel chpl_main ()
- changé tâches fonction init de prendre args maxThreadsPerLocale / callStackSize
- ajouté une capacité de rendement de la tâche à l'interface de couche de tâches
- amélioration de code d'exécution pour éviter d'utiliser la synchronisation vars avant d'initialiser tâches
- enlevé sous forme de macro-isée de l'interface multitâche; utilisant à la place des noms standard
- nommage unifié de toutes les routines de la couche tâche à chpl_sync _ * () et chpl_task _ * ()
- Retrait de l'exigence de mettre en œuvre l'interface seule variable
- cessation déplacé de fils de tâches FIFO couche pthreads filetage
- la mise en œuvre simplifiée des variables de synchronisation dans la couche d'enfilage pthread
- déplacé la responsabilité de nombre de threads de tâches FIFO Pthread filetage
- plusieurs améliorations à la couche de communication de l'exécution:
- restructuré l'interface de communication pour étayer les arguments de longueur / type
- a ajouté une interface pour non-blocage obtenir des opérations à la comm. Interface
- unifiés tout obtenir à distance les opérations à utiliser CHPL_COMM_GET () macro
- remaniée renommés les en-têtes / d'interface de communication
- Testing System
- considérablement amélioré les tests de performance et de capacités graphiques
- (voir les commentaires à l'avant de start_test pour la documentation)
- amélioré le soutien du système de test pour nettoyer après lui-même
- capacité supplémentaire pour éviter d'utiliser toute indirection de stdin
- ajouté une option pour fournir une option de prediff l'échelle du système
- Ajout de la possibilité d'utiliser la fonction de temporisation maternelle d'un lanceur plutôt que de Python
- amélioré la façon dont le système de test tue un test qui fois sur
- correction d'un bug dans lequel les fichiers .preexec ne travaillaient que si '.' était dans votre chemin
- intérieur
- ajouté un drapeau du compilateur --break-sur-id pour les développeurs de localiser nœud AST crée
- amélioration de l'organisation des matières util / Répertoire
- changé la façon dont les numéros de version sont calculés / affiché pour les utilisateurs basés sur SVN
- Ajout du support pour / code de module spécifique fils task-
- ajouté une capacité d'imprimer les comptes AST répartis entre chaque passe
- ajouté un nouvel alias de gdb pour compilateur --gdb: 'loc' imprime emplacement d'un nœud AST
- grandement amélioré la mise en œuvre de Pragmas / drapeaux pour éviter les cas d'erreur
- enlevé plusieurs cas de comparaisons de chaînes inutiles dans le compilateur
- supprimé l'utilisation des erreurs de CHPL_TASKS et CHPL_THREADS comme des symboles de préprocesseur
- ajouté BestPractices la documentation pour les développeurs (non inclus dans la version)
- changé munging interne de '=' et '== »à« ASSIGN »et« égaux »respectivement
- ajouté un drapeau de développeur --print-id-sur-erreur d'imprimer AST ID sur les erreurs
- amélioration de la rigueur du prototype C de la vérification
- ajouté accords de contributeurs externes à l'arbre SVN (pas de presse)
- ajoute une notion de types internes utilisés par le compilateur mais pas l'utilisateur
Cours & quot;
Commentaires non trouvées