AO bench is evolving

AO bench is a small Ambient Occlusion renderer program which is suited for benchmarking processor/language’s floating point computing power. AO bench was first appeared as a Proce55ing program to measure the performance of Proce55ing(more specifically, JVM). Then it had been ported to C NativeClient JavaScript Flash10 iPhone Recently, there’s two evolution. AO bench on AndroidContinue reading “AO bench is evolving”

Speed racer and Yatterman

Speed racer http://www.apple.com/trailers/wb/speedracer/trailer1a/ Yatterman the movie http://www.yatterman-movie.com/ (Click 4th red menu button to see the trailer) Speed racer and Yatterman was both originally created by Tatsunoko production(in Japan), and few decades later, one is recreated for the movie by Hollywood(as you know) and other is by Japanese production. By watching both trailers, I convinced thatContinue reading “Speed racer and Yatterman”

Haskell job hypothesis

(via Haskell-cafe ML) ちょっくら今後いろいろ Haskeller に質問してみたいことがあるので、 ひとまず Haskell ML, Haskell-cafe ML に登録してみました. …えッ!? Haskell-cafe ML, 一日 100 通くらい来るんですけど… 読み切れねーよ… それはさておき、最近 Haskell-cafe に投稿された、Haskell 求職仮説(?)とその反応のひとつが面白かったので取り上げてみます. http://www.haskell.org/pipermail/haskell-cafe/2009-January/054213.html もしあなたが Haskell 開発者募集の求人を出したら、20 人の応募があるだろう. 彼らは皆、自身の手腕を改善たり自らの才能を伸ばさんとするため新しい言語を学んでいるような開発者たちだ. なぜなら誰もまだ職を得るためだけに Haskell を学ぶようなことはしていないのだから. もしあなたが Java 開発者募集の求人を出したら、200 人の応募があるだろう. 彼らの多くは、Java の求職が世の中に多くあるから Java を学んだような開発者だ. そして Java 職で十分食っていけると分かっている間は、彼らは他になにも学ぼうとしない. これに対する反応その 1 我が社は Haskell プログラマに求人を出し、そして彼らが面接にやってきたときに、 実際は我が社のコードベースは Perl であると伝える. 我が社には何人かの Haskeller もいるけどね. もしあなたが気にしているのが開発者の質であって、彼らの生産性でないのであれば、 面接が終わったあと、彼らにContinue reading “Haskell job hypothesis”

Scrap your boilerplate

Scrap your boilerplate http://www.cs.vu.nl/boilerplate/ “Scrap your boilerplate” と呼ばれる、Haskell 向けのジェネリックプログラミングライブラリを知りました. Haskell におけるデザインパターンとも言えるでしょうか. Haskell で RSL(RenderMan Shading Language) コンパイラを書いていると、AST(抽象構文木) などのツリー構造なデータ型の一部にだけ作用させたいコードが必要なときがよくあるのですが、この scrap your boilerplate がまさにそれを解決してくれることが分かりました. たとえば、以下ような例を考えます. replaceConst 関数は Expr の Const ノードを Var ノードに置き換えます. Expr や Stmt は Main クラスに属しています. Main クラスのインスタンスにたいして replaceConst 関数を作用させるためには, Expr, Stmt の両方にたいして replaceConst を実装する必要があります. しかし、Stmt のほうは、実際には Expr を見つけて”トラバースするだけ”の画一的でつまらないコードです. つまり、Stmt に対する replaceConst は、本質的には必要ないものなのです. BoilerplateContinue reading “Scrap your boilerplate”

hjs: Javascript Parser in Haskell + Parsec

hjs: Javascript Parser http://www.haskell.org/haskellwiki/Libraries_and_tools/HJS JavaScript 実装、始め…るかも… と書き、あーそろそろぼちぼち手を付けてみんべかな、ここはやっぱりコンパイラは Haskell + Parsec で書くべかな, と思ってちらりとリサーチしたところ、 やはり世界は広い. すでに Haskell による JS のパーサがありました. しかも Parsec を利用! Interpreter も用意されているみたいなので、あとはこれに LLVM codegen を作ってくっつければ完成かッ!? ところで、この hjs が実装の参考にしている, Monad Transformers and Modular Interpreters http://web.cecs.pdx.edu/~mpj/pubs/modinterp.html は知らなかったのですが、これ、Haskell でコンパイラのたぐいを書くときの設計流儀として非常に参考になりますね. Write yourself a Scheme in 48 hours もこのような感じでコンパイラ実装が設計されているような気がしています. Haskeller にとっては, このような設計流儀でコンパイラを書くのがデファクトスタンダードなのかな? Monad Transformers and Modular Interpreters のような、 「Haskell でのコンパイラを作るときは、こう書けば簡潔で美しいしモジュラーになるしメンテしやすくなるよ」Continue reading “hjs: Javascript Parser in Haskell + Parsec”

