田中ゼミではUbuntu Linuxで開発環境を構築しているというご報告を、ここやここ等で何回かさせていただいておりますが、まだ、Linux上での完全な開発環境が整っていません。
田中ゼミでは、GPUと呼ばれるグラフィックスハードウェアを用いて3DCGを生成しています。
ここでは主にOpenGLと呼ばれるグラフィックスAPIを用いてリアルタイムに画像生成しています。また、その時の画像の品質を向上させるためにGLSLと呼ばれるシェーディング言語を用いています。
現時点での最大の問題は、このOpenGLの画像生成(レンダリング)速度が、Ubuntuでは、なぜか非常に遅いということが分かったことです。
困ったことに、この部分を解決しなければ Ubuntuを使っていくことができません。
主に速度を検証したのは、以下のような構成のシステムです。
(この他にもIntel Core i7のPCでも調べましたが、CPU等の影響はあまり受けず、ほぼ同様な結果となっています)
【システム構成】
CPU: Intel Core2Quad 9550S
メモリ: 8GB
OS:
FreeBSD 8.1-stable 64bit ( NVIDIA ドライババージョン 256.53)
MS-Windows 7 Pro 64bit ( NVIDIA ドライババージョン 258.96)
Ubuntu 10.04LTS 64bit ( NVIDIA ドライババージョン 256.53)
※1. いずれもメーカ提供の最新ドライバをインストールしておりますが、Windowsだけドライバのバージョンが異なります。
※2. 一応,テストの段階でUbuntu(Linux), FreeBSDともに異なるバージョン(256.44 や 256.40)のドライバも試しましたが同様な結果となりました。
1. 肌の3DCG レンダリング速度
最初に田中ゼミで開発中の「肌の3DCG再現システム」で画像生成速度を調べてみました。
速度比較の実験では、3回計測したレンダリング速度(FPS)の平均値を結果としました。
【肌の3DCGの画像生成速度の測定結果】
[FreeBSD, Windowsの場合]
※FPSは、数値が大きい方が高速であることを意味します。
2. 不均質誘電体(プラスチック、ペイント等...)のレンダリング速度
こちらも同様に田中ゼミで開発しているソフトウェアですが、「周囲環境を考慮してプラスチック物体などを3DCGで再現するシステム」で画像生成速度を比較してみました。
【不均質誘電体の3DCGの画像生成速度の測定結果】
[FreeBSD, Windowsの場合]
※参考( Core i7を搭載した別のPCで計測した結果)
[FreeBSD, Windowsの場合]
※FPSは、数値が大きい方が高速であることを意味します。
3. レイトレーシングのレンダリング速度(GLSLを用いたGPGPU処理)
こちらも田中ゼミで開発しているソフトウェアですが「レイトレーシングシステム」で画像生成速度を調べてみました。こちらはGLSLをGPGPU風に使って、多重反射や透過を3DCGで再現できるシステムです。
プラスチックの材質を設定した3つの球と緑色の板を3DCGで再現しています。
【レイトレーシングの画像生成速度の測定結果】
[FreeBSD, Windowsの場合]
※FPSは、数値が大きい方が高速であることを意味します。
4. とりあえず、現時点でのまとめ
UbuntuのOpenGLの速度が低下している原因は、現時点ではまだ判明していません。
速度の計測結果に関しては、何度も計測や設定の確認をしており、CPUやマザーボード等が異なる条件の複数のPC(3台)でも同様な結果を得ていることから、計測のミスということはないと思います。
また、レンダリング時の結果を見てもUbuntuでは明らかにカクカクとコマ落ちしているのが分かります。
まだ田中ゼミではUbuntu Linuxの設定等で不慣れな面がありますので、何か「しなければならない設定」をしていないのか、あるいは、「してはいけない設定」をしてしまっている可能性もあります。
これからその原因を追求していかなければなりません。
とりあえず、現時点では速度低下の原因を追求している段階で以下の点の設定や確認は行いましたが、効果はありませんでした。
今回の記事が面白いと思った方は以下のボタンをクリックして下さい.
※【2011年12月30日に、この記事の続きを書きましたので、そちらも参考にして下さい】
田中ゼミでは、GPUと呼ばれるグラフィックスハードウェアを用いて3DCGを生成しています。
ここでは主にOpenGLと呼ばれるグラフィックスAPIを用いてリアルタイムに画像生成しています。また、その時の画像の品質を向上させるためにGLSLと呼ばれるシェーディング言語を用いています。
現時点での最大の問題は、このOpenGLの画像生成(レンダリング)速度が、Ubuntuでは、なぜか非常に遅いということが分かったことです。
困ったことに、この部分を解決しなければ Ubuntuを使っていくことができません。
主に速度を検証したのは、以下のような構成のシステムです。
(この他にもIntel Core i7のPCでも調べましたが、CPU等の影響はあまり受けず、ほぼ同様な結果となっています)
【システム構成】
CPU: Intel Core2Quad 9550S
メモリ: 8GB
OS:
FreeBSD 8.1-stable 64bit ( NVIDIA ドライババージョン 256.53)
MS-Windows 7 Pro 64bit ( NVIDIA ドライババージョン 258.96)
Ubuntu 10.04LTS 64bit ( NVIDIA ドライババージョン 256.53)
※1. いずれもメーカ提供の最新ドライバをインストールしておりますが、Windowsだけドライバのバージョンが異なります。
※2. 一応,テストの段階でUbuntu(Linux), FreeBSDともに異なるバージョン(256.44 や 256.40)のドライバも試しましたが同様な結果となりました。
1. 肌の3DCG レンダリング速度
最初に田中ゼミで開発中の「肌の3DCG再現システム」で画像生成速度を調べてみました。
速度比較の実験では、3回計測したレンダリング速度(FPS)の平均値を結果としました。
【肌の3DCGの画像生成速度の測定結果】
[FreeBSD, Windowsの場合]
- GeForce 9800GT(GE): 34.3FPS程度
- GeForce 9600GT: 30.1FPS程度
- GeForce 9800GT(GE): 6.1FPS程度
- GeForce 9600GT: 5.3FPS程度
※FPSは、数値が大きい方が高速であることを意味します。
2. 不均質誘電体(プラスチック、ペイント等...)のレンダリング速度
こちらも同様に田中ゼミで開発しているソフトウェアですが、「周囲環境を考慮してプラスチック物体などを3DCGで再現するシステム」で画像生成速度を比較してみました。
【不均質誘電体の3DCGの画像生成速度の測定結果】
[FreeBSD, Windowsの場合]
- GeForce 9800GT(GE): 31.4FPS程度
- GeForce 9600GT: 26.9FPS程度
- GeForce 9800GT(GE): 5.9FPS程度
- GeForce 9600GT : 5.1FPS程度
※参考( Core i7を搭載した別のPCで計測した結果)
[FreeBSD, Windowsの場合]
- GeForce GTX 480: 150.0FPS程度
- GeForce GTX 480: 6.3FPS程度
※FPSは、数値が大きい方が高速であることを意味します。
3. レイトレーシングのレンダリング速度(GLSLを用いたGPGPU処理)
こちらも田中ゼミで開発しているソフトウェアですが「レイトレーシングシステム」で画像生成速度を調べてみました。こちらはGLSLをGPGPU風に使って、多重反射や透過を3DCGで再現できるシステムです。
プラスチックの材質を設定した3つの球と緑色の板を3DCGで再現しています。
【レイトレーシングの画像生成速度の測定結果】
[FreeBSD, Windowsの場合]
- GeForce 9800GT(GE): 11.2FPS程度
- GeForce 9600GT: 9.8FPS程度
- GeForce 9800GT(GE): 9.1FPS程度
- GeForce 9600GT: 7.7FPS程度
※FPSは、数値が大きい方が高速であることを意味します。
4. とりあえず、現時点でのまとめ
UbuntuのOpenGLの速度が低下している原因は、現時点ではまだ判明していません。
速度の計測結果に関しては、何度も計測や設定の確認をしており、CPUやマザーボード等が異なる条件の複数のPC(3台)でも同様な結果を得ていることから、計測のミスということはないと思います。
また、レンダリング時の結果を見てもUbuntuでは明らかにカクカクとコマ落ちしているのが分かります。
まだ田中ゼミではUbuntu Linuxの設定等で不慣れな面がありますので、何か「しなければならない設定」をしていないのか、あるいは、「してはいけない設定」をしてしまっている可能性もあります。
これからその原因を追求していかなければなりません。
とりあえず、現時点では速度低下の原因を追求している段階で以下の点の設定や確認は行いましたが、効果はありませんでした。
- 標準で搭載されているフリーのnvidiaドライバである nouveau とのコンフリクトの回避
- 3Dデスクトップの設定の無効化
- Sync to VBlank を有効化したり無効化したりして、それぞれで速度検証
- ドライバのバージョンを変更しての動作確認
今回の記事が面白いと思った方は以下のボタンをクリックして下さい.