トップスポーツチームの監督に教わる秘訣
この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。
作者 Jean-Jacques Dubray, 翻訳者 金森 諭 投稿日 2008年3月25日 午後6時14分
Erlangは並列処理を効率よくしかもエレガントに(参考記事)扱える言語として多くの関心を呼んだ。とりわけErlangはマルチコアプロセッサ向けのプログラミングに向いていると考えられている。Erlangのキーとなるデザインコンセプトのひとつは、”プロセス”のインスタンス間に共有メモリがないということだ。それらは非同期メッセージで通信をおこなう。それでもやはり、共有メモリの並列性はホットな研究課題としてある。Dan Grossman氏(source)はワシントン大学の助教授でコンピュータ理工学部に在籍している。彼の研究内容にはプログラミング言語の設計、実装、理論が含まれる。
彼の講義の焦点は、プログラミング言語の意味論と実装におけるトランザクションの効果を探ることと、マルチスレッドのトランザクションがどれだけスケールできるかを研究することだ。
彼の講義の焦点は、プログラミング言語の意味論と実装におけるトランザクションの効果を探ることと、マルチスレッドのトランザクションがどれだけスケールできるかを研究することだ。マルチコアプロセッサにより並列コンピューティングが一般に広まったことで、並列処理プログラミングをより簡単に行いたいという要望が出てきました。ソフトウェアトランザクションは共有メモリの並列処理を簡素化する大きな可能性を秘めていて、ここ2年のうちに研究団体から非常に大きな関心を集めるようになりました。
彼はトランザクションメモリとガベージコレクションとの関係についておもしろい例え方をしている。
トランザクションメモリ(TM)が共有メモリの並列処理において担う役割は、ガベージコレクション(GC)がメモリ管理において担う役割のようなものです。
彼は並列処理プログラミングはメモリ管理が難しいのは正確性とパフォーマンスのバランスを取らないといけないためだと説明する。callerと callee(呼び出し側と呼び出された側)のように、双方ともバラバラには扱えずお互いを知っている必要がある、そして少しの変更のために大幅にコードを変更しないといけないこともしばしばだ、とも述べる。
彼はGCと同じように、TMについてもこれまで自前で作られていたプロトコルを言語の実装に組み入れるのが解決策だと提案する。一方で彼はTMが次のような問題を抱えているのも認識している。
並列実行不可能ということを近似で不正に得ることでメモリコンフリクトが起きる時があります
彼は3つの隔離性レベルに分けたソースレベルの形式意味論を紹介する。
彼はある誤認が世に広まっていることを示唆する。
”弱い”隔離性はロックを行うコードが複数実行された時にだけプロパティのロックを行うのです
続けて彼はキーとなる理論の証明をおこなう。それには以下のことも含まれる。
弱いワンロックができないことでも弱いアンドゥにはできることがあります。
講義の第二部はこれらの意味論をマルチコアシステムに適用することに費やされる。最初に、単一プロセッサが特別で重要なケースだと指摘することから始まる。彼はこう言及する。
- 共有メモリ経由のスレッド通信は実際には並列で行いません
- 多くの言語の実装ではこれが前提となっています
- マルチコアは一つのアプリケーションを一つのコアに割り当てることになるでしょう
単一プロセッサの場合、トランザクションメモリの強い隔離性にはほとんどコストがかからないとGrossman氏は述べる。メモリアクセスのオーバーヘッドはほとんどなく、ロールバックが起きることも稀だ。さらに書き込みにはログが残る。彼はまた、非トランザクションコードでパフォーマンスを上げるためのバイトコードレベルでの静的な最適化についていくつかの例を説明している。
Grossman氏のチームではマルチスレッドのトランザクションのケースについて取り組みを始めている。彼は人々が想定していることである重要な点についてこう問う。
ほとんどの(ハードウェアまたはソフトウェアの)実装ではトランザクション内のコードはシングルスレッド化されるのが条件とされていますが、隔離性と並行処理は直行性、つまり隔離することと並列処理できることは違うのです(そしてAmdahlの法則(Amdahl’s Law)がマルチコアを襲うでしょう)。
この条件によって実装がシンプルになるため、それなりの根拠はあると彼は指摘する。しかしコアの数が増えるにつれて、この条件のためにシステムのパフォーマンスが下がることになる。もしこの条件に縛られたくないなら、言語レベルでネスト・トランザクションを導入する必要がある。またログの並列化はスケーラビリティを実現する上での重要な問題のひとつだとも指摘する。彼はどの時点でAmdahlの法則(コア数が増えてもある比率でしか性能向上が見込めず、例えば16個のコアでは4倍しか向上しないという考え方)がネックになり、これまでに挙げた機能強化を施す必要があるだろうかと考えているが、それはコアの数が100単位になった時のことかもしれないと言っている。
原文はこちらです:http://www.infoq.com/news/2008/03/software-transactions
セキュアなIT基盤と付帯運用サービス”SecureOnline”
InfoQ Japanはコンポーネントスクエアが運営しています
ITマネージャ必聴!IT活用セミナー 勝ち残りの法則~管理・統合化スペシャル~
この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。
マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。
筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。
エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。
この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。
No comments
返信