Etymology of “normal”

(image from Wikipedia) 「法線ベクトルとは、面に垂直な方向を指すベクトルである」 よくある 3D CG の教科書に見られる、法線(normal)に間する説明の記述ですね. でも、「法線」の「法」ってナニ? normal って「普通」という意味なんだから、「普通のベクトル」じゃないの?なぜ CG だとこれが「法線」というという意味になるの? CG を習い初めたひとにとっては, こんな疑問をいだきつつも、「まあこのギョーカイではそんなことになっているんだな」と妙に理解したことにしてしまって今に至るひとが多いのではないでしょうか? 私自身もまだ右も左も分からぬレンダラ一年生だったとき, なぜ normal が面に垂直なベクトルを意味し、そしてそれが法線と訳されるのか疑問でした. そこで、ちょうど GI 本を執筆するに当たっていろいろ資料や語彙の由来などについて調査していたので、normal = 法線の謎も追ってみましたところ、結構おもしろい語源の由来だったので取り上げてみることにします. normal の語源 まずは辞典で normal の意味を調べてみます. http://dictionary.reference.com/browse/normal によれば、normal とは、「通常」、「標準」、などに加え、数学においては「直角、垂直」という意味もあります. つまり normal にはそもそも垂直という意味も存在していることが分かりました. さて、normal の語源はラテン語の norm-, normalis であり、それは carpenter’s square に由来するものとかかれています. carpenter’s square(大工さんの四角形)って何でしょう? じつは carpenter’s square とは直角定規のことです. ↓これです. (image from wikipedia) というわけで、もともとはContinue reading “Etymology of “normal””

BOE cuts rates to record low of 1.5%

英中銀が50bp追加利下げ、過去最低水準の1.50% http://jp.reuters.com/article/topNews/idJPJAPAN-35772320090108 うぉおおおおおお! おおおおおおお! キ、キングー!!!(<- BOE(英中銀)の総裁です) 1694年の英中銀設立以来の最低水準となった。 1694年の英中銀設立以来の最低水準となった。 1694年の英中銀設立以来の最低水準となった。 いやー、およそ 300 年の BOE の歴史の中で 1.5% という低金利は史上初、ということですか. すごいなー、ってかまあまだ BOE は利率を下げると思いますけどね(記事に書いてあるように). 先進国各国が我先に、とゼロ金利政策を取ろうとしていますから. 一転していずれ円が(先進国中で)高金利になる可能性も無きにしもあらず、かもしれません.

レンダラファンド設立にむけてのお勉強: 対日投資、ファンド経由を非課税に

対日投資、ファンド経由を非課税に 政府、促進へ税制改正 http://www.nikkei.co.jp/news/main/20090107AT3S0601C06012009.html おぉっ!! ってかいままで海外から日本に対する投資の場合は租税条約で日本での課税免除(海外の投資元の国で課税される)ではなかったのか. むぅ、しかし日本国民が国内に投資するばあいも非課税にしてほしい… (それから、一般社団法人で資産運用ビークルを作っても結局、株式会社と同じで法人税 40% がかかることがわかりました) まあ、いずれにせよ、レンダラファンドの設立の方にもいい追い風が吹いてきていると感じています.

Approximating Dynamic Global Illumination in Image Space

(image from “Approximating Dynamic Global Illumination in Image Space”) Approximating Dynamic Global Illumination in Image Space Tobias Ritschel, Thorsten Grosch, Hans-Peter Seidel Proceedings ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games (I3D) 2009 http://www.uni-koblenz.de/~ritschel/ うぉっ! これはすげー! – スクリーンスペースなのでジオメトリの複雑さと無縁 – 動的ジオメトリ可 – 前計算なし – GPU に容易に実装可能 で近似的に GI (1 回の indirect diffuse) をリアルタイムでやってしまっています. 手法としては、基本的には既存研究である SSAO(Screen SpaceContinue reading “Approximating Dynamic Global Illumination in Image Space”

How to optimize loop with floating point counter?

RSL(RenderMan Shading Language) では整数型が無いので(prman 拡張だと整数型はあるのかもしれません)、 たとえばループを記述するときのカウンタには float 型を使います. こんな感じ. float i; for (i = 0; i < 1000; i += 1) { … } float 型でも、2^24 までの整数は IEEE754 フォーマットで exact に表現できるので、 まあこの記述自体には問題ないのですが… float 型のカウンタを使う場合、ループ最適化が効かない で、問題は、このような float 変数をカウンタにしたループはなぜか LLVM や gcc では最適化されないのです. たとえば、gcc(4.4) で試してみます (gcc 4.3 からは mfpr と gmp の導入により、cos(2.4) というような式に対する定数展開の最適化がマシン非依存かつ正確に行われるようになったため, より float 演算に対する最適化が出来ていると推測する) 入力のプログラムは以下.Continue reading “How to optimize loop with floating point counter?”