トップへ戻る

2007年05月08日

PerlでOpenGL

http://graphcomp.com/pogl.cgi?v=0111s1m1&r=s2m1
しまった、やられた。
というか誰か考えているだろうと思っていたら、やっぱり考えてる人がいた。

むしろ、ブラウザプラグインからOpenGLを簡単に叩けないかなあとか妄想してた私。表示するウィンドウをどうするか思いついていないので負け組。素直にOpenGLを叩くと別ウィンドウになるよね。使えたら面白いとは思うんだけど。
既にあるかな?Flashか何かから叩けるのかな?

投稿者 togabito : 13:12 | コメント (0) | トラックバック

2007年05月07日

やっとOpenMPわかってきたよ

pragma omp parallel
の挙動がやっとわかってきた。でもこれじゃ駄目なこともわかってきたので、明日は
pragma omp parallel for
に戦いを挑むことにする。

omni openmpコンパイラは、ハックするには微妙に不便に感じている。
内部表現とかの資料はちゃんとあるんだけど、今ひとつ内部の細かい動作が見えない。
しかしながら、自分が慣れていないだけだって気もするのがまたなんとも言えないわけで。

まぁもうちょっとがんばろうというチラシの裏でしたとさ。
一応弁明しておくけど、OpenMPは手軽に並列処理する上で最強だと思うよ!並列言語乱立時代を生き抜いただけのことはあるぜ。

投稿者 togabito : 16:20 | コメント (0) | トラックバック

2007年04月10日

OpenMPのちょうど良いサンプルプログラムないかな

OpenMPのちょうど良いサンプルプログラムないかな
久々にOpenMPを触ることにした。とりあえず簡単に高速化できる適当なサンプルを探し中。

っつーか研究室内の掃除といかれたVCの入れなおしで時間食いすぎた。

投稿者 togabito : 17:19 | コメント (0) | トラックバック

2007年04月02日

ピクセルシェーダでプレゼンテーション

先日2006年度未踏ユースのブースト会議に遊びに行くときに作ったネタを公開しました。
ただし、研究情報を晒しているサイトの方で。

ShaderModel3.0なGPUを必須にしている上に、ネタ100%で実用性がありません。
(ShaderModel2系だと定数レジスタが少なすぎてキツイ。)
"PixelShaderでプレゼンテーション"でぐぐれば見つかるよ!
……と書きたかったんだけど、駄目みたいなのでこちらからどうぞ。

投稿者 togabito : 17:59 | コメント (0) | トラックバック

2007年03月29日

つづき

Java3Dを使うとOpenGLがGPUを叩いているっぽい。へー。

プログラマブルシェーダとかが使えるのかはまだわかってない。まぁ、シェーダが使えたとしても、GPGPU的にはどうにもならないかなー。グラフィックス屋さん的には面白そうだけど。

投稿者 togabito : 19:20 | コメント (0) | トラックバック

続:ブラウザ上でOpenGLとかDirectXとか

つい気になって色々と調べてしまったので書いておく。

元々のネタは、
-FLASHの描画って速くないよなあ
-JavaApletの描画って速くないよなあ
-ブラウザ上でGPUのハードウェアアクセラレーション使って描画できれば速いよなあ
っていう発想。

FLASHもJava系も専門外過ぎるのでアレだけどーー
-FLASHってGPUのハードウェアアクセラレーション使えないよね?
-Java系はOpenGLを叩くライブラリがいくつかあるんだけど……JavaApplet化できれば解決するのかしら?Javaで作ったアプリケーションって基本的にApplet化できるのかしら?できれば解決だな。Javaはネイティブじゃないから速度がどうなのか知らんけど。
大体こんな感じ。
FLASHプレイヤーみたいな感じのMIMEタイプを利用するプラグインを作成すればネイティブコードが動くはずだから、スクリプトエンジン+GPU叩きのアプリを作ればいいんだろう。ウィンドウの表示方法に頭を抱えそうだけど。

まぁ仮に作ったとして何に使うかが問題なわけで。
用途としては、ブラウザ上で高速にゲームが動くってのと、OpenGLとかのコードをそのままブラウザ上で実行できるかもしれないあたりかな。


