Ateji PXの勉強会に行ってきました

最近、英語の勉強も兼ねて、極力英語のWebサイトを見るようにしてるのですが、 Atejiっていうだいぶヤバイの見つけて。   例えば、以下のようにfor文が3つネストしてるヤツを マルチスレッド化したらどうなるか?っていう。

for(int i : I) {
 for(int j : J) {
  for(int k : K) {
   C[i][j] += A[i][k] * B[k][j];
  }
 }
}

for文の中でスレッド作って、グルっぐる回して、 抜けた後にスレッドの数の分だけまたfor文作ってjoinするみたいな ヒドイコードになってしまうよね、と。   ただ、このマルチコアの時代に、直感的にプログラム書いたら シングルスレッドでしか動かないってサブイじゃない的な。   # あ、スイマセン、コトワリを入れておきますが、 # あんまり英語アレなんでどっか合って無い事言ってるかも。。w   で、それを || っていうパイプ2本加えればイイ感じにやってくれちゃうっていう。 例えば、上の例だと↓だけ。

for||(int i : I) {
 for(int j : J) {
  for(int k : K) {
   C[i][j] += A[i][k] * B[k][j];
  }
 }
}

  で、コレに関する勉強会が、ninjavaっていう東京の英語なJava屋の集いで 行われるっていうことで、参加してきました。   参加してる人はほとんどがインターナショナルな感じで、 ネイティブなヤツらが本気出すと、何言ってっか全然わっかんねーな的な。 それでいて、たまに日本語がポロっと出たりするから、なんかスゲーな、と。   で、以下、その場でメモってきたヤツです。 詳しい事はサイトにかなり詳細に書いてあるので、そっち見た方がよさげですが。。 ⇒ http://www.ateji.com/px/index.html   ++++++++++++++++++ ■マルチコアについて 100coreのCPUとかどう扱う?近い将来メインストリームになる。 Javaの場合なんもしなければシングルスレッドだよ   ■HyperPerfomanceComputing 10年前まではJavaなんて遅くて〜。今はそんなことない。 ヨーロッパではJavaが主流。Cの人とか集めるの難しい。   ■Javaのスレッドライブラリ Java7でようやくFork/JoinとかParallelArrayとか。   ■Multi-threadプログラムは難しいよね Threadはハードウエアレベルのノーション でもパラレルプログラムは簡単じゃなきゃいけない で、Ateji PX。||するだけ。16coreで動かしたら12.5倍早くなったよ。 シーケンシャルにしたければ;を使う、パラレルにしたけりゃ||にする たとえば(int i :N)を||すればN多重になる。 2次元みたいなことも出来る。Javaシンタックスにはないけど言語そのものの拡張。 コレクションもループで回して多重化できる ※ ブランチとスレッドは違うみたいな事言ってたけど、 ※ ジェネレートされたコードとか見てみないと実感分からず。差はなんなんだろう。。   ■Masssage Passing クラスタとか組んでた場合にリモートでメッセージング的な。 ハードウエアに適したライブラリを使ってくれる。 MapReduceと似たようなアプローチ。 どのブランチがどこにいくかはソレ用のアノテーションで#Remote("そのリソース")   ■動作について とにかくJVMがあればイイ。後はAtejiの小さいjarファイルをJVMがあるとこに 置ければAtejiは動作する   ■その他 来月ニューオリンズでやるスーパーコンピューターカンファレンスにブース出すらしい   ■DEMO 拡張子がAteji用のファイルにすればソレ用にコンパイルしてくれるEclipseプラグインブレークポイントおいてデバッグも出来る。 ただしスタックトレースについては、Atejiでコンパイルされる時にコードを変換するので 出てくる行数が実際と違ってきてしまう。 デモは自分のかーちゃんが見ても分かるくらいの分かりやすさが重要w ++++++++++++++++++    オライリーHaskellかなんかのTシャツきた人が興味深そうな質問を沢山してたんだけど、 何言ってるのかよく分からなかった。。>_<   英語だな、やっぱ。もっとがんばろ。  

Java言語で学ぶデザインパターン入門 マルチスレッド編
結城 浩
ソフトバンククリエイティブ
売り上げランキング: 170153
おすすめ度の平均: 5.0
5 スレッドのことをよく知らないで
5 スレッド未経験者にも分かりやすい入門書
5 マルチスレッドを学ぶなら是非
5 マルチスレッド初心者から上級者までお勧め
5 JAVAマルチスレッド未経験者に