2005年09月07日
OpenGL on Vista
Full performance OpenGL under Windows Vista Aero - Contact your hardware and software manufacturers
http://www.opengl.org/
現在はトップにありますが、いつまであるかはわかりません。このスレッドからの提起のようです。このスレッド自体は 08-05-2005 12:28 PM のポストです。トップエントリは以下のような内容です。
Windows Vista Aera 上での OpenGL のフルパフォーマンス - ハードウェアとソフトウェアベンダにコンタクトして下さいWindows Vista に関してはほとんどスルーしていたのですが、OpenGL の事情がこんな感じになっていたんですね。。。ちょっと考えればある程度予測はできることではありますが。Windows Vista 上での OpenGL のパフォーマンスに関する Microsoft の現在の計画としては、デスクトップの合成(composited desktop)をするような Aero glass エクスペリエンス(experience : ←ほぼ日本語的には無意味、"効果" 程度の意味でいいでしょう(Windows XP の XP と同等)が、よく user experience をユーザエクスペリエンスって言っちゃいますよね、講習会なんかでは) を OpenGL で使うための手段として Direct3D の上に OpenGL レイヤをかぶせた形にします。OpenGL ICD を使ったアプリケーションが実行された場合 - デスクトップの合成はオフされ - ユーザエクスペリエンスを大きく低下させます。
これは Vista の最初のテクニカルベータに過ぎませんが、これは解決できる問題です。あなたの好きなソフトウェアデベロッパー、ハードウェアデベロッパー、そしてビデオカードベンダ(例えば 3Dlabs, ATI, Intel, Matrox, NVIDIA, SIS HP, Dell, Leenovo)に対し、この問題に関して Microsoft と解決するように(emailを)書いて下さい。ハードウェアとソフトウェアベンダはデベロッパの話を聞きます。これはあなたが実行できる最も効果的な行動です。受身ではダメです - email を書いてフォアグランドにおける話題として保ってください。
Google で検索する限り、まだ日本ではあまりこのことに関して話題にはなっていないようです(というか、まだちゃんと検索できてませんです…)。見つけられたのは Blender.jp のこのエントリ。あとは 2ch のこのスレです。
まだ詳しく調べていませんが、問題が Aero glass experience に由来するものなのか、OpenGL ICD の構造に由来するものなのか、DDI に由来するものなのか(ディスプレイドライバが OpenGL ICD の ExtEscape を受けない構造になっている == DDI の変更 == OpenGL ICD の構造はとれない)※1、と考えていくとまだまだ解決策はあるように感じます。特に、Aero glass experience と OpenGL を排他的に動作させればいいのでは?といったような「レガシー主義」を簡単には考えてしまいます。
通常、Dyna を使っている身としては Aero glass experience などにはあまり興味が湧きません…(こういった考えではいけないんでしょうけど)。多分、続きます。
(追記)
※1 いろいろ調べてみると日本でも早いところで 8/7 くらいには話題になっていました(情報に疎かったです)。またこの問題はディスプレイドライバの構造が増えたことによるようで(XP のドライバモデル(従来版)と Vista のドライバモデル)、上に書いた「レガシー主義」的な動作が XP ドライバモデルのドライバを Vista で動作させたときの動作になるようです。
2005年09月05日
ForceWare 78.01
9.2 付けで GeForce 系の新しいドライバがリリースされました。
http://www.nvidia.com/object/winxp_2k_78.01.html
ForceWare 78.01 Release Date: September 2, 2005
リリースノートはこちら
GeForce 6500 のサポートが追加されただけで、77.77 からは何も変わっていないようです。77.77 は当然狙ったバージョン番号でしょうけれど、78.90 なども狙ってくるかもしれませんね。
2005年08月19日
CATALYST 5.8
8.17 付けで RADEON 系の新しいドライバがリリースされました。
https://support.ati.com/ics/support/default.asp?deptID=894&task=knowledge&folderID=293
CATALYST 5.8 Modified: 8/17/2005
リリースノートはこちら
ForceWare 77.77
8.11 付けで GeForce 系の新しいドライバがリリースされました。
http://www.nvidia.com/object/winxp_2k_77.77.html
ForceWare 77.77 Release Date: August 11, 2005
リリースノートはこちら
GeForce 7800 GT のサポートや、SLI のサポートが更新がされています。
2005年07月20日
ARB_texture_non_power_of_two
ふと気が付いたんですが、ATI のカードって未だに ARB_texture_non_power_of_two をサポートしてないですね…。私は Radeon9500 を使っているのですが、CATALYST 5.7 でもダメです。Delphi3D でも 確認できません。うーん、ちょっとしたトラップだ。。
Mersenne Twister (2)
分解性能の問題と言いましたが、理由はこうです。c 言語の rand の上限値は stdlib.h で定義されており、一般的な環境では RAND_MAX が 0x7fff です。疑似乱数の取りうる範囲は [0, 32767] であり、原点付近 1/70 の範囲では 32,768/70 で約 468 段階の分解性能しかありません。Mersenne Twister の実装では RAND_MAX に相当する値は 0xffffffff であり、原点付近 1/70 の範囲では 4,294,967,295/70 なので約 61,356,675 段階の分解性能があることになります。
これは単なる一例ですが、では rand の RAND_MAX の値が 0xffffffff の実装をしたら?とか、その際の生成コスト(処理時間)は?とか、生成された疑似乱数の正規分布はどうなの?とか、じゃあ周期は?などの諸々の問題に応えたのが Mersenne Twister です(厳密に検討してみるとわかるのだと思います。ここではウケウリ)。もちろん今あげたのはパッと思いついたものだけであり、疑似乱数に必要な全ての条件ではありません。
ところで Mersenne Twister の良さを示すサンプルとして、このプロット画像は非常に分かりやすいですね。rand の問題点と、Mersenne Twister によってそれがどのように改善されたのかがひと目でわかります。この辺の技術は広告の技術とも言えます(これはビデオの方でも言及されています)。
2005年07月19日
Mersenne Twister
Mersenne Twister (メルセンヌツイスター)のテストプログラムを書いてみました。テストといってもドキュメントで示されているパターンを表示する程度のものです。
![]() |
![]() |
c 言語の rand によるプロット | Mersenne Twister によるプロット |
と、確かにパターンが表示されるのが確認できました。しかし このドキュメント で示されるように、このプロットは [0, 1/70] の区間をプロットしています。即ち、[0, 0.01428] くらいの区間をプロットしていることになります(開閉区間は厳密ではありません)。
これを読んでから思ったのですが、これってランダム性能というか分解性能の問題のような気がしました。最初はこの原点付近 1/70 を知らずに組んでしまったので、しっかりランダムな感じにプロットがされてしまいました。
講義のビデオを見ればわかりますが疑似乱数にはいろいろな性格があり Mersenne Twister は(現時点のコンピュータアーキテクチャ上では)よい疑似乱数生成器であるのだそうです。この辺に関するいろんな言及はビデオで説明されています。詳しくは論文を読むのがいいでしょう。
参考までにこのプログラムはこれです(要glut)。乱数生成に非常に時間がかかるので、一度計算して作った乱数のファイルを読むようにしてあります。rand_mt.bat を実行するとファイルを読んでプロットを行います。初期状態は rand によるプロットで、m キーを押すと Mersenne Twister によるプロットになります。rand に戻すには r です。
(2006.05.12 追記)
glut のリンクが切れていました。リニューアルのときに変わったのかな?
- GLUT Specification
http://www.opengl.org//documentation/specs/glut/index.html - Nate Robins - OpenGL - GLUT for Win32
http://www.xmission.com/~nate/glut.html
2005年07月18日
講義
web を使った講義映像の配信があります。
自律分散協調論・第6回 P2PとSkype
間違いだらけの疑似乱数選び
最初に発見したのは「自律分散協調論・第6回 P2PとSkype」の方で、これは P2P について調べていたとき。次はメルセンヌツイスターに関して調べていたときです(いま気が付きましたがこれらはどちらも wide の管轄のようですね)。こういった試みは非常に有効な Internet の使い方だと思います。放送大学よりも熱心に見てしまいます。
こういった講義を見ると、酒を飲むのと同じような「酔い」の感覚を感じることができます。これは私がいっこうに学生気分が抜けていないということの裏づけなのか、生涯を通しての学生気質なのかといった根源的な病巣を孕んでいる種の問題のような気がします。
しかし、新しい知識に触れるほどの悦楽とはそうそうにありませんね。タチコマ曰く「興味深~~い」です:-)