並列化プログラミング

| コメント(0) | トラックバック(0)

マルチコア化の進展でどうやって並列化されたプログラムを能率的に開発するかというのが一つのトピックになっています。実際問題、どうするのかというのは幾つかのアイディアが提起されてきたジャンルであるかと思います。古くはトランスピュータOccamでしょう。トランスピュータは並列コンピューティング向けに考案されたプロセサであり、Occamはそのトランスピュータ上で動くコードを作るための言語です。

Occamは言語使用としてスレッド的な機能を持っているのでOccamで書かれたコードは半ば自動的にマルチスレッドになります。例えば、

PAR
	x := x + 1
	y := y * 2

この例のようなコードだとxに1を足すという動作とyを2倍する動作が並列して実行されます。C言語などの言語仕様に並列化を含まない言語と異なり、並列化を特別視せずにプログラミングすることが可能な仕様となっています。 勿論、80年代当時の言語であるので現在主流のオブジェクト指向の言語群と異なりクラスなどの機能を持ってはいませんが当時としては極めて先進的な思想であったのは確かです。

時代は下って、2002年にMicrosoft ResearchのNick Bentonらによって発表されたPolyphonic C#という言語も独特な並列化プログラミングを見通した仕様を持っています。Polyphonic C#はC#の拡張仕様の一つでプレビュー版が公開されたの実験的な実装に仕様が取り込まれています。特徴としては関数の非同期呼び出しとChordという独特のSynchronize patternの記述によって簡便に並列化と同期を記述することが出来ることです。

async postEvent(EventInfo data) {
	// large method body
}

この例のようなコードだとpostEventというメソッドは処理の終了を待たずに呼び出し元に制御を戻します。Polyphonic C#もスレッドを明示的に用いなくてもプログラムをマルチスレッドか出来ると考えていいでしょう。

トラックバック(0)

トラックバックURL: http://www.cworld2000.com/cgi-bin/mt/mt-tb.cgi/201

コメントする

Recent Tracks

gorn708's Profile Page

このブログ記事について

このページは、gornが2006年8月31日 11:33に書いたブログ記事です。

ひとつ前のブログ記事は「冥王星、惑星の列から外れる」です。

次のブログ記事は「私ならサイボウズを使わない」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Adwords