ちょっとJavaAppletの書籍を立ち読みしてくる。
どう見ても研究の次の一手を考えている間の妄想です。本当にごめんなさい(?

投稿者 togabito : 17:54 | コメント (0) | トラックバック

JavaScriptって一周して新しいな

開発中のサークルの内部掲示板に動的プレビューやらクッキーへの情報保存やら管理ウィンドウの表示機能やらをゴリゴリと実装。


うん。やっぱこれって新しくないよ。2001年くらいに普通に使われてた。でも忌み嫌われてた。JavaScriptは広告その他をバシバシ出すのでうざい、って言われていた時代もありました。

今では広告ブロック機能とかは別に搭載されているから大丈夫なんだよね。

つーわけで、JavaScriptは一周して新しいものだということを再認識。
今週末にはfswikiへの適用と公開もできるんじゃね?

投稿者 togabito : 04:40 | コメント (0) | トラックバック

2007年03月28日

ブラウザ上でOpenGLとかDirectXとか

ふと気がついたんだけど、ブラウザ上で動くOpenGLとかDirectXとか使ったアプリを知りません。FlashPlayerみたいにMIMEタイプを利用してバイナリを動かせば、OpenGLでもDirectXでも叩ける気がするんだよな。


内部にスクリプトエンジンを組み込んだゲームなんてのはいくらでもあるわけで、その考え方を利用すればブラウザ上で動くネイティブGPUアプリって作れるよね。
スクリプトを読んでGPUに投げるだけだし。


というわけで適当にぐぐってみたんだけど、なんかOpenGLで画面をゆがませるような変なブラウザが見つかって凹んだ。
誰かそれっぽいツール・アプリを知っていたら教えてください。

投稿者 togabito : 17:22 | コメント (0) | トラックバック

2007年03月27日

Ajax(ry

昼間書いた日記の続き。

作成中のx68部内掲示板を以下略でJavaScriptを使って色々と便利にしてみた。
……つもり。
今更過ぎるけど、JavaScript面白いなあ。便利だなあ。
次はFSWiki本体のハックと画像閲覧ページの作成をするぞ。
できるといいな。

メモ:
CookieManagerはcookiemanager.js (packed)の方を使うべし。

投稿者 togabito : 04:07 | コメント (0) | トラックバック

2007年03月26日

人柱と衝動買いとWindows入れなおしとAjax

↑(タイトル)土日は大体こんな感じだった。

金曜日にいわゆる追いコンってヤツで午前3時だかまで呑んだせいか、土曜日を盛大に寝過ごしたわけだ。仕方が無いので日曜夜まで活動してた。


Ajaxで遊んでみた
家にいるときは研究と直接関係ないことを一生懸命やろうと思い立って、とりあえず弄ってたのがAjax。未踏界隈では多くの人が触っているようだったので、ちょっとまともに触っておこうと思ったのだ。大体この手のものは用途が無いと続かないんだけど、幸いにして非同期通信周りで解決したい問題があった。
問題はFSWiki編集画面の改良。正直使いにくいので、非同期通信を使って便利にしてみようと思った。幸いなことに、xor氏がサークル部内掲示板のリニューアルに伴いfswiki文法へ対応したいからとか言って独立したwikiパーサをpm形式で作っていてくれたので、流用してみた。まだ初歩的な実装なので表に出す気は無いけど、ちょっと便利になったと思う。土曜の深夜はずっとこれを弄ってた。IEがXMLHttpRequestを使えないことはここで初めて知った。
買い物を挟んで日曜の夜は、サークル部内掲示板に先程の機能を適用してみた。今度はprototype.jsを使った。perlモジュールが足りなかったせいで環境設定に無駄に時間が掛かったが、実装は大体できた。ちょっと変になっている部分があるので、後でxor氏を直接叩いてみよう。
FSWikiの編集画面関係についても、今日にでもまた弄ってみようと思う。改造している範囲が狭くないので、まともに公開できるかはちょっと怪しいかも。


人柱と衝動買い
そろそろ鯖を更新というかクリーンアップしたい。主な理由はディスクの掃除とUTF化がしたいため。
つーわけで、SATAのRAIDカードを探しに秋葉原へ行ってきた。鯖に使っているM/Bが古めでSATAが刺さらんのですよ。ソフトウェアRAIDでも、OSでやるよりカードでやった方が楽なんですよ。つーわけで適当に玄人志向のを買ってきたけど、まだ試してない。
AMDがドスパラ前でイベントをやっていたんだけど、なんでも最新のチップセットはRadeonX1200ないしX1250を標準搭載だそうな。SM3.0サポートだ。これは素晴らしい。早くSM3.0普及してくれ。
購入したのは、RAIDカード2種類、3.5インチHDD外部化の箱(USBで外付けするヤツ。サブHDD有効活用の為。)、PCケース(sofmapが雨の日配送無料をやっていたので、鯖用にまともにケースファンの付けられる箱を。)、ついでにケースファン。あとアソビットで発売直後のDBZのDSカードRPGを定価約\5000なのに\3000で投売りしていたので衝動買い。今では満足している。


部室に余剰PCを提供するためWindowsXPを入れなおし
玄人のギガNICが認識されません。死ねばいいのに。

投稿者 togabito : 15:20 | コメント (0) | トラックバック

2007年03月10日

写真管理の話3

思いついたネタは忘れる前に吐いておきましょう。
というわけで、とりあえず適当に考えていることをテキスト化。
基本的に、全力で作って使いたいツール。

ディレクトリごとに作成したインデックスファイルを利用して画像ファイルを管理するツール。

管理下に置いたディレクトリには、ディレクトリ毎に1つのインデックスファイルを生成する。
インデックスファイルには画像ファイルの情報を記録する。
ファイル名をキーとして、固有ID、Exif情報、任意のタグを付けられる。

タグ付けの一環として、ファイル間の親子情報を記録できるようにする。
ここでいう親子とは、撮影した元JPGファイルとレタッチ済み画像ファイルのような関係を意味する。
キー名をparent/child、値をファイルIDにでもすれば十分。
親1対子Nないし親M対子Nの関係で問題ないと思われる。

ファイルの表示はディレクトリベースとタグベースを切り替えないし共用する。
ディレクトリを跨って表示するためには複数インデックスファイルのデータを結び付けなくてはいけないので、
その辺をどうするかは検討中。ディレクトリ名を利用してしまうとポータビリティが下がるからまずい。

管理ツールとしてのUIとは別に、単純なビューワとしてのUIを持たせたい。
本質的には別ツールとしてリリースでも良い。
タグなどを用いて選んだ一部のファイルのみを閲覧可能なUIであり、
用途は指定ファイルの公開サイトを簡単に作成するため。
自鯖ユーザが写真管理ツールから写真公開ページを簡単に生成できると便利なので欲しい機能。

・えとせとら
画像のタグ管理がしたい
親子情報の管理がしたい
公開用ツール(公開用サイト生成ツール)に流用したい
インデックスファイルの形式をオープンにして他のツールなどに流用したい
webUI?、要するにajaxとかを使ってブラウザから使えれば便利だよね
DBはインストールだるいから使わない方向で
どうでもいいけど、タグのグループ化とかって普通にやられてるのかしら?
日付をタグにして抽出ってバックアップだよなぁ

大体こんな感じで。

投稿者 togabito : 16:32 | コメント (0) | トラックバック

2007年03月09日

サークルで久しぶりにドット絵を描いていたら

珍しがられた。

そりゃそうだ。
ここしばらく棒人間ばっかだったもんな。
というわけで、なんとなくUP。アニメーションGIFってみたかっただけ。

合宿で久々に1日ゲーを作ろうと思っていて、
流石に画像素材の練成を含めて1日は辛いので捏造していたというお話。
大昔?のアーケードの固定画面ACTをインスパイアしようと思っていたわけだが、
まさかそれを一発で見抜かれるとは思わなかった。

投稿者 togabito : 03:45 | コメント (0) | トラックバック

2007年03月06日

久々にシェーダで遊んでます

超?久々にHLSLを触ったら、色々と死ねた。
写真管理の話を更新するつもりだったんだけど、後回しにさせてくれ。


えーと、遊びに行く予定の未踏下期ブースト会議で今作っているネタを見せたいんだけど、SM3.0対応ノートが無い。
……誰か持ち込んでくれるかしら。


明日はネタの最適化……というか(自主規制)の対応をしないとなぁ。

投稿者 togabito : 04:23 | コメント (0) | トラックバック

2007年03月05日

続:写真管理に関する話

前に書いたヤツの続き。続きというか本論。
「このソフトで解決するんじゃね?」とかの突っ込みは大歓迎。


先に結論から書いておくと、ゆりかごから墓場まで……とはちょっと違うけど、写真に関する色々なことをまとめて管理できるソフトが欲しいです。
具体的には、加工と公開と関連付けをまとめて何とかしたいです。


現状確認1
デジカメで写真を撮ると、デジカメのメモリーに記録されます。
デジカメのメモリーってのは別にデジカメ内部メモリとかいう意味じゃなくて、今で言うならSDカードとかのリムーバブルなフラッシュメモリね。


次に写真データ、主にJPEGファイルだけど場合によってはRAWデータかしら?、をHDDにコピーします。コピーというか移動か。
ここまでは万人共通。


次が色々あるんだけど、最終的には生データないし加工データがディスクに安置されるわけです。
ローカルのHDDなり、CD-Rなり、web上のサービスを提供しているディスクなり。
当然、プライベートな画像として管理されるかもしれない。
自分のwebサイトなり共有サービスなりでパブリックに管理されるかもしれない。


1つわかっていることは、大抵の場合は写真に何らかの加工と取捨選択がなされます。
加工については、例えばwebサービスを利用すると勝手に加工されたりします。サイズとか。mixiなんかが悪例。
トリミングなり笑い男化なりをする場合もあります。
取捨選択はもっと単純な話で、撮影した写真を全部公開する人っているのだろうか?ということです。
個人的な写真とか、何らかの権利的にまずい写真とか。それから容量の限られているwebサービスとか。


とまぁ、加工やら取捨選択やらを超えた写真が個人のwebサイトなり写真共有サービスに投げ込まれるわけです。


現状確認2
さて。
上記のプロセスを考えていて思ったことがいくつかあるわけです。


まず、写真を全部web上の共有サービスに投げ込むというのは個人的にありえません。
取捨選択とし例示(?)したように、撮影した写真が全部webサービスに投げ込まれているのはどうかと思うわけです。
まぁ手元のPCリソースが限られているならそれもありだろうと思うので、そういう環境の人は今回の話から除外します。
それから、はてな(fotolife)とかフォト蔵とか見た感じでは写真のアップがファイル単位で指定みたいです。
100ファイルとかUPする人は大変だと思うんだけど、どういうことなんですかね?
やっぱり取捨選択ちゃんとしようね、ってことかしら。
web上に投げると、自分の撮った写真を見るのにネットワーク接続がいるのかよ、
という突っ込みを入れたくなるのも駄目な理由として挙げておきます。

というわけで、まず「基本的にはローカル管理でいいんじゃないか?」ということを挙げておきます。


次が、写真というのは元ファイルを加工していくものなので、ファイル間の関連付けができるというか、
元ファイルが同じであるという写真が存在するということです。
例えばあるjpg写真に対して、携帯サイトに張るため解像度とサイズを下げたjpg写真と、
web上に上げるために笑い男化したjpg写真を作成したとします。
これらの加工は不可逆なので、jpgファイルが3つになりました。
でも、加工後の写真が加工前の写真に関連付けられた画像であるとして扱えれば、管理上は1つにすることができます。

というわけで、「管理上はひとまめにして扱っていい写真ってあるよね?」ということを挙げておきます。


最後は「1イベント単位とかでまとめて写真を公開したいことってありませんか?」ってヤツですかね。

「写真をちりばめながら旅行記としてまとめたい」なら旅行記を作ればいいと思うんですが、
私は「同じイベントに参加した人に写真一覧を見せたい」なんて場合にちょっと考えてしまいます。
・旅行記みたいにまとめる気はないけど、いくつかの写真に一言コメントをつけたい
・一括ダウンロードしてもらってもいいけど、写真ビューワとか入れる気がない人って見づらいんだろうな(ブラウザで適度に見やすいインターフェイスがあれば楽だろうな)
あたりを考えて、結局めんどくさいので圧縮ファイルにまとめるかindexの見られるweb公開ディレクトリを見せるかの二択な自分は駄目駄目です。


提案、というか欲しいもの
というわけで、私は
・基本的には個人利用のツール
・タグ付けによる管理
・関連付けを考えた機能
・簡単に公開可能
あたりを考えた写真管理ソフトが欲しいんですよ。


まぁぶっちゃけ簡単な脳内設計はできているんだけど、作ったことがないタイプのアプリケーションになるのでまだ手は出していません。
エントリが長すぎるので今回はここまで。
次回は脳内の設計図を吐き出します。

投稿者 togabito : 00:56 | コメント (0) | トラックバック

2007年02月22日

CUDAやばいなあ、の続き

ゼミがなかったので先生とかと話はしてないんだけど、まぁ続き。

CUDAをGPUのアーキテクチャとして見たとき、仮にCUDAがGPUの歴史と今を一気に塗り替え今後も続くものであると見た場合、CUDAを利用してアプリケーションをうまく作る方法を研究すること意外のことは意味が薄れるだろう。

現実的には、CPUとかけ離れたアーキテクチャなので、適したアプリケーションを探すことや、既存のプログラムをうまく適用するための手法が重要になる。
ぶっちゃけるとCELLと同じだなこれは。

次に考えるのは、AMD(ATI)という対抗馬の存在。
Close To the MetalとかいうHPC向けの言語?環境?を発表しているんだが、これもCUDAみたいにアーキテクチャと強く依存したモノになるんじゃないだろうか。恐らく、CUDA同様にC/C++言語の拡張として出してくるんじゃないかと勝手に予想。

さて。
こういう話になると出てくるのが、所謂「いいとこどり」の発想。
……と言いたいのだが、どうなんだろうなぁ……。
方法はいくつか考えられる。

1:Cで書かれたプログラムを自動並列化的にGPUで処理しやすいようにコード変換するという考え。問題は、アーキテクチャの特性を引き出せる変換機構がないと性能が出ないこと。

2:CUDAとCTMの仕様から似通った部分を抜き出し、機械的に処理してどちらでも動くようにするという考え。問題は、CUDAとCTMに大きな差があるとどうしようもないこと。

3:グラフィックスAPIを利用しつつ、ある程度容易にプログラムが組めるようにサポートすること。問題は、グラフィックスAPIの構造とは根本的に異なるアーキテクチャへの対応が難しいことおよびシェーダの記述を隠蔽するのが難しそうなこと。

とりあえず3点挙げてみたが、どれも一長一短だと思う。ハードウェア側の進化の方向がわからないのも問題の一端だろうなぁ。


ちなみに今のところ、ひとまずは3のアプローチで色々やってみようと思っている。というかCPU+GPUの並列処理を自動並列化的になんとかできる気がしていないのも事実。


とりあえず寝よう。
朝から実験しよう。
成果報告書が進まないというか、実験データとかどのくらい載せれば良いんだろうね?

投稿者 togabito : 03:42 | コメント (0) | トラックバック

2007年02月19日

CUDAのベータ版が出てるわけだが

http://developer.nvidia.com/object/cuda.html
プログラミングガイドが80ページ越えとかでかすぎて読む気が……

とりあえず私の研究ネタともろ被りしているようには見えないけど、どうするかなぁ。かなりアグレッシブすぎてどうしようか迷う。
とにかく性能評価をしてみるというのもひとつの手。
一方、GPUアーキテクチャに激しく依存しているのは間違いないので、AMD(ATI)という対抗馬の存在を考えるとCUDAにはまるのは良くない。
難しいところだ。

関係ないけど、どうも実験機2号のネットワーク周りが腐っているのでFedora再インストール中。いい加減安定してくれ。

投稿者 togabito : 23:37 | コメント (0) | トラックバック

Cellすぴーどちゃれんじ2007

気分転換にやっと手を出した。

案内メールに従ってメンバー登録。
サンプルコピー。
テスト実行。
ソースコード解析。

えーと、関数に渡されてくるパラメタの意味がわからないんだけど、どこを読めばいいのん?
define.h見ても構造体の説明が無いよ……。
printfデバッグができなさそうなので、流石にこれだけの情報で理解しろといわれても困る。というか時間をあまり裂けないので、この辺で時間を消費するのは勘弁して欲しいわけで。

助けてsatmatの人もしくはたぬきの人。


とりあえず、MPICHの実行環境不具合(?)修正に戻ろう……。

投稿者 togabito : 21:57 | コメント (0) | トラックバック

2007年02月16日

環境依存にひっかかった。のか?

具体的には、MPIでつないだ先にDISPLAY環境変数が無いって言われた。
環境依存キター。

というわけで、PCつけっぱで研究室へ行って、設定ファイルにDISPLAY環境変数についても記述できるようにするか。

実験機が落ちませんように……。
きっとネットワークだけ切れるんだろうけど。


ちなみに昨夜の問題はいまだ解決せず。
MPI_Waitでこける。
別のプログラムを動かしたら上記の問題が起きたので、ちょっと見直すか。

投稿者 togabito : 10:37 | コメント (0) | トラックバック

MPIがおかしいっぽい

MPI_WAIT : Message truncated
で死ぬ。
なんだろうね。

というわけで実験データが揃いません。
困ったなあ。
別のPCで取ったデータはあるけど。

ToD2(PSP)のオープニングだけ拝んで寝る。

投稿者 togabito : 03:28 | コメント (0) | トラックバック

2007年02月15日

バグとれねえぞ! お?

2CPUの時点でHPLの精度確認がFAILEDするぜ。こいつは謎い。
並列計算は1回しかしないようにしても駄目だな。
同じ問題をピンポイントで再現しても普通に動くんだよな。
CPUだけだから精度の問題はないはずなんだけどなあ。

さて、30分のプレゼン資料が60Pを超えています。
とはいえ、10枚くらいは差分画像?のパラパラ漫画?のようなもの。
でも、その辺さっぴいて目次とかを抜かしても実質50Pくらいある。

……削るところないなあこれ。聞いている人はついてこられるのかしら?


ToD2がやりたいとです……。

投稿者 togabito : 19:52 | コメント (0) | トラックバック

2007年02月12日

inline関数の罠

vcだと別のファイルに書いた関数は使えなくなるのか。
staticと同様に。

今更知ったぜチクショウ。
通りでコンパイル(リンク)ができないわけだ。

gccではどうなっているんだろう。
Makeはできてるんだよな。
inline化はできているのかわからないんだよな。

ちなみに用途はDEBUGビルド時以外に空っぽにして最適化で殺してもらうデバッグ関数。

投稿者 togabito : 01:46 | コメント (0) | トラックバック

2007年02月11日

GeForceとRadeonは一緒に使えるか

@Fedora6
# yum install kmod-fglrx
Installed: kmod-fglrx.xxx fc6
# yum install kmod-nvidia
Error: xorg-x11-drv-nvidia conflicts with xorg-x11-drv-fglrx
Error: xorg-x11-drcv-fglrx conflicts with xorg-x11-drv-nvidia

あ、駄目なのか。
つまんないなあ。両方同時に使ったっていいじゃないかぁぁぁ。

さてと、次はWindowsで試すか(ぁ

投稿者 togabito : 14:00 | コメント (0) | トラックバック

2007年02月09日

ツンツンな実験機と格闘中

未踏の報告会までおよそ一週間しかありませんが、実験機がツンツンしています。
ここしばらく超がんばっていてくれた2号機がフリーズ病。
今はどうにか期限を取り戻してくれたようで動いていますが、いつ気絶するかわかりません。

そんなわけで、1号機で実験中。
共有メモリ回りの使い方が悪いようで、エラーが消えません。研究室に置いてある本しか資料がないよ。


さて、どう考えても実用アプリケーションでの性能評価は間に合わないな。おとなしく、わかったことと予想できることとできていないことについて話すことにしよう。

というわけで、未踏報告会プレゼン作り始めました。データがちゃんと載せられればいいんだけど、間に合うのかしら?
日付が変わって今日のゼミ資料?あー……実装中評価中企画中で。

投稿者 togabito : 00:01 | コメント (0) | トラックバック

2007年02月08日

実験機がツン期に入った

実験に使いすぎたためか、デレ期を越えてツン期に入りました。

1:電源を入れるとスイッチ部周辺がカチカチ?カツンカツン?となぞの音を立てて起動しないことがある
2:気がつくとフリーズしている
3:いっそのこと入れなおしてクリーンにしてやろうと思ったら、何故かBIOSで起動順序FirstのUSB-CDROMからブートされない

これだからLinuxは困る。

小一時間放置して、駄目ならなんとしてでもクリーンインストールしてやろう。

投稿者 togabito : 14:40 | コメント (0) | トラックバック

2007年02月06日

複数GPUの思想

ぶっちゃけ研究資料のサイトに書いていることなんだけど、日記に回したほうが人の目に触れるので回してみる。

長いので本文は追記に書く。

ちなみに、ここでいう複数GPUってのは、1PCにビデオカードを複数ぶっさす話ね。
PC複数台は話の範疇に置きません。

----

複数GPUというと、SLIやCrossFireを考える人がいそうだが、
私はあえてそうでない方向へ進んでいる。
その辺について考えていることを適当に書いておくことにする。


SLIやCrossFireを使う利点は、1GPU向けプログラムをそのまま2GPUに適用できることだと思う。
ドライバレベル(ユーザプログラムより下のレベル)で最適化をしてくれるなら、それにまかせればユーザの負担が軽減されるのだから、
(主にアプリケーションプログラマが)幸せになれる。

ちなみに、ドライバにお任せで本当に性能が向上するのかは知りません。
GeForceもRadeonもプロファイルを使っているはずなので、
自作アプリだと厳しかったりするのかな?


一方で、いくつもの欠点が思いつく。

まず、SLIやCrossFireが性能を確実に2倍(以上)にするものではなく、対象アプリケーションによっては全く性能向上が行えないという話を聞いたことがある。
とはいえ、これは恐らくCPUとGPUの処理バランスの問題だろうから置いておこう。

次に、VRAM容量を2倍扱いにできないことが挙げられる。
SLIにせよCrossFireにせよ、2GPUそれぞれのVRAMに同一のデータを配置しておき、
それを用いて分割フレームレンダリングなどを可能としているためだ。
VRAMアクセス速度が向上する可能性はあると思うが、メモリ容量は扱える問題サイズの上限に直結する問題であり、
VRAM容量の増加効果が得られないのは残念すぎる。

更に、性能が異なるGPUを組み合わせて利用すると弱い方にひきずられてしまうなど、複数GPUの全ての性能を活用することが困難であるという点も挙げられる。
1世代変わると演算性能が劇的に変わるGPUにおいて、旧機種と新機種の併用にどれだけの効果があるのかという声も聞こえそうだが、
例えば独立した複数のジョブをどんどん消化していくという問題設定を考えた場合、
それなりの性能を持つプロセッサが複数あれば、どんどんジョブを投下できるようになり、実行時間の短縮を行うことができる。
GPUはCPUと比較してアーキテクチャの進化に対してバスの進化速度が極端に遅いため、
旧世代のプロセッサを現行機に追加することが容易であるため、
世代の異なるプロセッサを組み合わせて全部の性能を同時にりようしてやろうという考え方は十分に現実的ではないだろうか。

最後に、SLIやCrossFireでは、当然ながら、 GeForceとRadeonを併用することはできない。


では、複数GPUを複数GPUとして扱う場合について考えてみよう。

こちらの場合は、上記の利点・欠点が逆転する。

欠点は、1GPU向けのプログラムをそのまま2GPUに適用することは不可能であり、実装に手間がかかることである。

利点は、GPUを独立して叩けるためVRAM容量を2倍使うことが可能であり、
性能が異なるGPUでも全て活用できる可能性があり、
もしかしたらGeForceとRadeonを同時に使えるかもしれないことである。


複数GPUの方は半分くらいが想像の範囲を超えていないのだが、
こうして考えると特にGPGPUの世界では複数のGPUを複数のGPUとして扱う方が面白そうに見える。


なんだか自動並列化コンパイラと手動並列化プログラミングの比較をしている気がしてきた。
きっとあながち間違ってないよね。

偽要約:
未踏の成果報告会のデータだけど、HPLで妥協していいよね。
新しい計算基盤ソフトウェアによって現在の計算機プログラミングの世界に新しいパラダイムをもたらそうとしているという主張はできるからいいよね。
……っつーかネタが思いつかないのよ。プレゼン資料を半分くらいでっちあげてから、CLAPACKにでもぶち込んで考えるかなぁ。

投稿者 togabito : 02:34 | コメント (0) | トラックバック

2007年02月04日

フィッシングサイト対策目的にURLを可視化するというアイディア

オリジナルアイディアbyところてん
http://www16.atwiki.jp/tokoroten/pages/153.html

要約:
ところてん:http://www.radiumsoftware.com/0702.html#070201 このアイディアすげえ。URL可視化したらフィッシングサイト検知に使えるんじゃね?ちょっとoperaプラグインで実装しようかな。
咎人:OK、Greasemonkeyで実装してみる。一度弄ってみたかったんだ。

というわけで、プロトタイプ作って使えそうなことを確認した。
あと、Greasemonkey面白いね。慣れないJSとCSSを使っているのでリファレンスとにらめっこ必死なのは仕方がない。

ところてんの人の記述にあるように、別の人がまともな実装をしてくれてます。使ってみると面白いよ。
特にインラインフレームに反応してくれるらしく、mixi開くと広告部分に別のマークが表示されたりするのが楽しいというかなんというか。
ちなみに私の実装は全力でプロトタイプというか、オリジナルアイディアを元に、自分で組めるレベルに劣化させたものなので公開する気はありません。あしからず。

と思ったらところてんにリンクされてた罠。
比較するとNineBlockの強力さが良くわかるので、しばらく放置(公開)しておきます。
ページ開くたびにaaa.jspeed.jpに画像を取得しに行くから重いかもしれません。あしからず。
http://aaa.jspeed.jp/~togabito/work/greasemonkey/bodytest/

投稿者 togabito : 10:58 | コメント (0) | トラックバック

2007年02月01日

複数CPU+複数GPUとかのメモみたいの

割と雑多にメモってるのでみやすくないけど勘弁してね。


とりあえず、2CPU+2GPUまでやったよ!
2CPUって言ってもAthlon64X2だけど。
細かい性能評価はもうちょっとやります。

さて。
とりあえず、2CPU+2GPUで全性能使いきろうってのは割となんとかなる感じ。一度別の実装で実験してあったのでわかってはいたんだけど。

実験環境はGeForce7950GTを2枚刺したSLIマザー。OSはLinux。

2CPUってのはマルチプロセスなりマルチスレッドなりで普通に使えるのが知られている。

2GPUってのは(既に公開している研究メモに書いてあるけど)OpenGLでそのまま叩けないのでマルチプロセス実装。

2GPUでは、1GPUの半分近くまで実行時間減らせた。
2CPU+2GPUも現状かなり高速になってるので大丈夫だろう。


続いてSLIを試してみた。
実験を只管rootでやってた(危険)ので、
# nvidia-xconfig --sli=hoge
する。
hogeにOffとかAutoとかSFRとかAFRとか指定する。
ログアウトすると、Xが再起動しているので反映されてるよね?

この状態で実行したが、1GPUと全く変化なし。
何か足りていないのかしら?

SLIを引き合いに出したので、SLIやCrossFireを使う場合と使わない場合での差について言及しておくことにする。
情報ソースを失念しているが、確かSLIではVRAMが2倍にならないはずである。CrossFireも同様。一方、私のやっているプログラムレベルで複数GPUを複数GPUとして扱う実装では、VRAMがちゃんと2倍になる。これだけで十分意味があると思うんだがどうか。
コレとは直接関係ないけど、コレまでの経験上問題サイズが4000とかのでかい行列積和計算は正しい計算結果が得られないという症状があった。SLI化しても同様である。最も、実行時間を見る限りはSLI化ができていない気もするが。一方で、今回の実装では問題を分割実行しているためか、4000サイズでも正しい計算結果が得られている。
以上から、今回の複数GPU実装はなかなかいけるんじゃなかろうか。


メモ終了。
明日(既に今日)は実行時間のチェックをもうちょっとやって、チューニングの検討とかベンチマークへの組み込みとかやろう。とりあえずHPLで。演算精度足りないけど。

……ちっとも眠くないので酒飲んでまったりするか……。風呂で一時間寝ているのが悪いのかしら。

投稿者 togabito : 03:08 | コメント (0) | トラックバック

2007年01月31日

やっと複数GPUプログラムがまともに動くようになった気がする

実行ファイル1つでちゃんと動くようにしたかったので

forkでshmでmmapでsocketでGLSLなプログラムになりましたとさ。

きめえ。


ぶっちゃけ、複数GPUのオーバヘッドはたいしたことなさそう。
さっさとCPUとの並列処理をやるぞー。

----
今日卒論提出の皆さんは、あと一息がんばってください。
あと、私に卒論を見せるともれなく赤くするので気をつけm(ry

投稿者 togabito : 03:45 | コメント (0) | トラックバック

2007年01月29日

やっとselect一段落

久々だったので全力で忘れすぎていた。
これはいかん。

んで。

ソースが伸びるなこれ。
適当に関数化するか。

X40にVMでknoppix入れたら激重い上になんかHOSTからsshできない件。Linux弄るのに使うつもりだったのに。
もういいFreeBSD入れる。
HDDが全然ないけど大丈夫かなあ?

投稿者 togabito : 15:26 | コメント (0) | トラックバック

UNIXネットワークプログラミング第2版Vol.2

IPC:プロセス間通信
という副題が付いていたので買った。

肝心な部分がスレッド間通信だったorz


さて、どうしたものか。

投稿者 togabito : 12:31 | コメント (0) | トラックバック

2007年01月28日

タイムアウトつき同期 のようなもの

ってsocketのselectを使う以外に良い(手間のかからない)実装あるかしら。

基本的にはプロセス間、しかもできることなら親子でも任意プロセス間でも使える同期をやりたい。ただし、タイムアウトできなくてはならない。当然だけどスピンロックされるのも困る。


とか考えていたら、やっぱりselectを使うのが一番いいんじゃないかという結論が見えてきた。
そんなもんかしら。

投稿者 togabito : 23:24 | コメント (0) | トラックバック

socketだめぽ

駄目なのは頭の方ですが。


色々と忘れていたのでweb漁りながら実装してたんだが、気がついたらこの時間になってまだ動いていない事実。

駄目だ。
一冊本を買おう。

オススメの本募集中。
朝起きられたらアキバへ突撃してくる。
自転車で。

ただし、道に迷わずに目的地にたどり着けるかは不明。というか道を知らない。

投稿者 togabito : 02:45 | コメント (0) | トラックバック

2007年01月27日

勘違い@ソケットプログラミング

なんかrecvfromがうまくいかないなあと思ってたら

相手がsendtoする前にrecvfrom呼んでた。


UDPだもんなぁ。
今まで動いていたのが運の良さに依存していた罠。

同期+少量データ通信を高速にやるためAF_UNIXでUDPだったけど、仕方がないのでTCPに代えることにする。
速度が落ちたら吊ればいいよね。


当然TCPプログラミングをちゃんと覚えていないわけで。
えーと、accept、connect……めんどくせええええ

投稿者 togabito : 14:39 | コメント (0) | トラックバック

2007年01月25日

shm_open + mmap

4096*4096*sizeof(float)の共有メモリ確保デキター

っぽい。
素晴らしい。

投稿者 togabito : 12:15 | コメント (0) | トラックバック

2007年01月23日

mmapわかる方、教えてください。

mmapでプロセス間メモリ共有を書こうかと思うんですが、サイズの制限ってどこを見ればいいんですか?
man見ても良くわかりません。


何がしたいのかというと、でかい共有メモリを使いたい。
shm(いわゆる共有メモリ)は/proc/sys/kernel/shmmax にバイト数が書かれている。
fc6のデフォルトshmmaxは33554432。およそ32MB。float1つが4byteなので、長さ8388608個の配列を扱えるが、2048*2048の配列を2つ置いたら埋まるわけで、でかめの数値計算をするには足りない。
shmmaxファイルを書き換えればでかい共有メモリを扱えるんだが、rootで書き換えないといけないので、ちょっとうれしくない。

というわけで、mmapが一般ユーザ権限ででかい共有メモリを作る手段になってくれればありがたいんだけど、どうなんだろう?

(shmmaxが最大バイト数とか読めるのに対して、shmallが最大ページ数に見えるんだけど、これは何のことだろう。shmmaxを何個も作れるなら私の実験プログラムはエラーしなかったわけだしなぁ?)

以上。
情報求む。

投稿者 togabito : 02:39 | コメント (0) | トラックバック

2007年01月17日

GPUPC GEMM LIBRARY公開


GPUPCプロジェクト

とりあえず研究&&未踏なプログラムをまともに公開開始。
WindowsユーザにはATLASの導入というめんどくさい手順があるのが問題か。バイナリ置いたけど。

VisualStudioやgccの環境があれば、ちゃんと導入手順に従うことで使えるようになるはずです。
人柱募集中(こら


さて、学会の旅支度をして寝る。
寝過ごさないか不安だ……。

投稿者 togabito : 01:36 | コメント (0) | トラックバック

2007年01月10日

消えないヒープ破壊。デバッグどうやるんだ?

glutDestroyWindowで出るぜ。

mallocあたりの問題なら
_CrtSetDbgFlag(_CrtSetDbgFlag(0) | _CRTDBG_LEAK_CHECK_DF);
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtSetBreakAlloc(*);
あたりを使ってうまく検出できるんだが

うーむ?

投稿者 togabito : 00:54 | コメント (0) | トラックバック

2007年01月06日

Not A Number

double型を返すはずの関数が、intを返すように宣言?されてた。

int hogehoge()
{
return (double)hoge;
}
↑意味的にはこんな感じ

……いや、-Wallつけてあったのに、なんで素通りしてたんだ?
つーか、これでNaN出るんだね!


久々にプログラム関連で死にたくなった(嘘

投稿者 togabito : 17:00 | コメント (0) | トラックバック

2006年12月20日

XNAだめぽ

いや、実行環境としてX40を使っているのが悪い。

ほげの人に釣られてちょっとX40で動くかをチェックしてたんだけど、全然駄目。
当然原因はShaderModel。
Forumとかにソフトウェアエミュレーションで動かせるみたいな記述があったのでやってみたけど、駄目だね。

少なくとも、REFへの変更はイベントハンドルの中でやるように設定してるだけど、イベントハンドルが呼ばれる前に初期設定のままで初期化がされているっぽい、ってことはわかった。初期化ってのはいわゆるDirectGraphicsの初期化みたいなものね。
んで、イベントハンドルの中でやっているのは、初期化のときに済んでいる必要がある処理。っつーわけで、エラー。

とまぁ、こんな感じ?
残念だけど、一旦放置して、メシ喰って研究の方のコーディングに戻る。
オリジンやる暇あんのか?

投稿者 togabito : 20:21 | コメント (0) | トラックバック

2006年12月19日

Linuxわかんねぇっ

またかと。

Athlon64X2上でSMP対応カーネルが動いているんだが、性能比較のためにSMP非対応で実験がしたい。
どうすればいいんだっ!
LinuxのKernelをどこからか入手すればいいらしいが、Linux Kernelでぐぐるのは無謀すぎて無理だっ!!

誰か、何とかしてくれませんかね?(こら


イヤ、マジデワカランノデスヨ。
FreeBSDのKernel入れ替えならわかるんですが。

投稿者 togabito : 23:41 | コメント (0) | トラックバック

2006年12月12日

複数GPUぷろぐらみんぐう

一歩前進。

昨日:
実験機二号を環境整備してDirectX版を実行→OK
あれ?
っつーわけで一号のドライバ類を入れなおし→OK
俺の一ヶ月(?)を返せ!!!

今日:
二号でOpenGL@Linux版を実行→NG
freeglut (cg_gemm): illegal glutInit() reinitialization attempt
およ?freeglutの時点でこけてる……
しかも、マルチスレッド化しても駄目とかどうなっているんだ?

まぁ、ガンガン買いつつ研究室行って、freeglut周りの調査でもするか。
別にマルチプロセス版が動けばいいので、あまり気にはしない。

明日(予定):
OpenGL@Linuxマルチプロセス版
OpenGL@Windowsただし余裕があれば

投稿者 togabito : 12:29 | コメント (0) | トラックバック

2006年12月06日

初めての?共有メモリ・プロセス並列プログラミング

実はスレッド並列しかやったことがなかった.
まぁMPIとかsocketとかが明らかにプロセス並列だし,共有メモリはOpenMPとかやってあるので間違ったタイトル.

共有メモリshmを使うのはいいとして,プログラムの制御がしにくいのでsocketをトリガーにするのは一般的なんだろうか?
なんだかキモイような気はするけど,自分の頭の中では直ぐに思いついた構造なので,よくわからない.

しかし何だ,これは簡単だなあ.めんどくさい細かい同期タイミングとかを気にしなくてもやれる気がする.
プログラムの構造が単純だからな.
とか言ってると,実は嵌りに陥るかもな.

まぁ,2・3日で一気に実装するぜ.

投稿者 togabito : 16:43 | コメント (0) | トラックバック

2006年11月30日

これはもう駄目かもわからんね

DirectX版もOpenGL版も実装不能に陥った。
実装不能というか性能が出せないというか。
とにかく解決不能。

おわた(AA略


さて、どうしたものか。
とりあえず当面の課題として北海道へ行きたいんだが(内輪ネタ

ちょうど月末で未踏の報告書も書かないといかんから、相談するか。
しかし、まさかここで嵌るとは思わなかったぜ。
MSDN ForumもOpenGL Forumも、書いている英語がゴミとはいえ反応ないとかしょんぼりだ。
やれやれだぜ。

投稿者 togabito : 03:12 | コメント (0) | トラックバック

2006年11月29日

気が向いたのでfswikiのプラグイン作った

wikiから外部画像ファイルを参照……
……できなかったわけじゃなくて、画像のURLを貼れば画像が見えるんだけど、「本当の意味でimgタグで括るだけ」という素敵仕様だったので、サイズ指定とかリンク指定とかできるようにした。

うん。PDF化機能に対応する方法が思いつかねえ。
まぁ、もっともやりたかったことは実現したからいいんだけど、なんだか悔しい。

仕方が無いので、カッとなって部内向けにツールの使い方のドキュメントを書いた。今では反省?している。

投稿者 togabito : 03:27 | コメント (0) | トラックバック

2006年11月28日

msbuildうまくいかねぇ

ちょっと一括ビルドがしたくて弄ってたんだけど、駄目だな。

windows.hがincludeできないとか言われるんだが、INCLUDEを設定して/useenvをすると今度はcl.exeの起動中にエラーとか。
うーん、VS2k3(Proだっけ?academicなのは間違いないんだが)とVC2k5ee+PlatformSDKが共存しているキモイ環境なのが問題か。


まぁ、VS2k5Proの入っている実験機ではちゃんと動いているから、華麗に放置かなぁ?
VC2k3をアンインストールして、ぶっちゃけX40をそろそろ一度クリーンにしたいけど、サークル内のライブラリサポートのためにそうも行かない私はどうかと思う。

投稿者 togabito : 03:38 | コメント (0) | トラックバック

2006年11月26日

はじめてのxml

ちょいとばかし弄ってみた。
いわゆるiniファイルの代用。
設定ファイルを弄る手段として導入。

XOR氏のアドバイスによって、どうにか完成。
まぁ、そもそもxmlの解析さえできればOKだったわけで。
んー、これならまぁまぁ便利かなぁ、って程度。
今回はperlから呼び出して使ったわけだが、次に機会があったらC/C++から使ってみるか。

投稿者 togabito : 05:02 | コメント (0) | トラックバック

2006年11月21日

min関数とmax関数

スゲェ今更なんだけど,LinuxのC(gcc)ではmin関数とmax関数が出てこない.っぽい.
存在しないのか?
それとも標準ではリンクされないライブラリに埋もれているのか?

微妙に謎だ.

スゲェ今更なんだけど,LinuxのC(gcc)ではmin関数とmax関数が出てこない.っぽい.
存在しないのか?
それとも標準ではリンクされないライブラリに埋もれているのか?

微妙に謎だ.

投稿者 togabito : 16:30 | コメント (0) | トラックバック

2006年11月14日

クラスのなりすまし

既存のクラスを継承している派生クラスなんだけど、基底クラスへのポインタを持っている。んでもって、基底クラスの多くの関数がpublicにオーバーライド可能。

オブジェクト指向は知ってるけど、デザインパターンには疎いので、コレが基本的な方法なのかイレギュラーな方法なのか知らんけど、とにかくキモイが便利。


そんなわけで、ミニゲーム集にはミニゲーム製作者の知らないところでリプレイ機能が実装されました。
馬鹿かと、阿呆かと。
ゲームの特性によってはまともに機能しないけどね。

投稿者 togabito : 03:44 | コメント (0) | トラックバック

2006年11月10日

NVIDIA CUDA

http://developer.nvidia.com/object/cuda.html
要約:C言語でGPUプログラムできるツール(SDK)作ったよ!

な,なんだってー.
というわけで,GPUプログラムが楽になるかも知れん.つーかそれよりFFTとBLASが既に作られているっぽいのが気になる.使わせろ.

えーと,使うのに登録が要るんだけど,どうみても登録フォームがソフトウェア開発者というか,既にソフトウェアをリリースしている人向けなんですが.どうしたものか.

あと,必要な環境が書かれていないのはどうしたものか.登録しないと情報が足りなさそうだなぁ.


……まさかとは思うけど,最悪研究テーマというか未踏テーマにもろ被りするよね?
大丈夫だと思うけど.

投稿者 togabito : 10:24 | コメント (0) | トラックバック

2006年11月09日

Fedora入れた続き2

修正版。

とりあえずインストールして、シングルユーザで起動。

#service network start
#wget http://rpm.livna.org/fedora/6/x86_64/livna-release-6-1.noarch.rpm
i386じゃなくてx86_64ね
#rpm -Uvh livna-release-6-1.noarch.rpm
#yum install kmod-nvidia
#yum install freeglut-devel
#yum install atlas-devel
w3mを入れるか、既にGUIログインができるはずなのでglewを入手。ソースを入手してmake;make install、ただしなんかzipを拾ってきてunzipしたら、ファイルのパーミッションがいかれててこけたのでtgzでやりなおした。

アプリケーションメニューから
NVIDIA Desktop Settingsを起動するも、
OpenGL/GLX Information
を叩くとXが死ぬので、
/var/log/Xorg.0.log
を漁るとDRIあたりがおかしいというエラーが。
色々ぐぐった結果、xorg.confの
Section "Files"

ModulePath "/usr/lib64/xorg/modules/extensions/nvidia"
ModulePath "/usr/lib64/xorg/modules"
を追加したらエラーが消えた。

ひとまずこれで動くようになったので、また作業を進めよう。

投稿者 togabito : 17:27 | コメント (0) | トラックバック

2006年11月08日

Fedora入れた続き

さくらんぼの人のアドバイスを受けて作業。

まず、シングルユーザモードでログイン。
grubのメニューrhgbとquietを削除してsingleに書き換える。

shが立ち上がったら
#service network start
でネットワークを起動。

続いて、
#wget http://rpm.livna.org/fedora/6/i386/livna-release-6-1.noarch.rpm
#rpm -Uvh livna-release-6-1.noarch.rpm
#yum install kmod-nvidia
でnvidia関連のファイルが入ったので、rebootするとログインできるようになった。

さて。
この時点でx周りがどうなっているのか今ひとつわからなかったので、素直にnvidiaのドライバを入れてみることにした。

# yum install w3m
# w3m www.nvidia.com
DOWNLOAD DRIVERS -> Linux, FreeBSD, and Solaris Drivers
と辿ってドライバ(.shファイル)をダウンロードし、実行。
特に問題なく導入に成功。

続いて、GL関係を追加。
# yum install freeglut-devel
glew.sourceforge.netからSourceZipを拾ってきてunzip, make, make install。
なんか知らないけどMakefileいじらないでも入った。
前回CentOSの時は嵌ったんだけど。

これで一通り完了。
あとはyumでatlas突っ込んで実験プログラムをぶん回し。
freeglutの仕様なのか、glutInitを使わずにglutCreateWindowやったら怒られたので適当に修正した。
ベンチマークスクリプトまでちゃんと動いたっぽいので、公開しているGPUプログラムを更新しよう。

ちなみに、AthlonX2は普通にDualCoreCPUとして認識された模様。
/proc/cpuinfoがいい感じになってますと報告。

投稿者 togabito : 22:05 | コメント (0) | トラックバック

実験機にFedora入れたよ!

Enabling /etc/fstab swaps : [ OK ]
の後画面が変わって、何も起きない。
Ctrl+Alt+F1で元の画面が見えるけど、進まない。

オノレ。

投稿者 togabito : 01:42 | コメント (0) | トラックバック

2006年11月03日

複数GPU@DirectX

なんとなくやってみた。

実装方法としては、CreateDeviceの第一引数を利用して複数デバイスを生成。それぞれのデバイスを利用して色々と実行。

SLIを有効化していない状態で、GPU1枚につきディスプレイを1つ接続。GetAdapterCountで複数の値が返ってくることを確認。
いざGPUを動かしてみると、どうも2つ目のGPUが遅い。何故だ?
試しにウィンドウ表示位置をいじって2つのディスプレイそれぞれに表示されるようにしてみたが、効果はなし。

う~む?
誰かこんな変態行為やってないかなぁ。

投稿者 togabito : 02:25 | コメント (1) | トラックバック

2006年11月01日

Linuxはデレツン

ソレっぽいオプションを選んでインストールをすれば、インストール直後から色々なアプリが動かせてデレ。
何かトラブルが起きたり、カスタマイズしようと思うと、どうすればいいのか調べるのが困難なのでツン。

またネットワークが死にました。
生き返りません。
もうCentOSなんて信じない。
Fedoraでも入れようかしら。
でも入れるなら5?それとも6test3?


ちなみに、FreeBSDはツンデレ。
適当にインストールをすると色々とアプリケーションが入っていない……というかXさえ立ち上がらない位なのでツン。
公式handbookがまともで、後から色々いじりやすいのでデレ。

投稿者 togabito : 21:47 | コメント (0) | トラックバック

2006年10月31日

afxres.h

メモ:
実験機のvs2k5proで作ったプロジェクトをX40のvc2k5eeでビルドしたら
fatal error RC1015: Cannot open include file 'afxres.h'
とか言われた。
どうやら前者の環境では
Microsoft Visual Studio 8\VC\atlmfc\include
に置かれていてインクルードパスが通っていたのが、
後者の環境では
Microsoft Platform SDK\Include\mfc
に置かれていてパスが通っていなかったのが悪い模様。

投稿者 togabito : 01:29 | コメント (0) | トラックバック

2006年10月28日

DirectXのテクスチャ生成の際のフォーマットについて

ちょっと需要があったのでメモっておく。


とりあえずSDKドキュメントのD3DFORMATのページを参照。

テクスチャ生成時のオプションのひとつにテクスチャの形式、特にデータ配列関係があって、これの指定如何でVRAM消費量と画質が変わる。
重要なのは、データ型として何byte消費するかということと、ARGBに何byte消費するかである。

研究ではD3DFMT_A32B32G32R32Fばかり用いている。まぁ当然か。
普段ゲームを作るときはD3DFMT_A8R8G8B8を良く用いる。32bitだ。
VRAMを削減するのにD3DFMT_A8R3G3B2を用いたこともある。こちらは16bitだ。
正直言って16bit未満のフォーマットは無理だ。白黒画像でもない限り、階調が保てない。アルファが要らないならD3DFMT_R5G6B5あたりでどうだろうか。Win32の一般的なGDIの階調は確かこの辺のはずだから、割といけるだろう。

3D処理の際のテクスチャ生成にはDXTn Compressed Texture Formatsなんかの圧縮型を使うことが多いらしいんだけど、実はこっちは使ったことが無いので良くわからない。
SDKドキュメントにデータ容量が書かれていないんだけど、あとで調べておくか。

ちなみに、バックバッファでしか使えない形式とか、GPUの対応が必要な形式があるのでそのへん注意ね。


まぁとりあえずこんな感じ?
ちなみに、これらは頂点色とは関係ないよ。

投稿者 togabito : 03:11 | コメント (0) | トラックバック

2006年10月27日

ATIのGPU向けにプログラムを弄ったメモ

先日購入したX1600PRO向けにプログラムを改変したので,メモっておく.

そもそも既存の実験プログラムが動かなかった理由についてだがー

Cgを利用したプログラムが実行できなかった件については,
cgGLGetLatestProfile(CG_GL_FRAGMENT);
の返り値がCG_PROFILE_ARBFP1という旧世代のプロファイル,すなわち長い(命令数が多い)シェーダや動的分岐のあるシェーダが利用できないことに起因する.
今回はある程度長いプログラムを使っており,動的分岐がほぼ必須(プログラム実行開始後にシェーダソースを動的に書き換えれば回避できるけど)であり,場合によっては動的分岐を使うため,どうしようもない.
(下手すると演算精度も落ちるのかな?)

続いてGLSLを利用したプログラムもそのまま動かなかったのだが,こちらはどうやらテクスチャのフォーマット関係の問題らしい.
なんでも,ATIのGPUはいわゆるtextureRECTが使えないらしい.texture2DはtextureRECTと比べて制限が厳しいような情報を入手していたためRECT系を利用していたのだが,これが仇に.
そこで,試しにtexture2D系の実装を頑張ってみた.テクスチャ生成時のフォーマット指定を変更し,GLSLシェーダ内におけるテクスチャの形式および座標指定を変更することで対応することができる.なお,GLSLシェーダ内における座標指定は,textureRECT系が0からテクスチャサイズまでの値を指定するのに対し,texture2Dでは0から1までの値を指定するので注意が必要である.
また,ドライバの都合であると考えられるが,ATIでは
vec4 Color = {0.0, 0.0, 0.0, 0.0};
という形式の初期化指定ができないようである.
更に,0.0fのようにfloat値にfをつけても怒られてしまった.nvidiaの方が柔軟なのか,そもそも正式な記述方法からどちらかが逸脱しているのか.


とにかく,以上の変更によってX1600PRO上でプログラムが正常動作することが確認できた.まだ細かい動作確認が済んでいない部分があるが,ひとまずまともに動くようなのでベンチマークおよび公開を進めようと思う.
多分週末か週明けには更新できるだろう.


よし,サークル行くか(ぁ

投稿者 togabito : 15:01 | コメント (0) | トラックバック

2006年10月24日

GLSL/Cg@RadeonX1k

動作検証というか対象環境確認というか,そういう用途のためにRadeonX1600PROというよくわからないカードを購入.
玄人志向,ジャスト一万円くらい.
実はRadeonのカードを買うのは初めてだったりする.

つっこんだPCはDellのPenDマシン.WinXP64が稼動中.

ATIのサイトから最新ドライバを拾って実験プログラムを実行.しかしエラー.
どうやらシェーダ内でforを用いて動的な分岐をしているのが駄目らしい.
というのも,
cgGLGetLatestProfile(CG_GL_FRAGMENT);
の返り値がCG_PROFILE_ARBFP1.
実行可能な命令の種類が少なく,1パスで実行可能な命令の数も少ないという古いプロファイル.
コレは駄目だ.

というわけで,頓挫.
次はDirectXの方も弄ってみようと思う.

投稿者 togabito : 14:53 | コメント (0) | トラックバック

2006年10月17日

参考書物色中

数冊買おうと思ったので。
とりあえず以下候補。

1:More OpenGL Game Programming
http://www.amazon.co.jp/gp/product/1592008305/sr=1-6/qid=1161046639/ref=sr_1_6/250-5075004-5208207?ie=UTF8&s=english-books

2:The Cg Tutorial 日本語版―プログラム可能なリアルタイムグラフィックス完全ガイド
http://www.amazon.co.jp/gp/product/4939007553/ref=pd_sim_b_3/250-5075004-5208207?ie=UTF8

3:Real-Time Shader Programming 日本語版 - DIRECTX9.0対応
http://www.amazon.co.jp/gp/product/4939007529/ref=pd_sim_b_4/250-5075004-5208207?ie=UTF8

4:The COMPLETE Effect and HLSL Guide
http://www.amazon.co.jp/gp/product/0976613212/ref=sr_11_1/250-5075004-5208207?ie=UTF8

GPUGemsは1の和訳と2の原書が研究室にあるのでスルー。
さっさと読んで必要なところだけ使うって意味では日本語版がうれしいんだけど、CgTutorialなんかは和訳が酷いという話もあるのでどうしたものか。
立ち読みできればいいんだけど、そこら辺には売ってないよなぁ。秋葉とか行けば普通に陳列されているかしら?

3と4は内容が新しくなさそうな面もあるんだけど、プログラムの最適化に活用できないかと淡い期待を。


他にお勧めありませんかね?
OpenGLのリファレンス本みたいのって読んだことないんだけど、結構使えるのだろうか?

投稿者 togabito : 10:21 | コメント (0) | トラックバック

久々のC++

しばらく研究のソースコード、すなわちCばかりいじっていたので、久々にC++を使ったらもうね。
継承の使い方とかをすっかり忘れていました。
駄目だなこりゃ。


眠かったので早く寝たため、超早起きに成功。
ちょっと昼間で家でプログラムをいじろう。
あとWPCのチケットが一枚余ってるんだけど、誰かいる?

投稿者 togabito : 06:23 | コメント (0) | トラックバック

2006年10月11日

glewメモ

glew本家のglew32は,64窓でも使える.

glew32s.libをGLEW_STATICオプションつきでビルドすると,LIBC.libが無いって文句を言われる.おとなしくglew32.libを使ったほうが幸せ?

glewのdllが必要なのはなんだか気分が悪いけど,普通にサイトで配布されているから容認かなぁ……

投稿者 togabito : 10:19 | コメント (0) | トラックバック

2006年10月01日

気がついたら朝

とりあえず一周してCentOSに戻ってきた.
一号機はCentOS,二号機は色々現在すっからかん.


3時間くらい寝て,二号機もCentOS入れなおして,とにかく実験まわしてデータを確保しよう.

え?論文???
やばいネ.


そんなわけで,おやすみなさい.

投稿者 togabito : 05:49 | コメント (0) | トラックバック

ドキッ!問題だらけのLinux設定.ポロリもあるよ(首が

馬鹿なタイトルでも書かないと,ストレスがたまって生きていけません.
それから,この日記の後半は罵詈雑言でできています.あとは本気で悩んでいます.ご注意ください.

とりあえず実験機2号機が不定期に固まるのは仕様なので放置.五萬円出すから解決して欲しい気分だ.


えーと,CentOSのネットワーク設定がおかしいのはにっちもさっちもいかなくなって,いい加減嫌になったので,とりあえずubuntuを投げ込んでみた.
インストールは成功,ネットワークも動くけど,nvidiaの新しいドライバが入らん.研究のプログラムは,実行するとXを巻き込んで死ぬ.内部のライブラリとかのバージョンとかの問題かもしれないけど.

Vine3.2はインストールの段階でUSBマルチドライブの認識がうまく行かない予感.NICの認識も駄目そう.

FreeBSDは,オンボードLANの認識が多分無理.リストに一つ前までしか載ってない.手元にあった6.0のCDでは駄目だった.6.1はわからん.

FC5入れた.やっぱりDHCPが取れない.固定IP振ってもゲートウェイにpingを撃つこともできない.つーか何故か自分のIPからDestination Host Unreachableが帰ってくる.お前は何をしているんだ,と.

うーむ,これでは全くもって実験ができない.というかそもそも実験機の存在価値が無い.どうしようもない.死にたい.ころしたい.は解したい.すべてを無に還したい.日本語変換がいつまでも下手なMSIMEは滅びてしまえ.もう駄目だ.論文進んでない.書くことは大体決まっていて問題ないんだけど,データが取れなくて,そしてLinuxなんていう区疎なものを弄るために時間が割かれている.もったいない.還せ.ばーかばーか.


……思えば思うほど,なんで最初にCentOSのインストール+設定がうまく行っていたのか,なんで突然駄目になったのか,その辺が不思議でたまらない.
実は鯖の設定が腐っていて,そこにつながっているWindowsが何も問題なく動いているのはWindowsがunkだからという可能性も否定できない.でもWindowsはunkだからunkであるポイントが洗い出せないので,にっちもさっちも逝かないわけで.


あぁもう疲れたなぁ.
実験機放置して論文弄るかなぁ.そうもいかないんだよなぁ.

投稿者 togabito : 02:47 | コメント (0) | トラックバック

2006年09月27日

HPCS/ACS書いてるわけだが

実験機は二台とも順調に動いている.
実験プログラムは理想的な値が出ている.

メモ:
chkconfig rsh on
chkconfig rlogin on
cat hostname >> .rhosts
iptables --flush
setenv DISPLAY :0.0
xhost +

うん.
論文に書くことが無い.
いや,あるんだけど,実装とかの一番面白そうな気がする場所に書くことが無いんだ.MPIでつないだだけだし.
金曜までにデータも載せて一通り書いて,先生に駄目出ししてもらえばいいよね!

本日水曜日は,家に引き篭もって論文書いたりBF2やったり買い物したりする予定であります.

投稿者 togabito : 03:37 | コメント (0) | トラックバック

2006年09月26日

作業メモ

引き続き冷却運用中.

nisはめんどくさいのでとりあえずnfsだけ設定.鯖に.
実験機からマウントして,共通ユーザを作ってアクセス.

WindowMakerは
http://centos.karan.org/el4/extras/stable/i386/RPMS/repodata/repoview/WindowMaker-0-0.92.0-3.el4.kb.html
ここから拾ってきてrpm -ivhでセッションに表示されるようになった.
その後switchdeskでデフォルト化.
メニューのフォントが完全に逝ってるけど,慣れているので大丈夫.

Linux側がUTF-8で,FreeBSD側がeucJPなのではまり中.読めない.

投稿者 togabito : 02:15 | コメント (0) | トラックバック

2006年09月24日

二台目調達

論文のネタとしてデータを取りたいので,もう一台調達.
めんどいのでまたツクモexで一式.
午前中に突撃して8%減額チケットを手に入れたので,微妙に安かったかもね.研究室で使うための76GTと,ディスクとっかえひっかえのための箱も買ったので,詳細な値段は出してない.
少なくとも,OS抜きで24万台だったけど.

うん.
PC1台+αを持って帰るのは自殺行為だな.
調布駅でキャスターを一緒に持ってくれた名も知らぬ白人?の方,ありがとうございました.そしてアキバで駅まで荷物を一緒に持ってくれた山瀬氏,本当にありがとう.

で.
疲れすぎて小一時間昼寝してから必死に組み立て.
なんかうまく起動しないトラブルがあったけど,現在CentOSぶちこみ中.
二台目は当面Linuxオンリーでいいや.
NFS/NISも入れて,実質メイン実験機にしてしまおう.一台目はWindows/Linuxのディスク交換PCで,開発・実験・遊び兼用.
……64bit窓買ったけど,どうしようね?

あと欲しいのは,DVI映像切り替え機とD端子映像切り替え機かしら?SLI時にクローン表示ができるなら,高いDVI切り替えはいらなそうだな.後で試そう.


えーと,あれだ.
昨夜ぶん回した実験データをチェックして,そろそろ論文書こう.データ以外の期限は金曜だなw

む り .
でも負けない.

投稿者 togabito : 22:47 | コメント (0) | トラックバック

2006年09月23日

SLIで行列計算してみるテスト@Linux

なんとかSLIを弄る方法とかを把握したのでやってみた.


実行時間,変化なし.
……あれ?

頂点処理がほぼ0で,ピクセル処理ばっかりの変態プログラムなので,SFRをやればかなり速くなる気がしたが,残念ながら変化なし.何か設定が足りていないのかしら?

まぁ,Athlon64X2の非並列ATLASより3割近く速いわけで.んー,Athlonに適したgoto-blasがあるのかは知らんけど,それで少し挽回できれば,ちょうど良いかな.GPUの方をチューニングしなければw

とりあえずCPU+GPU並列の実験をぶんまわすか.

投稿者 togabito : 16:37 | コメント (0) | トラックバック

とりあえず大丈夫くさい

GNOME上でも実行時間が同じ位っぽいので,きっと大丈夫……

……きっと.

投稿者 togabito : 15:19 | コメント (0) | トラックバック

実験機環境構築中.助けて.

CentOSぶちこんだ.なんとなくVineに飽きたので.
なんとなくkernel2.6を入れてみたかったってのもある.

前にPen4HTのEpsonEndeavorにVineを入れたときは,確かHT切らないとpanicしてたような気がしたけど,すんなり入った.

で.

ログイン時のセッション選択がKDEとGNOMEとフェイルセーフなわけで.WindowMaker使わせろ.
KDEとGNOMEが好きか嫌いかじゃなくて(嫌いだけど),以前GNOMEだかの上で数値計算やったら速度が(WindowMakerに比べて)半減したことがあるので,WindowMakerも入れたいのですよ.
yumに存在しないから野良で拾ってmake installしたんだけど,予想通りセッションの選択に表示されない.

FreeBSDみたいに手で設定を書こうとしたら,どうみても.bashrcとかにそれっぽい設定が無い.っつーかシェルをtcshに変えたら,.tcshも.cshも.shも無いのにちゃんとKDEだかGNOMEだかが起動する.

Linuxの設定わかんねぇえええええええええええ


ぼすけて.
とりあえずランレベル3と5(のKDEだかGNOMEだか)で速度比較して,落ちなければいいか…….

投稿者 togabito : 14:27 | コメント (0) | トラックバック

2006年09月22日

ディスプレイきた。後は何が必要かなぁ?

MDT201WS届いたよ。

とりあえず、机の上を激しく片付けて、右にあった17インチCRT(RDF17IH)を下ろし、17インチ液晶(RDT179S)を右に寄せ、MDT201WSを左に設置。
それにしてもこのディスプレイはキモイ。入力端子の数がキモイ。
単純に端子の数を数えると、
 DVI + D-Sub + D4(+赤白音声) + S/RCA + 音声 + USB
ここにUSBハブ機能があるので4ポートついて、更に電源。誰がこんなに使うんだよ。
DVI:メインPC
D-Sub:サブPC
D4:CATVのSTB
S/RCA:PS2
うん。基本的に全部埋まった。
んー、STBとPS2は逆のほうがいいかなぁ?多分PS2の方が高画質を求めるから。心が。PS2用D端子アダプタ買ってこよう。

説明書を見るとD-SubとD3/D4はPinP使えないらしいよ。なんて微妙な。
ちなみに、今までメインだったRDT179SはDVIは綺麗だけどD-Subがunk。ところが、MDT201WSはD-Subでも十分綺麗。なんだこれ。

さて、せっかくだからBF2もやってみた。
最初は画面解像度が狂って駄目っぽかったが、+szx +szyの引数を利用したら、まともになったっぽい。ひとまず十分なクオリティ。というか、高解像度である程度でかいディスプレイだと、迫力が違うぜ。

SLIを有効にして遊んでいるが、効果がどれだけあるのかはよくわからない。
というか、SLI切り替えると再起動しろって言われるっぽいので、切り替えたくない。でも切り替えないとデュアルビューができない。というかSLI時はディスプレイ1つに強制されるっぽい。まぁ当然か。微妙に不便だ。

ひとまず満足したので、また研究に戻ろうと思う。
PS2つないでみるのは次の夜にでもやろう。

論文に複数PCの実験データを載せるために、もう一台PCを組もうかとも思うが、その前にリムーバブルHDDキット?でも買ってきて、別HDDにLinuxを入れて、一台でちゃんと動くことを保障しておこう。TGSの帰りに買えばいいよね。
手元に外付けCD-RWドライブがあるから光学ドライブは買わなかったんだけど、何気にバックアップDVD-Rすら読めないことに気がついた。元メインPCのDVD-Rドライブはかなりヘタっているので、一台外付けを買ってこよう。適当に。
机周りが色々と必死なので、いい加減ワイヤレスのキーボードをマウスも買いたい。あまりでっかくないの。
色々と手間を減らしたいのでのーとんごーすと欲しい。
64bit窓にAVG入らない。場合によっては購入か?
デジカメが(ry

うん。
買いたいもの多すぎ。
ひとまずTGS帰りは小物買いに徹して、土曜に実験プログラム回して、日曜か週明け(月曜日は無理だけど)にPC買い足しかなぁ。


とりあえず、しばらくはPCケースやディスプレイの箱を残しておくつもりなんだが、でかい。邪魔。うぼあ。

投稿者 togabito : 01:12 | コメント (0) | トラックバック

2006年09月19日

迂闊@並列行列積実験

(CPU+GPU)+(CPU+GPU)
で行列積をやったらどうも遅い.
まぁ性能が不均質だから,問題の分割が悪いのかなぁとか思っていたんだが
実行時間のログをとって眺めていて気がついたんだけど,これってちゃんとヘテロ(不均質)向けのアルゴリズム使わないと駄目じゃないか.
データ送受信前後の計算量の割合が,各PCで逆転しとる.

そりゃぁダメダヨナァ.


ぶっちゃけヘテロ向けのアルゴリズムなんてでっちあげられるんだが,何が頭が悪いかというと,

ホモ(均質)向けを一通り終える前にヘテロ向けをやっているのが頭が悪い.
論文化するときも書きにくそうで欝だ.


えーと,ホモをやるには研究室のPCのGPUを指し直すのと,手元の実験環境を増強するのどっちが速いか……
研究室:7800GTX+6600GT
手元:7950GT(明日到着予定)
……6600GTを増やすのは頭が悪いとして,7800GTX?売ってるわけNEEEEEE!!!

さっさともう一台調達しようか.
具体的には金曜日のTGSの帰りあたり.
口座に奨学金あるから,現金で買えばいいんだな.
馬鹿かと阿呆かと.


とりあえず,ヘテロ向けのアルゴリズムでっちあげよう.

ここまで書いて,研究費(未踏じゃなくて研究室)で買えば良いんじゃね?ってのも思いついたんだけど,まぁ無かったことにする.
研究費でGPU買うくらいなら,CELL買おうぜCELL.ゲームのできるヤツw

投稿者 togabito : 16:37 | コメント (0) | トラックバック

2006年09月18日

SVNクライアント……

……んー,checkoutしなおして,ファイルを弄って,commitしたらうまくいったっぽい?
古いsvnクライアントで弄った既存のリポジトリが新しいsvnクライアントを拒否(?)してるのかと思ったが,そうでもなさそうなんだよなぁ……

……とりあえず,動いているので放置で.

投稿者 togabito : 00:54 | コメント (0) | トラックバック

2006年09月17日

svnクライアントいかれたw

よくわからんエラーが出たので適当に最新?バージョンを拾ってきたんだが



うぼあー.


RapidSVNも,アレはアレで謎のPermission Deniedしてたんだよなぁ.
今じゃ新しいバージョンのクライアント使えとか言われるし.
謎だ.萎えたので放置して,また後で入れなおしてみるか.

投稿者 togabito : 00:55 | コメント (0) | トラックバック

2006年09月16日

プログラムを打つ環境ではないので脳を動かしてみる

ぶっちゃけ応用数理学会聞いててもわからんのですよ.
早めに昼飯を探しに旅立とう.

とりあえず,シェーダ関連のライブラリをリリースしようとしているわけだが,CgなりGLSLのシェーダを使うにはシェーダファイルが必要である.
これらのシェーダを利用するには,シェーダファイルのコンパイルを実行時に行う必要がある.
とはいえ,(GLSLは知らんけど)オブジェクトファイルを事前に生成し,バイナリとして出力しておくこともできるのではないかと考えている.バイナリはハードウェアに依存するので,いわゆるインストール時チューニングの考え方を利用すれば,実行時にシェーダプログラムをコンパイルする必要はないはずである.
とすると,後はバイナリをどこに置いておけばいいのだろうか,という問題である.
ライブラリファイルはシステムのどこかの領域に置いておいて,適当なプログラムにリンクして使ってもらうのが常識である.

ここまで書いて,シェーダファイルはヘッダに展開しておけばいいんじゃないかと思ったが,結局はシェーダコンパイルのタイミングの問題なので,意味が無い.

要するに何が言いたいかというと,ライブラリのインストール時にシェーダファイルをコンパイルし,ライブラリのバイナリと一緒にシェーダオブジェクトも格納しておきたいんだけど,どうすればいいんだろうね?というお話.
このエントリは自分の思考したプロセスを保存しておくだけのエントリになりましたとさ.


ちょっとシェーダオブジェクトの保存についてぐぐってくる.
あと,また話を聞いてもわけわかめになったら,ゲームライブラリのほうでも弄ろう.
あれならノートPCでも十分に動かせる.
やっぱSLIノート買うべきかしら?邪魔そうだけど.持ち歩けないけど.駄目ジャン.

投稿者 togabito : 11:05 | コメント (0) | トラックバック

2006年09月14日

そろそろライブラリ公開に向けて動き出せるかもね.未踏の.

値チェックをぶん回した感じでは,明らかなエラーはかなり減った気がする.
まだ実験していない追加機能があるのは置いといて,そろそろ公開しても良いかもしれない.
まぁドキュメント執筆中なわけだが.

ついでにMPIと組み合わせてみたが,まぁ動いてはいるようだ.
こっちも問題サイズのせいかなんなのか,動かないことがあるようなので気が抜けない.
どうでもよくないんだけど,MPIと組み合わせただけのヤツは論文書くには内容が普通すぎてつまらないなぁ.
とっとと並列ライブラリと組み合わせるか.

投稿者 togabito : 21:41 | コメント (0) | トラックバック

一般ユーザでstartxしたいんだけど

どうやんの?


なんか
telinit 3
しておいて,一般ユーザでsshログインして,
startx
して,改めて一般ユーザでsshログインして,
GPUプログラム実行できそうなんだよな.
これができれば,マシンを再起動した後に直接触らずGPUプログラムが実行できるはず.

うーむ.


それにしても,作成中のGPUプログラムが微妙に怪しい演算をしてくれる.問題サイズ1024だとOKなのに,2048だと駄目だとか.
……メモリ周りでミスやらかしてるのかなぁ?
構わずそろそろ一般公開してみようかね.

投稿者 togabito : 17:33 | コメント (0) | トラックバック

2006年09月13日

ドライバめ,ちゃんと動いたぞコノヤロー

8762 NG
8774 NG
7676 OK
というわけで,nvidiaのLinux-x86ドライバをバージョンダウンして正常動作を確認.
およそ一週間を返せコノヤロウ.

投稿者 togabito : 16:15 | コメント (0) | トラックバック

2006年09月06日

rshウゴイター

ありがとうさくらんぼの人.

以下作業ログのようなもの:
さ:iptables -nLで防火壁設定みれますよ.
私:こんなんでました.すっからからん.
さ:からっぽですね.なんでもうけとれますね.telnet通じます?
私:通じNEEEEEEEE
さ:vineだとtelnetdが入ってなさそう.
私:えーと,telnet-serverかしら?入れてみる→通じたっ
さ:じゃぁrshも動きそうな?
私:動かNE(ry
さ:.rshrcとか……あ,rsh-serverとかあったりして?
私:!!!!!! 超動いた.

というわけで,無いものは動かないというお話でしたとさ.
う ぼ あ .

MPIの動作実験は,他の作業が終わってからね.

投稿者 togabito : 23:23 | コメント (0) | トラックバック

mpichで苦労している件

コア吐いて死にそうです.

というわけで(?),一日中あれこれと格闘.

まずはまったのがMPI_Init/MPI_Comm_rank/MPI_Comm_size/MPI_Finalizeだけのプログラムを1ノードで実行すると
0 - : Could not convert index 1140850688 into a pointer
The index may be an incorrect argument.
Possible sources of this problem are a missing "include 'mpif.h'",
a misspelled MPI object (e.g., MPI_COM_WORLD instead of MPI_COMM_WORLD)
or a misspelled user variable for an MPI object (e.g., com instead of comm).
とか言われる件.
悩んだ挙句,apt-getでぶち込んだmpichをremoveして(それでも全然消えないので色々と既存の場所から移動して),最新のmpichを拾ってきた.
いい感じにエラーは消滅.

んで2ノード実行しようとしたわけだが,今度はrshあたりでこける.

$ rsh node2 ls
とかやると
poll: protocol failure in circuit setup
とか言われる.
んで
$ rsh node2
とかやると
rcmd: node2: Connection reset by peer
とか言われる.
.rhosts, /etc/hosts.equiv, /etc/inetdあたりは弄ったんだが,何が足りないのやら.
実は防火壁とかが動いているのかしら?
Linuxシステム管理は相変わらず下手糞で困る.

というわけで,合宿ゼミ・ブースト会議までに並列実験ってのは無理になった気がする.う ぼ あ.

誰か助けてw
ちなみにLinux上のOpenGLプログラム,というかシェーダの結果がいかれているのも未解決.
Linuxなんて嫌いだw

投稿者 togabito : 00:56 | コメント (0) | トラックバック

2006年09月05日

GLSLも腐っとる?

勢い余って実行時(初回)にGLSLとCgを切り替えられるように実装してみたわけだが

あ,駄目だわこれ.
windowsでは答えが合うけど,Linuxで合わん.
Linux向けForceWare90系の公開まーだー?

投稿者 togabito : 16:50 | コメント (0) | トラックバック

Cg腐っとる

return flaot4(Color.r, 0.0, 0.0, 0.0);
return flaot4(Color.r, Color.g, Color.b, Color.a);

Color.rの値が変わりやがるorz
これは何のバグだ?Cgか?グラフィックスドライバか?
最低限再現性のあるコードを書いて,しかるべきところ(どこ?)にゴルァしなきゃ駄目かなぁ.


windowsで使えるCgシェーダが弾かれたり,windowsでは正しく計算できるシェーダプログラムの値がいかれているあたり,ドライバかしら.

投稿者 togabito : 14:51 | コメント (0) | トラックバック

2006年09月01日

女子大侵入日記・三日目

若林踏切びっくり.

というわけでCESEC最終日.

朝の基調講演はM$.
初日・二日目とはだいぶ色が違っていたけど,これはこれで面白かったかもしれない.基本的にPCゲーム市場の話.まぁM$の取り組みについてだったので,なんか基調講演っぽくなかったけど.

二限目.CELLグラフィックス.
何の話をするのかと思いきや,CELL上にGPUのレンダリングパイプラインをソフトウェア実装したりレイトレしたり.
ソウキタカ.
予想外のところで某先生にあって驚いてみたり.
まぁ予想外というほど予想外ではないですがっ(ぁ

三限目.流体力学のゲーム応用.
去年と変わってなくネ?

四限目.
90分でGameProgrammingGems5を全部レビューするというぶっ飛んだ講義.
んー,一度はこの辺をちゃんと読んでおいたほうがいいかもシレンね.車輪の再発明を無くすという意味で.

五限目.Direct3D10とWPF.
VistaのデスクトップはDirectX9Exだったのか.理解してなかった.
WPFは便利そうなんだけど,ManagedCodeから使うんだよな.アルゴリズムの実装はやっぱりC/C++が手に馴染むので,C/C++からWPFつかいてえ.
いまだにGUIを作るのにWin32生でごめんなさい.


というわけで,三年連続三回目のCEDEC終了.
なんだか今までより刺激が小さかった気がしないでもないけど,良い刺激になりました.
さて,時間を見つけて参加していないセッションの資料を読みたいところですが,はてさて.

投稿者 togabito : 23:43 | コメント (0) | トラックバック

2006年08月31日

女子大突入日記・二日目

はいはいCEDEC CEDEC.

朝9:30からの基調講演がある意味一番楽しそうな浜松編集長だったのに,起きたら8:30とか.バカかと.
走って駅へ.奇跡的な乗り継ぎで10分と遅れず到着.途中コンビニで2時間チャージ10秒キープとか買ってる余裕があったというかなんというか.
つーわけで,市場の見方は昨日とあんまりかわらずでした.あとは,DS売れすぎうひゃーとか,ネットワークネットワークってのと,今年年末の商戦についてかな.
今年の年末商戦は,Wiiが大本命で,PS3は一年必要で,360は現状日本で全然駄目だけど,今後はネットワークが重要なのでまだ期待はできるみたいな.

あとは日がな一日nVidiaセッション.
めんどいから全体について書くと,なんだか前回・前々回(昨年度・昨々年度)に比べると勢いが無かったかなぁ.まぁ前回も前々回もちょうどハードウェアをリリースして盛り上がってたときだったのに対して,今回はこれといって新しいものがないしなぁ.(無くはないけど.QuadSLIコンシューマ流通開始とか7950とか.)DirectX10関連はモノがないから今ひとつ盛り上がらんし.
あと,何もノベルティが(ry

昼飯は,昨日の学内カフェテリア?がメニュー限定でコストパフォーマンスも悪かったので,近くのラーメン屋へ.味噌一って微妙に有名なのかしら?
割とうまかった.
まぁ,明日はサンドイッチでも作っていって,まったりしようかしら?

夕方の地震の時にちょうどGPU物理の話をしていて,講演者(nVidiaの人)が「私のせいじゃないですよね?」みたいなことを言ったのが最高だった.
それにしてもHavokFXの実装はきもいなぁ.OpenGLで物理やって,DirectXで描画とかバカか.誉めてますよ,ええ.

さて,下高井戸経由なので,帰りに寄ってくるところが無くてしょんぼりですが,あと一日がんばります.
研究室の合宿ゼミが近いけど,M1のOffice調達は間に合うのかしら(今言ってる時点で間に合ってない

投稿者 togabito : 20:16 | コメント (0) | トラックバック

2006年08月30日

女子大潜入日記・一日目

CEDEC@昭和女子大学
トイレにびっくりデスよ.

つーわけで一日目.

最初はコレ
まぁ当然といえば当然だし,なるほどといえばなるほどだし.
うん.
ライフスタイルに合ったゲームをみたいな話が出てたけど,確かにぶっちゃけでかいRPGとかやる余裕は足りない.というか,うまく気が乗らないとやれんなぁ.
寝る前にちょこっと起動して遊べる携帯ゲームの方が……DSでやるゲームねぇな.何か買うかな(ぁ
とりあえず,VP2積んでるけどいつやるんだろうね?

2限目は一旦置いといて,3限目はATIのDX10関連.なんだかぱっとしなかった.通訳通して聞いているからなおさらか.
色々と変化について聞けたには聞けたんだけど,結構既知のことが多かった気もするから,その辺が問題か?
っつーか,脇に日本人スタッフとかいるんだから,日本語でやれや.

4限目は,havok.
日本人じゃないけど日本語でちょっと驚いてみたり.
これは見てて面白い.ラグドールぶん投げて遊びてぇーw
havokっていわゆる動きと衝突がメインかと思ってたんだけど,そうでもないのね.アマチュアゲームクリエイターが触りやすい位置に降りてきたら(既に降りてる?)革命が起きるんじゃね?

んで,2限目と5限目はPRTを聞いてきたわけですよ.
2限目は裏?でATIがX1000の最適化?やってたので行けって話なんだが,後で資料公開されるのはわかっていて,多分資料を読めば大体理解できると踏んで,あえてトライエースの講義に行くワタクシ.
PRTがなんなのかが結構わかった気がした.まぁ3DCG系を弄る余裕が無いので,使う場面はちょっとなさそうかしら.
5限目は昨年度に引き続いてピラミッド.昨年度に引き続いて色々とわかった気分にさせてくれる素敵講義.大学の講義よりわかりやすいだろこれ.
既存のアルゴリズムのボトルネックに果敢にチャレンジしぶち破る素敵話も聞けて大満足.

さて,明日はお楽しみの(?)nVidiaデーですよ.
ちゃんと朝起きられるように早く寝ようね.無理だけど.

投稿者 togabito : 22:57 | コメント (0) | トラックバック

2006年08月28日

Cgぷるぐらみんぐ中

動いた.
GLSLプログラムを移植し,色々と無駄のあった処理を省くことができた.
実行時間とかは特に変わってない気がする.
今後はこっちをメインにしよう.

で.
なんかcgcでちゃんと通るプログラムが,cgCreateProgramにけられるんですが,何かの呪いですか.
Cg1.5Betaでもぶちこんでみようかしら?

投稿者 togabito : 17:33 | コメント (0) | トラックバック

2006年08月27日

ゲームライブラリを考えながらGLプログラミングしながらマシン購入を妄想している

-Library
-User
という二つのディレクトリを頭に作り,ライブラリ自体のソースは前者,ゲームプログラムのソースは後者に入れるという新しいゲームライブラリの構造を考えていたんだが,
ちなみにライブラリ部分の更新とゲーム自体の更新を切り分けるためね.DirectXDLLの更新があることとかを踏まえて,ユーザ(=ゲーム開発者)がライブラリを手元で作成する方向にしたいのですよ.
考えていたんだが,同じプロジェクトファイルだとLibaryの方でファイルの移動やら削除やら追加やらがあるときに,ゲーム側に悪影響が及ぶということが判明.
というか,算闘神の人に指摘された.
いやはや全くその通りである.
んー,ライブラリフルソース配布はそのままに,libファイルを作るプロジェクトとゲームを作るプロジェクトを分割すればいいのかな.

GLSLよりもCgの方がプロファイリングとかしやすそうなので,気合で移行中.
大体できたけど,まだ実行できないのでもう一日かかるな.

未踏のお金で実験機を調達することを予定しているわけだが.
理想的にはDualCoreCPU+SLIなPCを四台くらい買いたいけど,流石にコストがでかすぎるよなあ.二台+GF7系ノート(可能ならSLIノート)一台にして,研究室にあるのとあわせて実験するのが妥当かなぁ.研究室のはPen4HT+PCIe16x1なので環境的に弱いけど,まぁ妥当でしょう.
ショップブランドPCならX2の4000くらい+GF79GTSLIで一台200k強?


どうでもいいけど,今夜は24hTV.昔は喜んでみてたけど,今はどうでも良いな.
昔ナツカシ熱湯CMやってるけど,これってJAROに(ry

投稿者 togabito : 02:43 | コメント (0) | トラックバック

2006年08月15日

Xbox360をターゲットとする一般向け開発環境発表

http://slashdot.jp/developers/article.pl?sid=06/08/15/024237&from=rss

うーん,昨年度のCEDECで中の人に提供してくれよ~,って言った記憶があるんだが,意外と早く実現できそうだなあ?


えーと,あれだ.
コレの品質が良かったら,ライブラリ作るのやめて良いよね?
つーか新ライブラリの公開進めるの忘れてた.
東京戻ったら,一旦公開しよう.

投稿者 togabito : 23:16 | コメント (0) | トラックバック

2006年08月14日

GLSLしぇーだーうぼあー

windows上で正しく動くのが,Linuxに持ち込むと駄目になるという悔しい現象?
forループとかifあたりでこけているような感じ?
確かに修論の時よりforとかifとか使っている場所多いけどさあ.
多分修論と同じのもあるはずなんだけどさあ.

…….

Cgでも使えばいいのかしら?w

投稿者 togabito : 18:09 | コメント (0) | トラックバック

バージョンアップ問題

glewを1.3.3から1.3.4に上げたのが原因でした.
定数が飛んでました.

あーはっはっはっはっはっは.
orz

投稿者 togabito : 15:29 | コメント (0) | トラックバック

2006年08月13日

相変わらず動かない件

GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT
GL_FRAMEBUFFER_STATUS_ERROR_EXT
の二つの定数が認識されなくて,
GLSLシェーダファイルのリンクにこける.
んー,後者は最近windows上でシェーダを書いていたのが悪いのかもしれない.
GLSLコンパイラどこー?

が,しかし.前者はずーっと弄っていないファイルなんだよなぁ.なんで今更こんなエラーがでるのやら.

glut,glew,driver,全部最新のはず.
何が悪いんだろう?
さっぱりわからん.


まぁ改めてwindows上でデバッグして,またLinuxに投げなおすか.
orz

投稿者 togabito : 14:30 | コメント (0) | トラックバック

Linuxクラスタ構築中

2ノードだけど.

というわけで,朝からがんばってますよ.

NFSの設定は思ったより簡単だ.
つーかFreeBSDと同じでいけた.
ただ,クライアント側が起動時に
mount point 0 does not exist
とかなんとか言うのが怖い.

NIS.
ypcatでpasswdの情報をひっぱることはできたんだが,
su - username
すると
su: username というユーザは存在しません
という素敵なコンボ.

とりあえず,同じユーザIDのユーザを各PCに作って,ごまかしてみるか.
NFSで作業領域が共有できるだけでもだいぶ違うから.

投稿者 togabito : 12:50 | コメント (0) | トラックバック

OpenGL@FreeBSD

正確にはGLEWあたりかな?
うごかねぇえええええええ!!!
nvidiaのドライバーとcgtoolkitとかぶち込んであるんだが,どうも駄目みたいだ.
GLSLプログラムのリンク周りが腐ってるみたいだし,フレームバッファの生成にこけるし.
激しくショック.

そもそもFreeBSD上で実験をしている理由が,LinuxのNIS/NFS環境構築法を知らない+ネット上で調べても今ひとつわからんからなわけで.
公式なシステム操作マニュアルの無いOSなんて,死滅してしまえっ!


朝一で研究室へ行って,動作実績のあるVineLinuxをぶち込みなおそう.夕方までしか作業時間が取れないから,最悪NIS/NFSは入れないで実験かなぁ.

o                  rz

投稿者 togabito : 01:11 | コメント (0) | トラックバック

2006年07月23日

風邪が治りかける

Vodafone 703SHf
でこれを変換しようとすると


再起動する.
マヂおもしれぇ.
どういうバグだよ.

投稿者 togabito : 18:03 | コメント (0) | トラックバック

2006年06月21日

DirectXの記事とWindowsLiveメッセンジャーのこと

NyaRuRu氏が素敵な記事を書いてくれている.こいつは勉強になるぜ.
それにしても,DirectXの歴史が補完されたわけだが,こんな情報どこから発掘してるんだろうなぁ?


まぁそこらへん [1] [2] で情報が出てるんだが,新しいメッセンジャーのスクリーンショットはすげぇ使いにくそうで手が出ない.いい加減7.5もうざいので,とりあえずLiveを入れて,駄目そうならまたregnessemあたりに逃げようかしら?

関係ないけど,Fateのアニメ終わった.
なんか,この地獄のようなアニメ祭クールの中で,一番真面目に見ていたアニメだった気がする.んでもって,何気に良作だった気がする.
個人的にはUBW編も観たいんだが,それは流石に無茶だろうから,とっととhollow ataraxia買ってこよう.
……と言いたいところだが,VP2と海外出張終わってからだなっ.

投稿者 togabito : 01:58 | コメント (0) | トラックバック

2006年06月15日

隔月刊DirectX SDK

出てるよ.

----
June 2006 DirectX SDK では次の機能が更新されています。

* Direct3D 10 Technology Preview
* PIX
* Microsoft Cross-Platform Audio Creation Tool (XACT)
* D3DX9

D3DX9

本リリースでは D3DX9 ライブラリは更新されていません。DirectX April 2006 SDK リリースから DLL は変更されていません。将来のリリースではさらに更新が行われる予定です。
----
貴様は何を言っているんだ?

っつーわけで,普段弄っているDx9には影響がなさそうです.
流石に,Vistaβ2ぶち込んでDx10で遊ぶほど余裕はありません.PCも余ってないし.vmwareなら(ry

そもそも,ACS最終投稿と未踏ユースのオーディションとブラジルでの学会発表が控えているので(ry
なんとかがんばって遊びますよ!(ぁ


ところで,こいつが何いってんだかわかんねーんだけど.

投稿者 togabito : 21:41 | コメント (0) | トラックバック

2006年06月14日

程好いネタが思いついたんだが

実装がめんどくさくて手が出ないときの悔しさよ.
なんとなく実装できそうな気はしてきたんだけどさ.


とりあえずプレゼンつくりが程好く必死.
がんばれ自分.

投稿者 togabito : 23:49 | コメント (0) | トラックバック

2006年05月31日

未踏ユース出したんで研究室個人サイト考えてる

とりあえず未踏ユース出した.
なんつーか,本気で通したい.
主に○と○○のため!!!(倒

で,一息つけたんで研究室webサイト
……というか,自分の研究について書くページについて検討している.
研究室で使ってるweb鯖は色々とアレなので,
動的コンテンツを運用するにはいまひとつ向いていないのが問題である.
つーわけで,自鯖にwiki置いて,なんとかして静的HTML化して,
スクリプトで差分upldすればいいやとか思ってた.

で.

とりあえずVikiWikiってのが静的HTML吐けるらしいのでいじろうとしたんだが,
ぶっちゃけRubyが動かない?セットアップ用パッケージ?が配布されてるんだけど,エラー.
ひとりWikiとかその辺のソフトは,どうも手になじまない.
前にPukiWikiとかfswikiとかを静的化するスクリプトを途中まで書いていたので利用しようと思ったんだが,
良く考えると検索機能とか色々と使えなくなって不便.

んー.

まぁ,初期投資がちょっとだけだるいんだけど,おとなしく研究室鯖にfswiki設置するか.
家鯖に置くのは最終手段過ぎる.
研究関係のページを家鯖に置く気にならん.

投稿者 togabito : 21:59 | コメント (0) | トラックバック

2006年04月05日

すたいるしーと

IEで表示が狂うとか,firefoxでも微妙におかしいとかあったけど,どうにかまともになった気がする.
横800pxでも見える程度のデザイン.
携帯電話?そんなものは知りません.

参考にしたのは以下のサイト.
他にも色々見た気がするけど,うまくいかんかった.
http://o-ume8.com/junsdiary/C2058415919/E42125766/index.html


で,その他の開発時間が全部飛んだ.しょんぼり.寝る.

投稿者 togabito : 03:18 | コメント (0) | トラックバック

2006年04月01日

エイプリルフールなので

これから一週間くらいNEETになります.所属なし.何かあったらヤバイぜっ.

ソレは置いといて,ゲームでも公開することにします.
 ネタ提供by生姜氏

-ProjectSilver
-ProjectSilver2005

前者は前にも一時的に公開してたんだけど,改めてページを公開しなおし.
後者は新規公開.

存在がfoolなので今日公開.
バグが入っている気がするので,落ちたらごめんなさい.
後でvectorにも投げようっと.


あと,ミラーリングの片割れが死んでるくさいので,近々HDD交換します(泣
研究室から拾ってきた怪しいHDDでいいよね.しばらくは.

投稿者 togabito : 00:00 | コメント (0) | トラックバック

2006年03月07日

久々にMPI

がんばりちゅう。

sshログインで鍵とかパスとか聞かれるのをカットしようとしたができなくて、rshに走ろうと思ったらsshから変わらなくて
結局ssh-agent/ssh-addで落ち着くかしら?

半日浪費した気分。


それにしてもこの時期は申請書類とかめんどくせえ。
どうせ内部進学なんだ、簡潔化してくれ。
あとデジタル化。
めんどいめんどいよー。
……授業料免除とか、申請書類が増えることするからなんだけどさ。

投稿者 togabito : 03:27 | コメント (0) | トラックバック

2006年03月02日

DirectXで文字列描画の話

http://d.hatena.ne.jp/NyaRuRu/20060301/p2
なんというか,微妙なんだよなぁ,現在のDirectGraphicsの文字列周り.
私自身はどこで拾ってきたのか忘れた描画方法で実装してるわけだが,
いい加減標準的で十分に高機能な実装が欲しいところです.
たまに環境依存?でこける報告を受けるので.

つーかライブラリ弄る時間が足りん.

投稿者 togabito : 03:14 | コメント (0) | トラックバック

2006年02月21日

VisualStudio2005とか入れた

研究室のメインクライアントにVS2k5Pro(J)
X40にVC2k5ee(J)
入れた.
とりあえず快適.
なんか気がついたことがあったら適当に報告します.

とりあえず2k3のslnを開こうとすると変換ウィザード.
ぶっちゃけ,新しくソリューション作って,
まとめたほうが良いんじゃないかという気がする.
slnとvcproj作って,
既存のソリューションディレクトリに投げ込んで,
ソリューションエクスプローラでファイル追加.
手間はかかるけど安全に思える.
まぁ2k5のプロジェクト設定がわからないと駄目なんだけど.

vc2k5のデフォルトのキー設定だとIDEナビゲータウィンドウが出ないかも.
というかVisualStudio6のマップだと出ないみたい.
VisualC++6にしたら出た.
クソ便利なので使うべし.

マルチバイトじゃなくてUNICODEが標準になっている気がする.
正直この辺疎い.
DirectXアプリをUNICODE完全対応させる方法とかわからん.
UNICODEの時の文字列操作関数(strcpyとか)の変更もわからん.
UNICODEでWinMainアプリをフルスクラッチする正しい流儀がわからん.
あーめんどくせぇ.誰か教えて.

vc2k5eeってCD版もやっぱりPlatformSDK入れないとWinMainとか書けないみたい.
ちょっとめんどい.
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
Related DownloadsのところにSDKのCDイメージダウンロードへのリンクとかあるので,オフラインの人も安心.

投稿者 togabito : 16:27 | コメント (0) | トラックバック

2005年12月29日

OpenGL(GLSL,GLUT)@SSH

setenv DISPLAY ":0.0"
これでsshコンソール上からXなアプリが起動できる.
接続先のマシンで.
こんなことがしたい人は余り居ないと思うけどさ.

ただし,どうも一度wdmからWindowManagerにログインしないといけないみたい.

というわけで,これでとりあえずはGLSLが動く.
……動くのだが,なんだかエラーを出しまくっているうちに起動しなくなる.細かいエラーメッセージは失念したけど,とりあえずFatal Errorとか出た気がする.

そして,二度と起動できなくなる.再起動してWindowManagerを立ち上げればいいんだろうか?sshからじゃ無理だけど.

まぁ.initrcみても何もしていないので,とても謎だ.誰か何とかしてくれ.

なんか別の問題かもしれぬ.

1.rebootして改めてsshでログイン→プログラム実行
GLUT: Fatal Error in (unamed): could not open display:

2.setenv DISPLAY ":0.0"してからプログラム実行
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

GLUT: Fatal Error in (unamed): could not open display: :0.0

うーむ.
sshじゃなくて実際にマシンに触れる場合は,
一度ログイン→放置してsshで外部からログイン→プログラム実行
これで動くんだよな.
謎だ.

Lapismoon氏にxdmcpを使ったらどうかと言われたが,こいつでログインしても変化無し.しょんぼりだ.

A. xdmcpでログインしておいて,sshで実行
GLUT: Fatal Error in (unamed): could not open display:

B. setenvもしてみる
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

GLUT: Fatal Error in (unamed): could not open display: :0.0

C. xdmcp上で
Driver does not support OpenGL Shading Language

うぼあああ.

投稿者 togabito : 01:21 | コメント (0) | トラックバック

2005年12月16日

C/ C++ ライブラリリンク問題

自作ライブラリがリンクできねぇえええ


と思っていたら,
C++でライブラリ作って,
Cで書かれたベンチマークプログラムからリンクしようとしてた罠.
普段C++ばっかだから忘れてた….
おのれ.

投稿者 togabito : 01:26 | コメント (0) | トラックバック

2005年09月28日

glActiveTexture

問題解決。

これでOpenGLでもGPGPUできそうです。多分。きっと。
細かいところが色々わかっていないので、また問題にぶつかるかもしれんけど。


やれやれ。

投稿者 togabito : 18:56 | コメント (0) | トラックバック

2005年09月27日

OpenGL GLSL readback / GLSL multitexture

諸般の事情でGL祭開催中。


とりあえずgpgpu.orgのFBOをベースに描画結果の取得を試みる。
色々悩んだ挙句、glReadBufferとglReadPixelsのコンボで秒殺できることを知る。

だがこの段階では描画結果がclampされてしまい、1.0を超える値をとったりはできない。
だがしかし、これも拡張機能を調べまくった結果、
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA_FLOAT32_ATI, _iWidth, _iHeight, 0, GL_RGBA, GL_FLOAT, data);
みたいにGL_RGBA_FLOAT32_ATIを使ってやれば良いことを知る。
GL_FLOATの精度は良くわからん。
harf_floatはあるけどfull_とかないからなぁ。

最後の敵はマルチテクスチャ。
GLSL内で複数のテクスチャを読んで演算したい。
これがどうにもこうにもできない。
いくつかサンプルなどを漁った結果、
glGetUniformLocationARB、glBindTexture、glUniform1iARB
あたりでなんとかできるようなのだが、一向に成功せず。
sampler2Dへのデータセット自体が失敗している様子。
ちゃんと名前引いているんだけどなぁ?

GLでシェーダとなると、質問する相手がいないのが悲惨だ。
熟練度があまりに低すぎて、何がどう悪いかをうまくまとめられないから海外サイトで質問するときっとリアル厨質問になる。
う~ん。


意味わからなさ過ぎて死にたい。

投稿者 togabito : 19:59 | コメント (0) | トラックバック

2005年08月31日

CEDEC2005 2nd day

二日目終わって帰って眠くて,寝て起きたら朝だった.

さて二日目.
一日目がnVIDIA祭だったのに対して,今日は色々.
色々聞いて周ったつもりなんだけど,ちょっと今ひとつ.

面白かったのは流体力学のセッション.
なびえすとーくすの式とかムリポって思ったんだが,
微分,偏微分,勾配,発散,ラプラシアンとかがなんだかわかった気分に.
素晴らしい.

他のセッションは,なんだか今ひとつだったなぁ.
というか眠かった.


で,帰ってねみーとか思って横になってたら,夜が明けてしまうわけです.
やれやれ.

投稿者 togabito : 21:32 | コメント (0) | トラックバック

2005年05月11日

HLSL動的ループ

なんかwhileの回転数をSetIntで制御できた。
半年前に討ち死にした記憶があるんだよなぁ。

つまり、動的ループ、キタ━━━(゚∀゚)━( ゚∀)━( ゚)━( )━( )━(。 )━(A。 )━(。A。)━━━ !!!!!ってことでいいのかしら?

えーと、使っているSDKはOctober2004なんだよな。win2k対応もするため。犯人はドライバ?


つーか6200AGPについてきたドライバが三月に出たとかいうnvidiaにおいていない番号のドライバなんだけど、何これ。最新nvidiaドライバ入れようと思ったら入らないし。ありえなさ杉。

まぁあたらめて、
HLSL動的ループ
  ┃   ┃                          
┃    ┃━┓                        ┃┃┃
┗┓━ ┃    ┃                     ┃┃┃
┃    ┃━┓ ┗━━━━━━━━━━━━━  ┃┃┃
┗┓━ ┗  ┃                       
  ┃      ┃                        ┗┗┗
  ┗      ┗
便利すぎて泣きそう。静的ループと速度比較しなくていいよね。どうせ誤差だから。多分。きっと。

#これで研究室のPCでやったら駄目だったりしたら欝だな。

投稿者 togabito : 03:56 | コメント (0) | トラックバック

2005年04月14日

鯖ぱにっく

カーネル再構築をしなおしたら、鯖安定したなぁ


と思った矢先にpanicした罠。
sambaを利用してファイル操作もりもりやってたときだったので、やっぱりsambaがあやしく感じてしまう。でも前にscpで作業中に死んだんだよなぁ。

うーん、謎だ。

投稿者 togabito : 02:38 | コメント (0) | トラックバック

2005年04月12日

OpenGLによるRenderToTexture

GLやばい。まぢやばい。
WindowsもLinuxもサポートしている
最新技術もめっちゃサポートしている。
その代わりベンダー拡張が必死。
Windows拡張とかLinux(というかX)拡張も必死。
おかげで情報が分散しすぎ。
webで解説を見つけたと思ったら古いベンダー拡張とか困るし。
ついでにCgとGLSLが並行しているおかげでもうわけわかめ。
シェーダの考え方は似てていいんだけど、GLとのインターフェースがさっぱり。
そしてリファレンスはあるけどサンプルの無い関数解説。
どう使えば目的が達成されるかわからんし。

というわけで、誰かOpenGLによるRenderToTextureを教えてください。
WindowsとLinux両対応で。
gpgpu.orgからつながってるSourceForgeのgpgpuのRenderTexture拾ってみたけど、LinuxはCopyToTexture(FromFramebuffer?)だったし。
うーむ…
…OpenGL2.0待ち?学会とか修論とかに間に合わないって。


CopyToTextureはできたから、とりあえずこれで作るよー。

投稿者 togabito : 15:45 | コメント (0) | トラックバック

窓上での無料開発環境構築方法

・Windows上で
・無料で
・IDE(統合開発環境)で
プログラミングをするためのヒントとして、
自作ライブラリabcを上記の条件で使えるようにするためのドキュメントを書いた。
一通り動くことを確認しただけなので、今後修正は入ると思う。

そんなわけで、興味がある人はこちらから。

投稿者 togabito : 11:30 | コメント (0) | トラックバック

2005年04月09日

鯖設定また弄ってる

思うところがあってhomeディレクトリの構造とか色々と弄っているので、ひょっとしたらwebがちゃんと見えないことがあるかもしれません。取り返しのつかない変更をしちゃうかもしれません。

とりあえず意図的にsambaをあまり使わないようにしてるんですが、鯖がpanicしません。きのせいですか。きのせいだよね。

そんなことより花粉が(死

投稿者 togabito : 12:42 | コメント (0) | トラックバック

2005年04月06日

CVS鯖復活!

CVS鯖復活キタ━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(`  )━(ー` )━(´ー`)y━~~ フウー

/etc/inetd.conf
inetd_enable="YES"

お察しください Λ||Λ

投稿者 togabito : 01:18 | コメント (0) | トラックバック

2005年04月03日

リンクアンテナ

右下に表示されているリンクアンテナ(仮名)を強化しようと思ったが、色々とわからない。

とりあえず、Last-Modifiedを見てもそれが更新日時か怪しいサイトが結構ある。日記の更新日時より古いとかね。
CGI系の日記は取り方が全然わからん。

まぁ、MTアップデートとかした後にでも、アンテナ系技術を調べてみるか。

それより知っている人アンテナリンク以外のリンクはどうしよう。リンクページ作ればいいか。


そんなことよりCVSが(略

投稿者 togabito : 20:24 | コメント (0) | トラックバック

鯖設定うぼあー中

rsshとcvsがうまくいかねぇ。うぼあー。


rsshは、なんかsftp-serverがうまく動かないくさい。謎。
cvsは、なんか2401ポートアクセスが弾かれる。FreeBSD5.3でなにか設定増えたのかな?

投稿者 togabito : 13:52 | コメント (0) | トラックバック

2005年03月31日

CVS鯖

CVS鯖化したけどネットワーク越しにログインできぬ。何か設定変わったかな?

あと、cvsweb入れたけどなんかこれまでのCVSが見えないのは何か設定が飛んでる罠かしら?

投稿者 togabito : 04:41 | コメント (0) | トラックバック

2005年03月30日

鯖更新中

現在サーバー再構築中。
FreeBSD-5.3ベースにしてみた。

まぁおおむね復旧したかな?
色々と引っかかって大変だったので、そのへんは後日ドキュメント化しよう。


っつーか、まだphpが復活してない罠なんだが。php5突っ込んだのが失敗か?

----
まぁとりあえず復帰かな。php4いれてほげったら大丈夫みたい。

内部的に復活していないサービスとかもあるので、追々。


以下FreeBSD 5.3-RELEASE(-p5)再構築メモ。


RELENG_5_3が必要なのにRELENG_5のソースコードを持ってきて嵌る(笑)

rc.confにhoge_enable="YES"って書くものが増えたので注意が必要。
canna_enable="YES"
samba_enable="YES"
apache2_enable="YES"
dhcpd_enable="YES"
sshd_enable="YES"
named_enable="YES"

Xorgになったけど、あまり関係ない。ハンドブック読んでやったらすんなり。まぁ英語のハンドブックしか読んでないけど。パフォーマンス出てないかもしれないけど。

apache2のmakeがもの凄い勢いでコケる。なんで通ったのか未だに不明。ports入れまくったので、色々とタイミングが合ったのかもしれない。

firefoxもコケる。一部海外サイト(BBS)でxのlibraryバージョンがどうのこうのっていう記述を見たので、portupgrade xorg-librariesしてライブラリのバージョンアップして、makeをしつこく実行したらなんかうまくいったっぽい。makeが途中で何回かこけたのはなんだろう?

latex関連。portsが再構成されたのか、ちょっと綺麗になっているっぽい。とりあえず
japanese/platex-otf/
japanese/xdvik/
print/dvipdfmx/
を入れたところ、PDF化まで問題なくいけた。一応入れたバージョンとかを書いておくと、
>ls /var/db/pkg/ | grep -E 'platex|dvi'
dvipdfmx-20050201_1
ja-dvipsk-tetex-5.95a
ja-platex-otf-1.2.4
ja-xdvik-tetex-22.40y1.1.21_5
>
まぁこんな感じ。フォントのチェックとかはやってない。

bind9入れた。8の設定そのまま使ったら微妙に駄目なところがあったんだけど、これって8の時はどうだったんだろうとか思ってみる。

とりあえずこんなところ。

投稿者 togabito : 07:43 | コメント (0) | トラックバック

2005年03月13日

ぐりっちゃれぐりっちゃれ

昨日動いていたプログラムが、今日動かない。
それがグリッドクオリティ。

……もう嫌だ。


まぁ、こういうケースの半分はユーザのミスなんだけどね。

投稿者 togabito : 14:39 | コメント (0) | トラックバック

2005年03月07日

HLSLのループ制御変数

whileやforの実行回数制御変数をSetIntシテェー!!!


毎回書き換えるのメンドクセ。.fxファイル大量準備とかやってるけど。とりあえずベクトル積和と行列ベクトル積和の基本ができたので、明日は簡易性能測定やってOpenGLかな。

投稿者 togabito : 15:56 | コメント (0) | トラックバック

2005年02月22日

FreeBSD portsのrsshにバグを発見する

先日rsshを入れてみようとしたときのメモ。

rsshのバージョンはrssh-2.2.3。

#diff argvec.c.orig argvec.c
79c79
< if ( (retc = wordexp(str, &result, WRDE_NOCMD|WRDE_DOOFFS)) ){
---
> if ( (retc = wordexp(str, &result, WRDE_NOCMD|WRDE_DOOFS)) ){

なんでこんなくだらないミスが直されていなかったんだろう。誰も使っていない?馬鹿な……。
ちなみに今現在、rsshの設定は終わっていない。

投稿者 togabito : 03:09 | コメント (1) | トラックバック

2005年01月25日

無料でOpenGL+Cg with IDE @ Windows

Windows上でIDE環境(りあるりありてぃ)でOpenGL+Gcなプログラムを行う方法のメモ。

以下、おおまかな手順。


  1. Visual C++ 2005 Express Edition Beta(VisualStdioのサイトからDLできる)をぶち込む

  2. Microsoft Visual C++ Toolkit 2003(MSDNのサイトからDLできる)をぶち込む

  3. PlatformSDK(M$のサイトからDLできる、ただしIEじゃないた駄目くさい、CoreSDKだけでOK、XPSP2の場合はWindowsXP SP2 SDKってのがあるからそっちかもしれないけどわからない、XP SP1ではWindows Server 2003 SDKのCore SDKでOKだった)をぶち込む

  4. Cg Toolkit(nVidiaの開発者サイトからDLできる)をぶち込む

  5. GLUTをぶち込む(GLUTサイトからバイナリを拾って適当に設置すればOK)

  6. パス設定(windows.hとかが通らないのは、おそらくINCLUDEとかの環境変数が追加されているので、VCのOptionの中の項目を弄ればOK。GL/CgについてもDLLをシステムにコピーして、hとlibに適当にパスを通せばOK。)


以上でOpenGL+Cgなプログラムがコンパイルできるようになるはず。Cg Toolkitにサンプルがあるので実験すべし。

ちなみに、Visual C++ Toolkit と Platform SDKについてはかずぼん氏のホームページの記事(http://homepage1.nifty.com/kazubon/progdoc/poor/vctoolkit.html)が参考になるかと。記事へのリンクがわからないのでアドレス付記。


さて、がんばってDirectX+HLSLのGPUプログラムをOpenGL+Cgへ移植するか…。

投稿者 togabito : 23:08 | コメント (0) | トラックバック

2005年01月23日

製作物後悔公開

久しぶりに製作物を公開することにした。

上部メモを参照。

  • abcはゲーム製作向けライブラリ。DirectXベース。OpenGLへの移植も考えてはいるけど手が足りない。ドキュメントとサンプルが中途半端なので色々と危険。
  • ProjectSilverはミニゲーム集。昨年(今年度)の調布祭(学園祭)で公開したもののバージョンアップ版。まったり遊べます。製作者多数に付きvector送りは微妙かな。

  • 久々に色々と弄ったので、疲れたけど充実感。まだまだやることいっぱいだ。

    ちなみに、トップページ右下に似非アンテナ兼リンクを設置しました。特にアンテナ機能はかなり強引に実装。取れないサイトも多いみたい。今後少しずつ対象サイトを増やす予定ですので、リンクを張られては困る人は何らかの方法で言ってください。とか書いておいてみよう。実はトップページだけじゃなくて日記の更新情報も拾っているのは、みんなには内緒だぞ(意味無い

    投稿者 togabito : 01:47 | コメント (1) | トラックバック

    2005年01月19日

    DNSキター

    やっとこさローカルDNS鯖がちゃんと建ったかもしれない。良かった脳。


    これまでに同じ思いを何度もしているので不安。明日もう一度詳細チェックしよう。とりあえず寝る。

    投稿者 togabito : 01:53 | コメント (0) | トラックバック

    2005年01月08日

    続・鯖設定

    やっぱ直ってないみたい。LAN内からaaa.jspeed.jpが見えないことが多々。どうなってんだろうね。

    投稿者 togabito : 03:29 | コメント (0) | トラックバック

    2004年12月29日

    SLIを超えるもの?

    このグラフィックスカードが気になる。どういう構造なんだろう。マヂでSLIより速いんだろうか。使うバスは一本なんだろうか。更にSLI化して四倍にはならないんだろうか(笑)。

    とりあえず68GTの1.5倍の性能が出れば、使ってみてぇ。
    そこまでの性能が必要になる人はそうそういないと思うけどな。おいら以外orz

    …いや、最近のゲームは実行環境が良くなれば良くなるほどどこまでも何か上がるのかな?

    投稿者 togabito : 02:36 | コメント (0) | トラックバック

    2004年12月15日

    やばいかもしれないので

    この前のエントリーは隠しました。下書き状態にしただけだけど。

    コメントも隠れちゃいました。申し訳ありません。


    で、このエントリーが記念すべき?100エントリー目かよ。びみょ。

    投稿者 togabito : 19:28 | コメント (0) | トラックバック

    2004年12月10日

    最適化プログラミン…ぐはっ

    やばいよ。やばいよHLSL最適化プログラミング。

    順調に遅くなってるよ OTL。


    やっぱり、CPUで使っている手法がGPUで使えるかは凄く怪しいようです。
    とりあえず、アルゴリズムの改変もしてみた。テクスチャ参照回数を減らしたはずなんだが、遅い。
    既存のアルゴリズムを改変したのに、遅くなってら。


    ついでに、シェーダの分割をしてみた。シェーダが必死すぎて遅いなら、必死にならない程度に分割し、複数パスのほうが速いのではないかというテスト。でも、遅くなった。

    っていうか、なんか改変前のプログラム実行したら10倍遅くなってる罠。…ハード壊れたか?
    とりあえず、ディスクでフラグツールの分析が激しく赤いので、放置して一旦休もう。


    ゼミ開始が15時(資料生成0%)。寝たら起きられないね。ハッハッハァ。風呂で寝よう。

    投稿者 togabito : 04:14 | コメント (2) | トラックバック

    2004年12月06日

    HLSLの中の人

    そろそろ、ループを分けたりくっつけたりしたくらいで変な実行結果を返すのは、なんとかなりませんかねぇ?

    多重ループがうまく動かないのも何とかなりませんかねぇ…。


    国内にコミュニティが欲しいぜチクショウ。あるのかもしれないけど。

    投稿者 togabito : 21:23 | コメント (1) | トラックバック

    2004年12月01日

    HLSL最適化プログラミング

    ループアンローリングとか変数リネームとかは死ねるね。ソースコードが汚くて萎える。


    …そして、速くならないっぽい…orz
    ついでに最適化殺すオプション指定したら、なんかうまく動作しないわけだが。

    投稿者 togabito : 20:55 | コメント (0) | トラックバック

    2004年11月06日

    FMVのCM

    「私の指でも使えるかな」「無理ですよ」

    みたいなやり取りをするFMVのCMだけど…

    …実際に指を当てさせて「ね、無理でしょ?」ってやるのが正しいと思うんだよなぁ。なんでそうしないんだろう?

    投稿者 togabito : 19:05 | コメント (0) | トラックバック

    2004年10月28日

    HLSL

    あはははは

    ループ計算の回数変えたら、特定の値の時しか想定した値を返さねぇよあはははは…


    …アセンブラ読むのだるい。最適化かかってるとそもそもどういう命令が並ぶか予想できないし。一度最適化切ってテストかな…。

    どちらにしても、明日のゼミになんてマニアワネェヨ。はい、また来週~。

    投稿者 togabito : 20:32 | コメント (0) | トラックバック

    2004年10月08日

    D3DXCreateEffectFromFileの妙

    私が日記?を書かないときは、忙しいか遊びすぎかのどっちかです。基本。

    とりあえず、研究のため微妙に激しいシェーダを書いていて気がついたことを一つ書いておいて見る。

    *D3DXCreateEffectFromFileはシェーダの激しさによって結構時間に差が生じるっぽい?

    PixelShaderの方に適当な静的ループを作って、その中の処理回数を増やしてみたわけですよ。いわゆるアンローリング状態。すると、D3DXCreateEffectFromFileの実行時間が著しく変化してしまったわけです。
    また、ループの回数を変えても著しく変化してしまいました。

    …まぁ、前のケースはともかく、後のケースはおかしい。
    PSアセンブラレベルで考えると、定数の値が一つ違うだけです。それなのに、D3DXCreateEffectFromFileの実行時間が何倍にも膨れ上がるんです。なんでだろう。


    さて、こういう質問はどこに振ればいいんだろうか。BBXか2chしか思いつかん。もしくは某JAISTの人のサイトか…?(blogのコメント欄に振った話題で大変申し訳ありません…。

    ちなみに、実験に使ったソースコード掲載。
    float4 PS ( VS_OUTPUT In ) : COLOR
    {
    float4 Color = {0.0f, 0.0f, 0.0f, 0.0f};
    float2 TexA; float2 TexB;
    float pos;
    int i; int k;

    TexA = In.Tex; TexB = In.Tex;

    for(i=0; i<128; i++){
    k = 0;
    pos = (float)(i+k*128)/F_SIZE;
    TexA.x = pos; TexB.y = pos;
    Color = Color + (tex2D( Samp1, TexA ) * tex2D( Samp2, TexB ));

    k ++;
    pos = (float)(i+k*128)/F_SIZE;
    TexA.x = pos; TexB.y = pos;
    Color = Color + (tex2D( Samp1, TexA ) * tex2D( Samp2, TexB ));

    }

    return Color;
    }

    プログラムの一部を強引に抜き出したため、意味不明なソースコードなのは気にしない方向で。
    実際にはforの中の二つ目のブロックを10個くらい複製して時間稼ぎしてますが、forの範囲(ここでは128)を一桁減らしたりするとかなり差がつきます。何故。

    お暇な方は是非ともテストして結果を教えてください…と思ったけど、誰がこの記事を理解できるんだろうと考えて途方に暮れてみる。合掌。

    投稿者 togabito : 10:17 | コメント (0) | トラックバック

    2004年09月28日

    こねた

    最強の行列積プログラムを完成させようと必死な咎人です。っつーか、必死なのはB4の中間発表?


    どっかの新聞でみたんだけど、M$はIE最新版をXPSP2にしか提供しないらしい。まぁ、M$はセキュリティの都合などからXPSP2を激しくプッシュしているわけであり、最新版IEはSP2のなんかセキュリティ機能を利用しているとすれば、割とわからないでもないお話です。
    で、だ。
    まぁ、XP持っている人は普通にSP2あてるだけだからいい。しかし、2kなど、XPより前のものを使っている人は、最新IEを使うにはカネがかかるってことだ。その結果どうなるか。
    おそらく、IEを捨てて、mozilla系やopera系に流れる人が増えると思う。そんなわけで、今回の戦略で逆にM$が必死になるシナリヲを希望しておきます>GM(いないって

    まぁ、Windowsを窓から投げ捨てる。以外のOSの普及率が上がるというシナリヲはもっと面白いんですが。


    ところで、ATIの最新RADEONは、スーパーメモリーとかいうメインメモリをGPUから普通に使っちゃう技術を持っているらしい。PCI-Xのでかい双方向の帯域を利用するそうで。GPGPUの分野ではおいしいのかなぁ、と考えている人はそれなりにいるのではないだろうか。まぁ、ハイエンド分野ではVGA上にでかいメモリ積むらしいので、なんだか中途半端な技術にも見えてしまうわけだが。16bitでも32bitでもなく、24bitだしな。

    …それより、fp32対応GPUの追加とか、REFデバイスの充実に期待をしたいんですが、駄目ですか。REFじゃ色々と実験できないねん。vncすれば家からできるか。

    投稿者 togabito : 15:14 | コメント (0) | トラックバック

    2004年09月16日

    firefox@FreeBSD

    ノートPCのFreeBSDにw3m以外のブラウザが入っていない咎人です。
    バージョンアップ必死なfirefoxを突っ込んでみようと時々チャレンジしているわけですが。

    1.0PRというバージョンが出ていたのでチャレンジしてみようと思った。しかし、ソースは0.9.3しか見つからなかった。仕方がないので0.9.3をがんばってみようということに。
    ftpからbzipアーカイブを落として、展開。CVS一式っぽい。とりあえず
    # gmake -f client.mk
    libIDLのバージョンがどうのこうのいわれたので、とりあえずlibIDLをportsでmake install。っていうかバージョンアップ。
    #gmake -f client.mk build
    rdf/chrome/srcで死。
    http://d.hatena.ne.jp/marony/20040805#p5
    の人と同じっぽい。

    結果:駄目でした

    そんなわけで、packageでもportsでも生srcでもfirefoxがFreeBSDに入りません。ぼすけて。他のブラウザに乗り換える気は微塵もありません。firefoxより良いブラウザは無い。乗り換えるわけがあろうか、イヤ無い。そんな感じ。

    投稿者 togabito : 17:29 | コメント (0) | トラックバック

    2004年09月03日

    続・32BitFloatアルファブレンド

    先日のアルファブレンドテストのソースを綺麗にしてみた。

    ・シェーダバージョン3が必要なのにバージョンチェックをしていない
    ・デバイス再生成部分を書いていない

    という恐ろしいソースコードですが、コア部分はちゃんと書いたのでGeForce6シリーズを持っている奇特な方と、自分でソースコードを書き換えられる方はどうぞ。

    Download file

    アーカイブの中身は.NET2003のプロジェクト一式。
    ちなみに、Summer2004のEmptyProjectを元に、追記部分には日本語コメントが入っているので、割とわかりやすいと思いますよ?

    #誰が見るんだろうな

    投稿者 togabito : 14:30 | コメント (0) | トラックバック

    2004年09月02日

    32BitFloatでアルファブレンドはできるか

    ちょっとDirectXの技術的なお話。

    参考資料は二つ。

    一つはt-pot半透明描画の話と、ITmediaのDX9のテクスチャフォーマットの話
    前者はDirctX8でアルファブレンドをするための基本で、後者はテクスチャフォーマットによってブレンディングとかできたりできなかったりするよっていう資料。

    さて、現在PC用のVGAとして最強と名高いGeForce6シリーズがあります。このVGAの地味な特徴の一つとして、D3DFMT_A32B32G32R32F、つまりARGB各要素が32BitFloatの精度を持つという激しいテクスチャへの対応が挙げられます。

    ちなみに調査不足のため、いつの時点のVGAからこのフォーマットへの対応が始まったのかわかっていません。すいません。

    VGAで32Bit精度というと、RADEONとGeForceFXの例の対決(RADEONは24Bitに抑えたためにH/W量が少なくコストパフォーマンスが高いという話)も有名ですが、ここでは置いておきましょう。24Bitなんていう中途半端な精度は眼中に無いので。

    ところで、GPUコンピューティングという、グラフィックハードウェアを用いて色々な演算をしようという研究が近年にわかに注目を浴びています。描画処理を数値演算処理として扱うことで、VGAがベクトル計算機になるわけですね。細かい説明は省きましょう。

    で、本題。アルファブレンドっていうのは、画像の重ねあわせの処理です。既に書かれている色と任意の割合で重ねあわせる加算描画、乗算描画、減算描画etc。これらはGPUコンピューティングにおいては加算、乗算、減算etcに相当する、基本的な演算です。その一方、GPUコンピューティングは基本的に数値計算なので、演算精度が高いと喜びます。もしくは演算精度が低いと見捨てられます。そしてGPUコンピューティングではテクスチャへの描画がレジスタへのデータの格納に相当します。

    以上から、DirectXを使った(OpenGLを使うパターンも多いので念のため)GPUコンピューティングのためには、D3DFMT_A32B32G32R32Fでのアルファブレンドが必要不可欠になります。

    で、やってみました。D3DFMT_A32B32G32R32F形式でD3DUSAGE_RENDERTARGETなテクスチャを作り、SetRenderStateで加算描画指定をして描画っ。
    →結果:無理でした
    あるフォーマットのテクスチャがアルファブレンドをできるかどうかはCaps Viewerでチェックすればわかるはずですが、私はその項目を知りません。ただ言える事は、D3DFMT_A8B8G8R8にしたら同じ処理で予想通りの色がついたということだけです。

    さて、困りました。D3DFMT_A32B32G32R32Fでアルファブレンドができません。t-potの中の人のシェーダ本には、アルファブレンド関係はいまだに固定機能シェーダだという記述があるため、シェーダを使っても解決できそうにありません。

    ちょっと待ってください。要するに複数のテクスチャの色を任意に混ぜ合わせて描画できればいいんですよね。ということは、複数枚のテクスチャを利用するピクセルシェーダを利用し、色情報を単純計算してあげればいいのではないでしょうか。

    と、いうわけで実践。D3DFMT_A32B32G32R32Fでテクスチャを作成。SetTextureで二枚のテクスチャをセット。パスを指定してDrawPrimitiveUpで単純に描画。
    HLSLのポイントは、
    float4 PS_ADD ( VS_OUTPUT In ) : COLOR
    {
    float4 Color;

    Color = tex2D( Samp1, In.Tex ) + tex2D( Samp2, In.Tex );

    return Color;
    }
    という単純な加算という簡単プログラム。
    →結果:見事に加算されました。

    そんなわけで、D3DFMT_A32B32G32R32Fなテクスチャをアルファブレンドしたければ、シェーダを使えってことみたいです。簡単ですしね。

    ちなみにこのアルファブレンド、一つのeffect->Begin~effect->End内で、
    SetRenderTarget(texA);
    SetTexture(num, texA);
    SetTexture(num, texB);
    DrawPrimitiveUp(...);
    みたいに、描画対象のテクスチャをソースとしたブレンドをしてもちゃんと描画されるようなので、かなり使えそうですよ。


    間違いが含まれてても責任は取りませんが、指摘してくれると血涙を流して喜ぶのでお願いします…。

    D3DFMT_A32B32G32R32FがD3DFMT_A32R32G32B32Fになっていたので修正(笑えない)

    投稿者 togabito : 17:45 | コメント (0) | トラックバック

    2004年08月19日

    D3DFMT_A32B32G32R32F

    がんばった。っていうか頭の中が腐ってた。浮動小数点フォーマットのテクスチャでもアルファブレンドできた。効果は実感できていない。

    で、だ。D3DXCreateTextureFromFileInMemoryExという破滅的な長さの関数でも使えば自由に32bitFloat x 4のテクスチャがもりもり作れるかなぁとか考えたんだけど、ARGB各32bitFloatな画像ってなんでしょ。HDR画像がそうっぽいんだけど、どうやって作ればいいんだろう。

    HDR画像が編集できるソフトって何があるんだろう。今ひとつわからん。写真屋+Dx9summer2004ツールっていうソリューションは、写真屋が32bitに非対応という罠があるらしいし?

    解決策として思いつくのは、HDR画像形式を理解して、プログラム中で強引に生成すること。…HDR形式の解説どこ…t-potに一応あるけど、もう少し詳しいの無いかしら。やっぱり海外サイトへGOなのかな?めんどくせー。


    咎人の中の人は、HDR画像の詳細について知っている人を募集しています(いねーってば

    なんでこんなこと調べているかの理由が、高精度な数値計算の為ってのが変態。とりあえず整数演算とかで色々やるか。

    投稿者 togabito : 18:48 | コメント (0) | トラックバック

    2004年08月18日

    firefoxとアルファ合成

    FreeBSDのfirefoxが、portsだとlibglib周りでこけて、packageだとexpat1系を求めるけど2系しかないからこけるのは、なんとかならないかなぁ。

    浮動小数点フォーマットのテクスチャでアルファブレンドすると、なんかおかしいのは気のせいかなぁ。

    うーん。


    夏のせいなのか、関係ないのか、起床時に今ひとつ食欲がわきません。気のせいかな。

    投稿者 togabito : 18:08 | コメント (0) | トラックバック

    2004年08月02日

    DirectShow一歩前進

    デバッグ実行(F5)じゃなくて、通常実行(Ctrl+F5)したら動くことに気がついた。n時間犠牲にした。欝だ。

    …で、まだちゃんと再生できていないんだけどね。DirectGraphicsとの兼ね合いについてもう一頑張りか。


    むしろ、Dll間での動的変数の共有ができないんですが、どうにかなりませんか。おのれアドレス変換。LPDIRECT3DDEVICEを共有させてくれ。

    投稿者 togabito : 17:35 | コメント (0) | トラックバック

    2004年08月01日

    ツール公開

    すっかり忘れていましたが、先日vectorに新しいツールを載せました。そんなわけで、Wikiの方のページを更新。まぁ、ダウンロードはvectorからどうぞなわけですが。

    今回アップしたのは、ウィンドウの位置とサイズを記憶し、復元してくれるソフト。タスクバーに常駐するのでとっても邪魔にならない。

    フルスクリーンアプリケーション終了時に、それまで動かしていたプログラムのウィンドウが左上によるのがむかつくので、ついかっとなって作った。言語は何でも良かった。今ではとても重宝している。そんなわけで、C#で作ってしまったので.NET frameworkが必要な気がします。詳細は知らない。

    投稿者 togabito : 15:16 | コメント (0) | トラックバック

    mciでavi再生

    物凄い今更な話ではあるんだが、やってみた。

    というか、先日書いたとおり、DirectShowでavi再生しようとしたらこけるので、とりあえずaviってみたわけだが。

    webで色々と漁ってみると、どうも微妙にアヤシイ情報しか拾えなかった。構造体の名前が腐っていたり。そんなわけで、フルソースアップ。プロジェクトファイルは.NET2003用。test.aviに決め撃ちしているので注意。

    ちなみに、ゲームライブラリに組み込んだら、ちらついた。CPUパワーが確保できていない為かな。どうしましょ?


    こんな時間にこんなこと書いているのは、金曜日の夜から土曜日の朝まで飲んだおかげで、その後起きたのが夜で、一晩中活動しているからですよ。阿呆ですね。

    投稿者 togabito : 07:49 | コメント (0) | トラックバック

    2004年07月30日

    てくすちゃふぉーまっととGPUで行列積な海外論文

    masafumi氏が日記でGeForce6800Ultraのテクスチャフォーマットについて書いていたので、GTについて調べてみた。

    先日いろんなwebサイトを漁って調べた情報では、ARGB各16bit浮動小数点で作れるということがわかっていたが、CapsViewerとDirectXのヘルプを見た感じでは、ARGB各32bitでも書き込み可能(D3DUSAGE_RENDERTARGET)なテクスチャが作れるらしい。ただ、CapsViewerには色んなオプションのYes/Noが書かれているわけで、GPUコンピューティングにおいてどの程度の精度が得られるかの検討がつかない罠。う~む…。

    ところで、スタンフォード大の行列積をGPUでやる論文を読んでいるわけなんだが。先日京都大学の論文を読んだときにも思ったんだが、どうもデータの配置とかの前提がわかりにくすぎる。計算のポイントは書かれているんだが、全体が見えぬ。わかるひとにはわかるのだろうか?自分が論文書くときには、わかる人にしかわからないようなことにならないように気をつけろって言う忠告だろうか?

    とりあえず、はぁ~さっぱりさっぱり(屍

    投稿者 togabito : 14:59 | コメント (0) | トラックバック

    2004年07月27日

    メディアPCが欲しいなぁと思って

    あれです。要するに、液晶ディスプレイを購入すると現在使っているCRTの使い道に困るなと。だったらメディアPCでも組んで、TVがわりにすれば現在の14インチテレビデオよりずっと良いかなぁというわけですよ。

    しかし、先日実験してEdenたんではDivXの再生にすら絶えられないわけですね。

    で、ふと思ったわけだが、Edenたんをミラーリングファイル鯖兼HTTP鯖にしたうえで、現在の370たん鯖をメディアPCにすれば全部解決くさいわけだ。

    よし、今夜鯖を落として実験…あ、鯖のバックアップとってからだからすぐは無理か。


    Edenと370に接尾詞がつくのはすでに仕様。諦めるしか。あとそのへんのアウトレット系で机探そう。ディスプレイ並べられるサイズの。

    ゼミ準備は終わりー。VGAの詳細スペックなんて調べられないのであちこちからもってきて切り貼りして終わりー。さっさとプログラミングにうつるよー。…レポート(以下略

    投稿者 togabito : 14:03 | コメント (0) | トラックバック

    2004年07月26日

    GeForce6800のアーキテクチャ

    複雑すぎるよママン…

    ⊂⌒~⊃。Д。)⊃ 屍

    #明日のゼミでアーキテクチャ紹介なんですが…GPUで汎用計算をしたい研究者の人も大変ですね

    投稿者 togabito : 17:40 | コメント (0) | トラックバック

    2004年07月21日

    sendmail…かな?

    気がつくと、FreeBSD鯖が /var がいっぱいだよーと泣いていた。調べてみたら、どうやら /var/spool/clientmqueue の中に大量にファイルがあって、圧迫しているらしい。

    このディレクトリはsendmailの待ちっぽいんだが、どうしたものか。下手にsendmailを動かすと、spamの温床になるんじゃないかとか、不安も。そもそも、 /etc/rc.conf で sendmail_enable="NONE" を指定してあったんだけど、関係ないのかな?

    あー、教えてせんせいさーん(調べろよ。いや、今調べているんだけどさ。

    投稿者 togabito : 20:55 | コメント (0) | トラックバック

    2004年07月06日

    CUPSによる複数プリンタ設定

    研究室でUNIXクライアントから印刷をするためにCUPSを使っているんだが、複数のプリンタがセットアップされている際に、デフォルトのプリンタを切替える方法がわからん。どっかにないかなー。

    …本買えよ。立ち読みしろよ。そうですね。

    投稿者 togabito : 17:31 | コメント (0) | トラックバック

    2004年07月04日

    続:秋葉行軍

    で、マシン一台分以上のパーツを買ってきたので、
    ざっくりと組み立てたわけだ。

    安物のケースは、絶縁用の螺をつけてからM/Bを載せると、
    ブランケットの位置が合わないことが判明。
    高さの低い螺も無ければ、絶縁無しも問題なので、
    家具による床への傷を防ぐシートみたいのを適当にはさんでみたところ、
    M/Bがちょいと斜めになったがとりあえずOK。

    他には特に問題なく、ナニゲに静音っぽいマシンが二台完成。
    …したと思ったら、windowsのインストール開始時にフリーズ多発。
    身に覚えがあったのでメモリを512+256から512に変更して、解決。

    その後ソフト系のトラブルが多発。
    FX5200でD3Dテクスチャ生成が腐ってみたり、
    MX420でメルブラだけテクスチャがいかれたり。

    適当に抜き差しを繰り返したり、
    DirectXのランタイムやSDKを適当に入れ直したりしていたら、
    なんかまともに動いたっぽいのでOK?


    結局、秋葉とマシン組み立てで週末が飛びましたとさ。
    色々とやることがあったはずなんだけどなぁ…。

    投稿者 togabito : 23:01 | コメント (0) | トラックバック

    秋葉行軍

    秋葉へ行って、PC一台分以上の買いものをしてきた。
    同行者はmasa-u氏。
    以下、買ったものリスト。

    CPU AthlonXP2500+(BULK) \7680
    CPUファン \3980
    MEMORY PC3200 512MB CL3 \7880
    HDD HDS722512VLAT80 (120GB,8MB) \8930
    VGA Albatron FX5200LP1 \6470
    記録型DVDドライブ OptoRite DD0201 \7560
    ケース \2980
    電源 \2970
    DISPLAY Viewtec VS17S \38640
    USB接続の音源内臓ヘッドフォン \3002
    キーボード \999
    マウス \999
    金属加工工具 \2230
    電解コンデンサと抵抗 \100
    ライン端子 \70

    記録型DVDドライブを入手したので、
    かえりがけにヨドバシでメディアも調達。
    \1884(ポイントで購入)

    一部消費税の扱いとかの問題で正しくない値段もあるけど、大体こんなもん。本気で10万円くらい消費。予定通り。購入は主にSuccessとFaith。

    せっかくだから購入したものたちの写真も貼ってみる。クリックすると大きくなる。はず。
    parts.jpg


    Successで研究室のmonpuchi先輩に出くわしたり、秋葉を出る前に高見氏に飯&酒を奢ってもらったり(激しくゴチになりました。また是非お願いします。)と、ある意味とんでもない秋葉巡りでしたとさ。
    …っていうか、ある意味巡ってなんていないわけなんだが。アレゲな店とか全然行ってないし。


    #このときはまだ、あんな大変なことになるなんて、夢にも思わなかったのです…。

    投稿者 togabito : 10:23 | コメント (0) | トラックバック