2008-10-01から1ヶ月間の記事一覧

分散レイトレースベンチ改

前回の分散レイトレースは、ピクセル毎にプロセスに依頼を出して結果を受け取るという 実装だったためメッセージが多すぎで分散による並列の恩恵を受けることができなかった。 これを改善するため行毎に依頼を出す方式に改めた。 結果はこんな感じ。いちおう…

分散レイトレーシング実験

分散版のレイトレースベンチができたので実験してみた。ローカルマシン1並列 (xp1@192.168.0.10)23> timer:tc(dist_ray, start, ["tmp.bmp", 200, 3, [node()]]). waiting for boot servants...['xp1@192.168.0.10'] start rendering[<0.113.0>] finished! {…

分散プログラミング

1台のマシンでのマルチコア並列のようにプロセスを大量生産して、 さばくのはシステム任せというわけにはいかないのに気づいた。 処理をどう割り当てるのかを制御するスケジューラみたいなものが必要です。 今回はレイ一つ毎にプロセスを作るのではなく、 コ…

レイトレースベンチの並列テスト

プログラミングErlangの20章にlists:mapを置き換えるだけで並列化できますよ、 と書いてあったのでやってみた。置き換えたのはこのレイを飛ばす部分。 % オーバーサンプリング(N x N倍サンプリングして平均する) sampling({PIXEL_X, PIXEL_Y}, Scene, N, GET…

レイトレースベンチ完成

シャドウレイの判定を作っているところで、いろいろ間違っている部分が発覚して直すのに手間取ってしまった。 後ろ向きにレイートレースしていたりとか、 画素の順番がおかしかったりとかいろいろな罠にはまった。 リスト内包表記で複数のリストを組み合わせ…

ベクトル計算

レイトレースベンチの移植の続きをしていたのだけど、 ベクトルの和にすらパターンマッチで[X, Y, Z]=LISTという感じで展開してから 個々に計算するという状況に強いストレスを感じたので一旦作業を中断して他の方法を調べた。 lists:zipとリスト内包表記の…

レイトレースベンチを移植中

とりあえず知っている範囲の構文を使ってやっつけで書いてみた。 まだ未完成だけど更新。 あたらしい言語なのでわりとデバッグに苦労してしまった。 最大の落とし穴はlists:nthが1originなこと。VBかw あとは3要素ベクトルの操作をリスト内包表記で書こうと…

DIBを作ってみる

32bitのDIBを出力する実験。真っ白だけど。 -module(write_test). -export([write_list/2, create_dib32/2]). % リストをファイルに出力 write_list(F, L)-> {ok, IO}=file:open(F, [write]), io:put_chars(IO, L), file:close(IO). % ビットマップイメージ…

レイトレ作成開始

前回書いたビットマップ出力をリライトしつつレンダラの一番外側の枠を作った。 各ピクセルのリストにmap関数でray_shooting関数を適用するとRGBAのリストになるという寸法。 処理の本体たるrenderer:rayshooting/1はただのスタブで常にRGBA(0,0,0,0)を返す…

Erlangはじめました。

先日、家に積んであったErlang入門を何となく手に取ったら今の興味に合った 言語だったので非常にやる気が出た。 Gauche本もHaskell本も途中までしか読んでないが、 Erlangいいよw 本自体は、薄かったのでさくっと斜め読みして改めて分厚い本も入手してきた…