チャペルはDARPA主導の高生産性コンピューティングシステムプログラム(HPCS)の一部として、クレイ社が開発中の新しい並列プログラミング言語です。チャペルも商品クラスタまたはデスクトップ·マルチコア·システムで使用することができる携帯用の並列プログラミングモデルとしてながらハイエンドコンピュータユーザの生産性を向上させるために設計されています。チャペルは、一致またはMPIのような現在のプログラミングモデルの性能と携帯性を破っている間非常に大規模な並列計算機のプログラマビリティの向上に努めています。
チャペルアプリはデータ並列、タスク並列、並行処理、およびネストされた並列処理のための高レベルの抽象化を介して、マルチスレッド実行モデルをサポートしています チャペルのロケールタイプが順に指定し、ターゲットアーキテクチャ上のデータとタスクの配置についての理由することができます局所性のために調整します。チャペルは、自然に発現することが、分散データ構造上の操作を可能にして、ユーザー定義の実装とグローバルビューデータ集計をサポートしています。多くの以前のより高いレベルの並列言語とは対照的に、礼拝堂は最初は非常に抽象コードを書いて、彼らは彼らのニーズを必要とするマシンに近いですまで、増分より詳細な情報を追加することをユーザーに許可する、多重解像度哲学を中心に設計されています。チャペルは、オブジェクト指向設計、型推論、および一般的なプログラミングのための機能を介して、コードの再利用やラピッドプロトタイピングをサポートしています。
チャペルは、第一原理からではなく、既存の言語を拡張することによって設計されました。これは、C、C ++、FortranのはJava、Perlの、Matlabの、および他の一般的な言語のユーザーのために学習することが容易になるように設計が不可欠ブロック構造の言語です。 /クレイXMT&トレード;チャペルが多く、以前の言語の概念と構文に基づいていますが、その並列機能は、最も直接的ZPL、高性能のFortran(HPF)、およびクレイMTA&トレードの影響を受けています。 CとFortranの拡張機能
このリリースの新機能:
このハイライト(詳細は下記を参照してください)
スプリット(イテレータのための)「DEF」(手順については)「PROC」へのキーワードと「ITER」
(既存のコードを更新する助けのための '$ CHPL_HOME / UTIL /変換-DEFS --help'を参照)
追加された「レプリケート」分布および改善された「ブロック·サイ」配布
(参照"スタンダードディストリビューション"仕様と例/プライマー/ distributions.chplで)
ナノス++(BSC)とQthreads(サンディア)用の単一のロケールタスク層を追加しました
(DOC / README.tasksを参照してください)
範囲のセマンティクスと実装の主要なリワーク
(参照"セマンティック変更/チャペル言語&QUOTへの変更;以下に詳細用)
揮発性タイプの初期サポート:BOOL、INT、UINT、実、虚部
(DOC /技術情報/ README.volatileを参照してください)
externのconstsとクラス(ポインタ対構造体)のサポート
(DOC /技術情報/ README.externを参照してください)
クレイXMT上のデータ並列化のための改良されたサポート
例/ディレクトリのサンプル·コードを大幅に改善
(以下の「例のコード」と例/ READMEを参照してください)
新しい例/ディレクトリに仕様から、ほとんどのコード例を追加しました
(* /例/仕様を参照してください)
ユーザー定義のドメインマップのインターフェイスを記述したテクニカルノートを追加しました
(DOC /技術情報/ README.dsiを参照してください)
言語仕様を大幅に更新
(以下「マニュアル」を参照してください)
ランタイム·タスクと通信層にいくつかの改良
(参照"ランタイムライブラリの変更"下記)
統語/ネーミングの変更点
スプリット(イテレータのための)「DEF」(手順については)「PROC」へのキーワードと「ITER」
(既存のコードを更新する助けのための '$ CHPL_HOME / UTIL /変換-DEFS --help'を参照)
「矩形」ドメイン/アレイに名前を変更した「算術」ドメイン/アレイ
フォームの浮動小数点リテラルのサポートを追加 '1.Eを...」
(以前は、唯一の「1E ...」と「1.0E ... 'サポートされていました)
セマンティック変更/チャペル言語の変更
範囲にいくつかの改良(言語仕様の「範囲」の章を参照してください):
アライメントモジュロを示すために、位置合わせの概念を追加|ストライド|
/クエリの配置を指定するには、範囲に「整列」演算子やクエリを追加しました
(例えば、=&GT '1..10 2アライン3によって'; '2、5、8' 2 == 5 == 8、以降のmod 3)
それらが生成する整数配列の点でレンジで定義され==
R1とR2は、意味的に同一であるかどうかを言うために定義されたIDENT(R1、R2)
K&LTのための定義された '#kを'; 0の意味&QUOTとして;範囲&QUOTの終わりから数えます。
「alignedLowは、「範囲にalignedHigh」の方法は、「最初の」「最後の」追加しました
(例えば、「1..10によって-2 '=>最初== 10、最後== 2、alignedLow = 2、alignedHigh = 10)
新しい範囲のクエリのさまざまな機能のサポートが追加されました
(例えば、alignLow()、hasFirst()、hasLowBound()、isAligned()、boundsCheck()...)
揮発性BOOL、INT、UINT、実数、および虚部タイプのサポートを追加しました
(DOC /技術情報/ README.volatileを参照してください)
ファイルの種類にエンドオブファイルのチェックを追加しました
(例えば、「しばらく!infile.eof ... ')
「歩留まり」としてイテレータに「リターン」を治療するためのサポートを削除
(; 'へのITERのfoo(){降伏X;リターン;}'例えば、変化「ITERのfoo(){リターンX} ')
最初の「use'-るそれらなしでモジュールを参照するにサポートを追加しました
(例えば、モジュールM1 {varの各X ...}モジュールM2 {... M1.xは...}今は合法です)
ロケールタイプにcallStackSizeクエリを追加しました
(例えば、「here.callStackSize」は現在のロケールでのコールスタックのサイズを返します)
enum宣言の終わりから、以前に必要なセミコロンを削除
(例えば、「列挙型の色{赤、青、緑} 'は今合法である。以前に必要な'; ')
列挙型リストの最後に単一の末尾のコンマのサポートが追加されました
(例えば、「列挙型の色{赤、青、緑、} 'になりました法律です)
長方形のドメインの+/-オペレータのサポートを削除。 )(翻訳を使用
新たに実装された機能
== /!=長方形のため、連想を実装し、スパースドメイン
標準のディストリビューション
冗長データを格納するための第1ドラフト「レプリケート」の分布を追加しました
(例/プライマー/ distributions.chplを参照してください)
改良された「ブロック·サイ」、正しくHPCC PTRANSとHPLを実装するのに十分な
(;例/プライマー/ distributions.chpl例/ HPCC / ptrans.chpl、hpl.chplを参照してください)
ドメイン/アレイ間のリーダーイテレータの仕様で削除冗長性
標準モジュール
Math.chplモジュールに追加された無限大とNaN定数
(QUOT&下に「数学」を参照してください。標準モジュールおよびQUOT;言語仕様で)
ISINF()isfiniteの()Math.chplモジュールにテストルーチンを追加しました
(QUOT&下に「数学」を参照してください。標準モジュールおよびQUOT;言語仕様で)
GMP.chplモジュールに半ダース以上のルーチンを追加しました
ドキュメンテーション
ユーザー定義のドメインマップのインターフェイスを記述した新しいテクニカルノートを追加しました
(DOC /技術情報/ README.dsiを参照してください)
言語仕様に多くの改良を行いました
明瞭さ/精度を向上させるドメインの章への主要な改訂
レコードとクラスの章の改善されたと、統一構造
明瞭さ/精度を向上させるためのドメインマップの章への主要な改訂
例/仕様/プログラムへのクロスリファレンスを提供するために、例のコードの名前
並列ループで継続/ラベル/ブレークの合法性を明らかに
[LN] / [LN]読み書きの記述を更新
ご注文のファイルのフィールドにいくつかの問題を修正
ラテックス中の「ブック」として指定を再フォーマット
誤字/ミスの様々なマイナーな修正
改善された定義/いくつかの用語の説明
locale.nameのドキュメントを追加しました
および他の多くの変更...
def-&GTを含むようにクイックリファレンスドキュメントを更新し、PROC / ITER変更、オペアンプを揃えます。
説明を明確にし、最新の持参するREADME.extern再編成/書き直し
「ローカル」の文を記述したREADMEを追加した(DOC /技術情報/ README.local)
揮発性の種類を説明するREADMEを追加した(DOC /技術情報/ README.volatile)
高速フォーク統計に言及する更新README.comm-診断
更新されたさまざまなREADMEファイル
例のコード
言語仕様から、ほとんどのコード例を置きました。新しい仕様/サブディレクトリに
プライマー/ディレクトリに改善:
手順を使用するための新たなプライマー(プライマー/ procedures.chpl)を追加
ドメインの基本的なプライマー(プライマー/ domains.chpl)を追加
locales.chplするロケールプライマーの名前を変更し、それを改善し
ディストリビューションプライマーを改善し、ブロック·サイとレプリケート用途を追加しました
レンジプライマー(プライマー/ range.chpl)を更新
イテレータプライマーを改善した(プライマー/ iterators.chpl)
削減プライマーを改善した(プライマー/ reductions.chpl)
タイマープライマー(プライマー/ timers.chpl)にgetCurrentTime()を追加
変数のプライマーに型の別名と設定タイプの説明を追加しました
(プライマー/ variables.chplを参照してください)
改良されたHPCC /ベンチマークディレクトリ
(ptrans.chpl)HPCC /ディレクトリにHPCC PTRANSの最初のバージョンを追加しました
(hpl.chpl)HPCC /ディレクトリにHPCC HPLのクリーナーバージョンを追加しました
他のアプローチを示すこと例/ HPCCに変異体/サブディレクトリを追加しました
グローバルSTREAMトライアドにおけるプロモーションの使用を示すために追加されたストリームpromoted.chpl
RAカーネルはクリーンな(しかし、現在は遅い)を示すために、RA-cleanloop.chplを追加しました
改善されたトップレベルの例:
名前を変更し、既存"こんにちは、世界"論理的な読み取り順序を提案する例
(*ハロー/ .chplの例を参照してください)
追加されたデータの並列分散データ並列こんにちは、世界の例
(例/ hello3-datapar.chpl、例/ hello4-datapar-dist.chplを参照してください)
にコメントを追加し、さまざまなハロー、世界の例(例/ハロー* .chpl)
現在の言語のセマンティクスにすべての例を更新しました
使用「PROC '/' iter 'にではなく、「DEF」
新しい範囲のセマンティクスを反映するために更新
プラットフォーム固有の注意事項
クレイXT /クレイXEのため、aprunし、PBS-aprunランチャーを改善し
(参照"ランチャー固有の注意事項"下記)
クレイXMTのために、範囲で並列ループのサポートが追加されました
クレイXMTのために、ループ変数FORALLにNOALIASプラグマの生成を追加しました
ドキュメントや特殊ランチャーなど、BSCのMareNostrumのサポートを追加しました
(ドキュメント/プラットフォーム/ README.marenostrumを参照してください)
ランチャー固有の注意事項
能力を--helpランチャー固有のオプションを追加しました
ランチャーを介して、終了ステータスコードの改良された伝播
コマンドベース-EXEC(よりもむしろシステムベース)をサポートするためにランチャーを変更
ランチャーは、一時ファイルを削除するために「リンク解除」ではなく、システム(「RM」)を使用して作られました
BSCのMareNostrumためのランチャーを追加しました
一時ファイルの数の減少は、「システム」コマンドの出力を取得するために使用さ
aprunランチャーの改良:
ノードで/ wのCPUの割り当てを指定する--ccフラグを追加しました
静かなモードで起動ツールを実行するための-qフラグを追加しました
周りのTMPファイルを保持するCHPL_LAUNCHER_DEBUGを介してデバッグ機能を追加しました
PBS-aprunランチャーの改良:
ノードで/ wのCPUの割り当てを指定する--ccフラグを追加しました
周りのTMPファイルを保持するCHPL_LAUNCHER_DEBUGを介してデバッグ機能を追加しました
いくつかの余分な印刷を取り除くためにクリーンアップ出力
作られたランチャーは、当社の試験システムをサポート
ENVの代替として起動ツールに--walltimeと--queueフラグを追加しました。ヴァール。
コンパイラの変更点
むしろ1/0よりも型シグネチャで出て「真」/「偽」コンパイラのプリントを作りました
設定のparamを追加 'noRefCount'(メモリリークが発生することがあり)参照カウントを無効にするには
コンパイラフラグ
悪いコールにつながったかを示すために--print-呼び出しスタック·オン·エラーフラグを追加しました
コード生成およびリンクフェーズをスキップする--no-codegenをフラグを追加しました
相互運用性の変更
クラス"のextern C&QUOTのサポートが追加されました。 (へのポインタ構造体の型)
externのconsts(README.externを参照)のサポートが追加されました
エラーメッセージの改善
宣言されたモジュールの外で「使用」の文を孤立警告を追加しました
(例えば、; '{M1を使用する;}モジュールM2' 'M1を使用するモジュールM2は{}'一般的にする必要があります)
フォーマット作ら解析時間のエラーメッセージは、標準 ':LINENOファイル名'を使用します
主な方法でクラス名を参照するためのエラーメッセージを生成し
(例えば、「クラスC {デフCmが(){...}} 'になりましたエラーメッセージが生成されます)
(古いセマンティクス用)バグの修正/新セマンティックチェック
実行時のコマンドラインフラグを使用して設定されることを防止設定タイプ
フィールドのない労働組合を処理するためのコンパイラの能力を固定
値の空の範囲/部分的な範囲を扱うようにMINLOC / MAXLOC削減を固定
ファイルのコンストラクタに 'パス'引数は無視されたバグを修正
作られた空の組合は正常に動作します
配布/並列化の範囲をチャンキングにオーバーフローの問題を修正
空のexternレコードタイプのサポートに関わるバグを修正
レコードを返すのextern関数を含むバグを修正
外部レコードをコピーするに関連するバグを修正
連想/スパースドメインの+/-オペレータの固定実装
「複数のファイルを含むファイル名ベースのモジュール名に関連するバグを修正。の
不規則なドメインで/エクステリア/インテリアを展開するための追加のエラー·メッセージ
指定された戻り値の型を持つコンストラクタ/デストラクタのエラーを追加しました
最適化」に速い」に関連するバグのペアを固定
一般的なフィールドを指定せずにクラスを構築に対するチェックを追加しました
パッケージ変更
GNUソース·ハイライトのシンタックスハイライトのコードを追加しました
(ETC /ソース·ハイライト/ READMEを参照してください)
バージョン22.xのサポートが改善された着色のemacs
(ETC / emacsの/ READMEを参照してください)
キーワード「ITER」/新しい「PROC」を反映するために着色vimの構文への更新
(ETC / vimの/ READMEを参照してください)
ITER '/' PROC ''に 'DEF、既存のコード」の使用」を変換するためのスクリプトを追加しました
($ CHPL_HOME / UTIL /変換-defsの参照)
当面multirealm例&ドキュメントを削除
サードパーティソフトウェアの変更
バージョン1.16.1にGASNetを更新
BSCのナノス++およびサンディア国立研究所のQthreadsのコピーを追加しました
(サードパーティ/ READMEを参照してください)
相対への絶対パスを変更GASNetため、インストール後のステップを作りました
不安定性に起因し、当分の間、PVMを削除
ランタイムライブラリの変更
ナノス++(BSC)とQthreads(サンディア)用の単一のロケールタスク層を追加しました
ランタイム·タスク層にいくつかの改善:
)(タスク層コールchpl_mainを持つために新しいインタフェースを追加しました
maxThreadsPerLocale / callStackSize引数を取るようにタスクのinit関数を変更
タスク層界面にタスク収量能力を追加しました
タスクを初期化する前に、同期のvarを使用しないように改良されたランタイム·コード
インターフェイスをタスクのマクロ化されたフォームを削除。代わりに標準名を使用して、
_ *()とchpl_task _ *()をchpl_syncするすべてのタスク層ルーチンの統一命名
単一の変数のインターフェイスを実装するための要件を削除
スレッドのpthreadにFIFOタスク層からのスレッドの終了を移動
pthreadのスレッド層での同期変数の単純化された実装
スレッドをPTHREADするFIFOタスクからスレッド数の責任を移動
ランタイム通信層には、いくつかの改良:
長さ/タイプの引数をサポートするための通信インタフェースを再構築
COMMに操作を得る非ブロッキングするためのインタフェースを追加しました。インターフェース
CHPL_COMM_GET()マクロを使用するための統一されたすべてのリモートGET操作
リファクタリング/通信インタフェースヘッダーの名前を変更
検査システム
大幅にパフォーマンステストとグラフ機能を改善し
(文書化のためstart_testの前にあるコメントを参照してください)
自身の後にクリーンアップするためのテストシステムのサポートを改善し
標準入力のいずれかの間接を使用しないようにする機能が追加
システム全体のprediffオプションを提供するオプションを追加しました
ランチャーのネイティブタイムアウト機能ではなく、Pythonのを使用するための追加機能
試験システムは、そのタイムアウトするテストを殺す方法を改善し
.preexecファイルが場合にのみ働いているバグを修正 '。'あなたのパスにありました
内部
ASTノードを見つけるために、開発者が作成するために--breakオンIDコンパイラフラグを追加しました
UTIL /ディレクトリの内容の改善された組織
SVNベースのユーザーに対して表示されるバージョン番号が計算される方法を変更/
task- /スレッド固有のモジュールコードのサポートを追加しました
各パスの間に割り当てられたASTの数を印刷する機能を追加しました
--gdbコンパイラに新しいgdbのエイリアスを追加しました:「LOC」はASTノードの位置を出力します
エラーケースを回避するプラグマ/フラグの大幅に改善実施
コンパイラに不要な文字列比較の複数のインスタンスを削除
プリプロセッサシンボルとしてCHPL_TASKSとCHPL_THREADSの削除エラーが発生しやすい使用
(リリースには含まれません)開発者のための追加bestPracticesドキュメント
それぞれ '='の内部いじるを変更し、「== '' ASSIGN」にと「EQUALS」
エラーのAST IDを印刷するには--print-ID-on-errorを開発者のフラグを追加しました
C ++プロトタイプチェックの厳しさを向上させ
SVNツリーに外部貢献者契約を追加して(ないのリリースで)
コンパイラによって使用される内部型の概念ではなく、ユーザーを追加しました
コメントが見つかりません