Manga illustrates job career

(from 投資世代) The Adventures of Johnny Bunko http://www.amazon.com/Adventures-Johnny-Bunko-Career-Guide/ dp/1594482918 This book seems the first career guide written with Manga. Manga is now “invading” many fields including business field 🙂 I really feel that (Japanese-style) Manga is changing cultures in worldwide. [Ja] マンガで書かれた(あちらでは)初のキャリアガイド本だそうな. ってか trailer の「ぱかっ」とか「どよーん」とか笑った。 日本人じゃないノンネイティブにわかるのだろうか。 かといって無理矢理英語にすると、 例えば「ゴゴゴゴ」は「Rmmmb」となんともスゴ味のない擬音になるわけで、 そう考えると日本語のままのほうがいいのかも.

Vol. 7

(from wikipedia) Prof. H による渾身の Vol. 7 が出版されていたので早速購入しました。 ぬおおぉーーーー、巻を重ねるごとに面白さが指数関数的に上昇している 件について〜〜〜〜! いやー、日本人でほんとよかった… 「FKYK」 「ルマンド」 「闇鍋しよう」 「東京湾13号埋立地」 「アル中」 しかしあれだね、「I am legend」といったらやっぱこっちを想像するよね. 最初、おお、アノ Prof. H の「レジェンド」がなんとハリウッドで映画化されるのか!? って思いましたもん.

OoO 第二回開催予定

SIGGRAPH 2008 論文も公開され始めたようなので、 OoO 第二回を GW 空けの 5/10 あたりで開催したいと考えています. 現在日程を調整中. Bee さんが SIGGRAPH に通ったようですね. 燃え尽きるほどヒーーート! グラフィックスの王道であるレンダリング(光輸送)で日本人が 通ったのは、いったい何年ぶりでしょうか?(いや、ホントに. 十何年ぶり?) 他には, Parallel Poisson Disk Sampling とか興味深いですね. 自己相似性は無いものの、多次元でのサンプリング点が生成できるところがグッド. GW 空けには Parallel Poisson Disk Sampling or A Meshless Hierarchical Representation for Light Transport を 実装できて OoO で発表できるといいなと考えています. もしくは今実装中の A first-order analysis of lighting, shading, and shadows の visibility gradientContinue reading “OoO 第二回開催予定”

Understanding G80 behavior and performances

Understanding G80 behavior and performances http://www.icare3d.org/GPU/CN08 Quite interesting analysis on G80 architecture has been investiaged. There’s some comments on raytracing in G80. After reading it, my suspicious on doing “something general purpose computation” in GPU has increased. It’s supid to do some general computation on GPU such like ray tracing. — [Ja] うぉ、こりゃすげぇ、よく解析されています. CPU は内部仕様がある程度Continue reading “Understanding G80 behavior and performances”

Split Compilation: an Application to Just-in-Time Vectorization

Split Compilation: an Application to Just-in-Time Vectorization, Piotr Lesnicki, Albert Cohen, Grigori Fursin, Marco Cornero, Andrea Ornstein, and Erven Rohou, GREPS 2007 Workshop http://sysrun.haifa.il.ibm.com/hrl/greps2007/ ポータブルな中間言語(CIL)を導入し、最適化指示子はアノテーションで CIL に仕込んでおき、 ランタイム時のプロファイルやアノテーションを参考にして、 JIT コンパイルでポータブルバイトコードから最適化ネイティブコードを生成するというもの. バイトコードはポータブルなままにできるという特徴がある. まあなんかポータブルな中間形式を用意して… というフレームワークとしては、 LLVM ですでに出来ているような感じがしますが、 著者らはいずれ gcc と統合して、 gcc -> CIL(CLI) -> JIT というのを考えているらしい. http://gcc.gnu.org/projects/cli.html 将来的には、CIL から GPU などへの並列プロセッサへのバックエンドを作ったり、 アノテーション情報をつかって JIT コンパイル時のレジスタ割当ての高速化を考えているとのこと. 本論文にかぎらず、パフォーマンスのためにはアノテーションは有効だと思うので、 MUDA にもなにかしらアノテーションを仕込める仕組みを作りたいと思う.

