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マルチスレッド未経験者に

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中