MUDA: Vector type is not allowed as return type for external function.

今まで, MUDA では // NG vec func(vec a) { return a + a; } という関数の戻り値に vector 型を指定できるようにしていたのですが、 C とのインターフェイスを考えると, これが以外とめんどくさい. C 側にネイティブ型(__m128 とか)が見えてしまう. かといって union or struct で隠すと union or struct 返しになって 面倒だし C コンパイラにとっても最適化しづらくなる. そんなわけでスカラ型しか関数の戻り値の型として指定できないようにしました. vector 型を返したい場合は、out 引数を使って以下のようにします. void func(out vec ret, vec a) { ret = a + a; } ただし、static や inlineContinue reading “MUDA: Vector type is not allowed as return type for external function.”

Automated Dynamic Analysis of CUDA Programs

M. Boyer, K. Skadron, and W. Weimer. “Automated Dynamic Analysis of CUDA Programs.” In Third Workshop on Software Tools for MultiCore Systems (STMCS), Apr. 2008. http://www.cs.virginia.edu/~mwb7w/ CUDA プログラムに自動でインストゥルメンテーションを仕込み、 レース競合の検出と、メモリアクセスのバンクコンフリクトの検出を行うという手法. CPU で言えば、Intel thread checker(でスレッド競合検出) と valgrind(でキャッシュミス解析) を組み合わせたような感じでしょうか. バンクコンフリクトの検出は、 異なるスレッドからのグローバルメモリ(DRAM)(シェアードメモリでした. でもグローバルメモリもバンク構成になっているはず)への同じバンクへの アクセスはシーケンシャルになってアクセスのパフォーマンスが落ちるので なるべく減らしましょうね. そのために自動でどれだけコンフリクトが発生しているか本手法で分かると 役に立つよ、という感じ. 論文に出てきた、CCured と呼ばれる, ランタイムチェックを自動でインストゥルメンテーション してくれるツールは知りませんでした. http://manju.cs.berkeley.edu/ccured/ こちらはレンダラプログラムのロバスト性向上に使えそうです.

Automatic Data Movement and Computation Mapping for Multi-level Parallel Architectures with Explicitly Managed Memories

M. Baskaran, U. Bondhugula, S. Krishnamoorthy, J. Ramanujam, A. Rountev and P. Sadayappan, “Automatic Data Movement and Computation Mapping for Multi-level Parallel Architectures with Explicitly Managed Memories,” in Proc. 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, (PPoPP 2008), Salt Lake City, UT, February 2008. http://www.cse.ohio-state.edu/~saday/ PLUTO ツールのチームから. ネストしたループをタイル化してメモリアクセスの局所性を高め、 またタイル内で処理するデータの転送を最適な場所に挿入してくれる手法. データ転送命令の挿入位置は二次最適化問題に帰結され、 SQP(SequentialContinue reading “Automatic Data Movement and Computation Mapping for Multi-level Parallel Architectures with Explicitly Managed Memories”

PLuTo : An automatic parallelizer and locality optimizer for multicores

PLuTo – An automatic parallelizer and locality optimizer for multicores http://www.cse.ohio-state.edu/~bondhugu/pluto/ 複雑なループ処理でも、自動で処理をタイリング変換(メモリアクセスの局所化)したり、 自動で openmp ディレクティブを挿入して並列化してくれるというスグレモノツール. すげー. ツールはソース to ソースの変換を行うので、変換後のプログラムも普通の C コードのまま 扱うことができます. たとえば、こんなコードが (example/seidel/seidel.c より) /* pluto start (T,N) */ for (t=0; t<=T-1; t++) { for (i=1; i<=N-2; i++) { for (j=1; j<=N-2; j++) { a[i][j] = (a[i-1][j-1] + a[i-1][j] + a[i-1][j+1] + a[i][j-1] +Continue reading “PLuTo : An automatic parallelizer and locality optimizer for multicores”