技術情報の最近のブログ記事

OpenGL でのマルチGPUの速度(GeForce GTX 295の速度検証)

田中ゼミでは、複雑な3DCGを高速に生成するためにはGPUと呼ばれるハードウェアの処理速度が重要になっています。

GPUで高速に3DCGを生成させるために、複数のGPUを同時に使って並列処理で高速化させる方法があります。

 

田中ゼミにあるNVIDIA社製のGeForce GTX 295は 2つのGPUを搭載するマルチGPU型のグラフィックスボードなのですが、これまで2つ目のGPUがうまく動きませんでした。

下の写真はPC本体とGTX 295の写真です。

※グラフィックスボード上に怪しい画像が貼り付けてありますが、これは購入時(製造時)から貼り付けてあったものです。このGTX 295の製品ページはこちら

100913GeForce.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

これまで何度かボード上の2つのGPUを同時に動かそうと試みたのですが、NVIDIA社製のドライバがうまく機能しなくて並列動作をしませんでした。

めんどくさがりが多い田中ゼミではそれ以上の検討をすることなく、そのまましばらく放置されていたのですが、ここに来て急にマルチGPUがやりたくなり、最新のNVIDIAドライバを使って再度試してみることになりました。

 

それで最新バージョンのドライバ(256.53)を使ってみると、なんとあっさりと動くではないですか!

それで急遽、マルチGPUで我々の開発しているソフトウェアがどれくらい速くなるか試してみることになりました。

大変軽いノリで実験の開始です。

 

【検証に使用した環境】

OS: FreeBSD 8.1-stable 64bit版

CPU: Intel Core i7 920 (2.66GHz)

メモリ: 9GB(トリプルチャンネルで動作)

NVIDIAドライバ: FreeBSD x86_64 ドライバ256.53

GPU: NVIDIA GeForce GTX 295 1792MB (GIGABYTE社製 GV-N295-18I-B (Rev. 1.0))

 

【マルチGPUの設定】

(1) マルチGPUの動作モード

マルチGPUは動作の仕方によって、2種類の設定があります。

  • AFR: 画面(フレーム)毎の並列処理
  • SFR: 1つの画面(フレーム)を分割して並列処理

ただ、今回の実験では SFRモードしか速度が向上しませんでした。

 

(2) 設定ファイル 

マルチGPUの設定は以下のファイルに設定を書きこみます。

/etc/X11/xorg.conf

 

(3) 設定内容

Section "Screen" に

 

Option         "MultiGPU" "SFR"

 

を追加します。そうすると、GPUがSFRモードで並列動作(2GPUで動作)開始します。

 

【マルチGPUの速度検証】

以前の記事のここここでGPUの速度を田中ゼミで開発しているソフトウェアで検証しましたが、

今回も同じものを使いました。

 

こちらはマルチGPUを用いて日本刀を3DCG再現している様子です。(OS: FreeBSD 8.1-stable)

100913katana_multi.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

◇日本刀のデジタルアーカイブシステム

  • 1GPU(シングル動作)を使用: 50.0FPS
  • 2GPU(マルチ動作)を使用: 71.0FPS

 

◇不均質誘電体(プラスチックやペイント)のレンダリングシステム

  • 1GPU(シングル動作)を使用: 47.0FPS
  • 2GPU(マルチ動作)を使用:   74.3FPS

 

◇レイトレーシングシステム

  • 1GPU(シングル動作)を使用: 24.3FPS
  • 2GPU(マルチ動作)を使用:   46.9FPS
  •  

    以上のように2GPUで処理することで大幅に処理速度(CGの生成速度)が向上していることがわかります。

    特にレイトレーシングシステムでは、GTX 295を2GPUで使用すると 46.9FPSとなり、これは最新かつ最高スペックのGTX 480 (約30FPS)よりも高速に動作することがわかりました。

     

    【GPUの温度】

    GPUに計算処理をさせると電力消費量が増えますのでGPUが高温になります。

    当然マルチGPUだとその消費電力からなる発熱は凄まじいものとなります。

    ためしにレイトレーシングシステムを使用したときどのぐらいGPUの温度が上昇するか試してみると、

    なんと! 2つのGPUの温度は90℃を超えてしまっています。かなりの電力を消費していることがわかります。

    下の画像は、レイトレーシングシステムを動作させながらGPUの温度を表示させている様子です。

    温度を示すメーターがレッドゾーンに入っており、GPU温度も90℃を突破しています。

    ※ NVIDIAドライバから温度異常の警告が出るのは105℃からなので、まだ余裕はありますが。

    100913gpu_temp2.jpg

     

     

     

     

     

     

     

     

     

     

     

     

    【WindowsでのマルチGPUの問題】

    今回のOpenGLによるマルチGPUの検証は、全てFreeBSD上で行っています。

    Windowsでも同様な実験を行いましたが、Windows上ではマルチGPUの設定を行っても速度の向上が認められませんでした。( NVIDIA ドライババージョン 258.96)

    Windowsでは、OpenGLがあまり重要視されていないためなのか、それとも我々が何か設定を間違ったのかはわかりませんが、我々のシステムではWindows上でのマルチGPUは使用できないようです。

     

    Windowsでは、マルチGPUの設定はNVIDIAの設定ツールから以下のように3つの設定から選択します。

    • シングルGPU
    • フレームのレンダリングを強制的に交互にする 1
    • フレームのレンダリングを強制的に交互にする 2

    とあります。

    ※この選択肢だと1と2の違いが良く分からないのですが...

    100913windows.jpg

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    今回の記事が面白いと思った方は以下のボタンをクリックして下さい.

     人気ブログランキングへ にほんブログ村 大学生日記ブログ ゼミ・サークルへ




    Ubuntu の OpenGLの速度の問題(他のOSとの画像生成の速度比較)

    田中ゼミではUbuntu Linuxで開発環境を構築しているというご報告を、ここここ等で何回かさせていただいておりますが、まだ、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)の平均値を結果としました。
    100905kao.jpg























    【肌の3DCGの画像生成速度の測定結果】

    [FreeBSD, Windowsの場合]

    • GeForce 9800GT(GE): 34.3FPS程度
    • GeForce 9600GT:        30.1FPS程度
    [Ubuntu 10.04LTS の場合】
    • GeForce 9800GT(GE):  6.1FPS程度
    • GeForce 9600GT:    5.3FPS程度

    FPSは、数値が大きい方が高速であることを意味します。


    2. 不均質誘電体(プラスチック、ペイント等...)のレンダリング速度

    こちらも同様に田中ゼミで開発しているソフトウェアですが、「周囲環境を考慮してプラスチック物体などを3DCGで再現するシステム」で画像生成速度を比較してみました。
    100905neko-ueda.jpg 





















    【不均質誘電体の3DCGの画像生成速度の測定結果】

    [FreeBSD, Windowsの場合]

    • GeForce 9800GT(GE): 31.4FPS程度
    • GeForce 9600GT:        26.9FPS程度
    [Ubuntu 10.04LTS の場合】
    • GeForce 9800GT(GE):  5.9FPS程度
    • GeForce 9600GT :      5.1FPS程度

    ※参考( Core i7を搭載した別のPCで計測した結果)
    [FreeBSD, Windowsの場合]
    • GeForce GTX 480: 150.0FPS程度
    [Ubuntu 10.04LTS の場合】
    • GeForce GTX 480:  6.3FPS程度
     こちらのデータでは、CPUやGPUをアップグレードしても速度が向上していないことがわかります。Ubuntu は、他のOSと比較して速度が1/20しか出ていません。

    FPSは、数値が大きい方が高速であることを意味します。


    3. レイトレーシングのレンダリング速度(GLSLを用いたGPGPU処理)

    こちらも田中ゼミで開発しているソフトウェアですが「レイトレーシングシステム」で画像生成速度を調べてみました。こちらはGLSLをGPGPU風に使って、多重反射や透過を3DCGで再現できるシステムです。
    プラスチックの材質を設定した3つの球と緑色の板を3DCGで再現しています。
    100925raytrace.jpg




















    【レイトレーシングの画像生成速度の測定結果】
    [FreeBSD, Windowsの場合]

    • GeForce 9800GT(GE): 11.2FPS程度
    • GeForce 9600GT:        9.8FPS程度
    [Ubuntu 10.04LTS の場合】
    • 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 を有効化したり無効化したりして、それぞれで速度検証
    • ドライバのバージョンを変更しての動作確認


    今回の記事が面白いと思った方は以下のボタンをクリックして下さい.

     人気ブログランキングへ にほんブログ村 大学生日記ブログ ゼミ・サークルへ




    Ubuntu Linux の プロキシの設定(apt やら Synapticでのproxy設定)

    田中ゼミの学生用研究室では、httpやftp等の外部アクセス対しては基本的に プロキシ(proxy)経由でなければなりません。
    本日の記事は、ここの記事でハマったトラブルの一部についてご報告です。

    Ubuntu Linuxの設定をしているM先輩です。
    100901linux.JPG




















    最近のOSでは、アプリのインストールやシステムのアップデートは、ネットワーク経由で行うため
    外部に接続するためには、このプロキシ設定をしなければならないことがあります。

    現在、田中ゼミでは Ubuntu Linux を試験的に運用しているのですが、今回は、このプロキシの設定でハマりました。
    Ubuntu では、ソフトウェアのインストールには apt やそれをGUIで使うSynapticというシステムを使うのですが、このシステムのネットワーク設定がなかなかうまくいきませんでした。

    たとえば flashplugin-installer というソフトウェアをインストールしようとすると
    以下のようなエラーメッセージが出て、http://archive.canonical.com へのアクセスに失敗します。

    --- ここから(エラーメッセージのlog) ---
    パッケージを事前設定しています ...
    未選択パッケージ flashplugin-installer を選択しています。
    (データベースを読み込んでいます ... 現在 174562 個のファイルとディレクトリがインストールされています。)
    (.../flashplugin-installer_10.1.82.76ubuntu0.10.04.2_amd64.deb から) flashplugin-installer を展開しています...
    flashplugin-installer (10.1.82.76ubuntu0.10.04.2) を設定しています ...
    Downloading...
    --2010-09-01 17:38:42--  http://archive.canonical.com/pool/partner/a/adobe-flashplugin/adobe-flashplugin_10.1.82.76.orig.tar.gz
    archive.canonical.com をDNSに問いあわせています... 91.189.88.33
    archive.canonical.com|91.189.88.33|:80 に接続しています... 失敗しました: Connection timed out.
    再試行しています。
    --- ここまで ---

    エラーメッセージ
    trouble.jpg





























    以下は田中ゼミの学生が苦闘した様子です。

    【対策1. gnomeのメニューから「ネットワーク・プロキシの設定」 (失敗)】


    最初は gnome のメニューから「プロキシ」の設定をしましたが、効果がありませんでした。
    ここにプロキシ設定をすると、以下のようなプロキシ関連の環境変数が設定されるようです。

    http_proxy  "http://プロキシサーバ:ポート番号"


    【対策2. 環境変数の設定 (失敗)】

    次に /etc/profile に以下のような行を追加して、bash の方で環境変数を設定しました。

    export http_proxy="http://プロキシサーバ:ポート番号"
    export ftp_proxy="http://プロキシサーバ:ポート番号"

    を設定しましたが apt の方では一部うまくいくようになりましたが、
    http://archive.canonical.comに対しては、効果なし。


    【対策3. /etc/apt/apt.conf の設定 (失敗)】



    次に、/etc/apt/apt.conf でプロキシの設定をしましたが、こちらも効果なし。


    【対策4. wget の設定 (成功!!)


    最後に /etc/wgetrc にプロキシの設定を書き込むと、今度はやっとうまくいきました。
    どうやら、Synaptic 等は プロキシに関しては wgetrc という設定ファイルしか見ていないようです。


    /etc/wgetrc の設定内容

    --- ここから ---

    https_proxy = http://プロキシサーバ名:ポート番号/
    http_proxy = http://プロキシサーバ名:ポート番号/
    ftp_proxy = http://プロキシサーバ名:ポート番号/

    use_proxy = on


    --- ここまで ---


    こちらがwgetrcに設定を書き込んでいる様子です。設定はテキストエディタ(vi)でテキストコードとして入力します。※以下の画像で長野大学のサーバ情報を書き込んでいる部分は画像処理でボカし処理をしています。
    100901term.jpg






















    これが、その成功した結果(処理完了のメッセージ)となります。

    Download done.
    Flash Plugin installed.

    完了のメッセージが眩しいです!
    100901finished.jpg














    これで何とか、Ubuntu Linux で無事にネットワーク経由でソフトウェアのインストールやらアップデートができるようになりました。

    しかし、まだいくつかの問題が残っています。
    それらも解決していかなければならないのですが、それらも次回以降の記事で
    ご報告させていただきたいと思います。

    今回の記事が面白いと思った方は以下のボタンをクリックして下さい.

     人気ブログランキングへ にほんブログ村 大学生日記ブログ ゼミ・サークルへ



    (その2) 新しいグラフィックスボード(NVIDIA GeForce GTX 460)

    先日,新しいグラフィックスボードの記事を書きましたが,今度はGTX 460の方の報告記事です.

    最近マニアックなネタが続いて申し訳ありません.

    今回もまたGPU(Graphics Processing Unit)のお話です.

     

    こちらが田中ゼミのPC内に新しく取り付けられたNVIDIA GeForce GTX460です.

    100819gtx460.jpg

     

     

     

     

     

     

     

     

     

     

     

     


    こちらのGPUはグレードとしては,先日のGTX 480よりも格下になるのですが,

    GPUのコアのアーキテクチャを見てみると,GTX 480が GF100コアを使っているのに対して,GTX 460はGF104コアと新しいものを採用しています.

    GF104はFermiのバージョン2とも言える新しいコアだということですが...

     

    これでどの程度の速度がでるのでしょうか?

    今回は以下の条件でベンチマークテストをしてみました.

    OS:FreeBSD 8.1-stable, NVIDIA driver 256.44

    シェーディング言語: GLSL

    ベンチマークテストをしている様子(田中ゼミで開発中のソフトウェアで3つの球体を3DCGで再現)

    100819raytrace.jpg

     

     

     

     

     

     

     

     

     

     

     

     

     

    まず最初は,田中ゼミで開発している美術品のデジタルアーカイブシステムを使って日本刀の3DCG再現をしてみました.この場合,以下のような3DCG生成速度となりました.

    • GTX 295 (1GPUのみ使用) : 50FPS
    • GTX 480 1.5GB : 150FPS
    • GTX 460 1GB: 100FPS

    前回のベンチマークテストの結果と比較して,GTX 460は,GTX 480の約2/3の速度が出ています.

    旧GPU(GTX 295)のシングルGPUと比較しても約倍の速度が出ていることが分かります.

    値段を考えると妥当な速度ではないでしょうか?

     

    次にレイトレーシングシステムで3DCGの生成速度を比較してみました.

    こちらは通常のGPUのグラフィックスパイプラインの処理を無視して,GPGPUとしてGPUを用いています.シェーディング言語としては,こちらもGLSLを使っていますが...

    3DCGの生成速度は以下のようになりました.

    • GTX 295 (1GPUのみ使用) : 25FPS
    • GTX 480 1.5GB : 30FPS
    • GTX 460 1GB: 13FPS(遅い??)

     

    前回のベンチマークテストの結果と比較して,GTX 460は,GTX 480と比較できるどころか

    旧GPU(GTX 295)のシングルGPUと比較しても約半分の速度しかが出ていないことが分かります.

    どうした新型!? と,叫びたくなるような結果です.

     

    参考までにもっと古いGPUを持ってきてベンチマークをとってみました.

    さらに旧い二世代前の旧型のGPUで同様のベンチマークテスト(レイトレーシング)を行ってみると,

    • GeForce 9600GT(1GB) : 8FPS
    • GeForce 9800GT Green Edition(1GB): 11FPS

     二世代前の,しかも低消費電力バージョンのGPUと大して変わらない結果になってしまいました.

     

    NVIDIA GTX 460に関しては,今のNVIDIAドライバGLSLのチューニングが甘いのか,それともGPGPUとして使うには,これが現時点での限界なのかレイトレーシング処理に関しては予想外に性能が出ない結果となりました.

     

    本当にどうした新型!? と,叫びたくなるような結果になりました.

     

    今回の記事が面白いと思った方は以下のボタンをクリックして下さい.

     人気ブログランキングへ にほんブログ村 大学生日記ブログ ゼミ・サークルへ 

    Ubuntu Linuxの試験的導入(新OSでの開発環境の構築)

    先日の記事で、田中ゼミで開発しているソフトウェアをNVIDIA社のCUDAに移植していかなければならないという話をしました。

    この画像は後述するLinuxシステム上でCUDAのデモを実行している様子をキャプチャしたものです。
    煙のオブジェクトがリアルタイムに動いています。
    田中ゼミで開発しているシステムを改良して、より高速に高精細な3DCGを生成するためには、このCUDAは非常に強力なツールになりそうです。

    100815cuda.jpg



















    このとき問題となるのが、開発環境をどうやって構築していくのか、ということです。
    田中ゼミでは主たる開発環境として、OSFreeBSDを使っていますが、CUDAの開発環境を構築するにはOSをWindowsかLinuxに移行する必要が出てきます。

    開発環境の移行というものは、単に新しいOSをインストールして終わり、とか、新しいOS上で今開発しているソフトウェアを移植して終わり、というわけにはいかず実は大変な労力が伴います。

    開発環境を移行することで発生するであろう大きな問題点は、以下のようにたくさんあります。
    特に田中ゼミでは長年かけて開発環境を熟成させてきているので、新しい環境への移行にはいろいろと問題が発生する可能性があります。

    • 今まで開発してきたソフトウェアが問題なく動くかどうか?
    • 今まで使っていた開発ツールが新しい環境でも全て揃うかどうか?、また、同じ動作をするのか?
    • ソフトウェア作成時にAPI(Application Program Interface)と呼ばれるOS側の機能呼び出しが同様なものを持っているのか?、あるいは同様な動作をしてくれるのか?
    • ソフトウェアやデータが保存される場所がどこに移動するのか?
    • 今まで開発してきたソフトウェアが新しい環境で安定して動作してくれるのか?
    • トラブルが発生した場合に対処方法はどの程度変わるのか?また、すぐに対処できるのか?
    と、考えればキリがありません。

    まぁ、ゴチャゴチャ考えていても仕方ないので、とりあえず試験的に Ubuntu Linux を田中ゼミのPCにインストールしてみました。
    インストールしたバージョンは、10.04LTS 64bit版です。

    通常の使用であれば、32bit版をインストールすべきなのですが、田中ゼミではギガバイト単位の巨大な高精細画像データや形状データを扱うため、32bitのOSだとアドレス空間が足りません。
    そのため、本年度田中ゼミでは、全てのOSを64bitに移行しました。

    そういうことですので、Ubuntu も64bit版です。

    ただ、そうすると日本語の設定やFlash等通常使うソフトウェアの設定が面倒になりますが、今回は仕方ありません。とりあえず、頑張ってみます。

    Ubuntu Linuxは現在のLinuxのディストリビューションの中でもっとも人気のあるものです。Ubuntuを選択した理由としては、環境構築が簡単だということと、ユーザ数が多いということです。
    特にユーザ数が多いということは、いろいろな不具合も解決されている可能性が高く、いろいろと利点が多いだろうと考えたからです。

    とりあえず、Ubuntuを田中ゼミ仕様に設定していきます。

    こういった作業が終了すれば、暫定的に田中ゼミ仕様の開発環境が出来上がります。


    インストールと各種設定が終わったLinuxシステムに田中ゼミが開発しているレイトレーシングシステムを移植してみました。
    このシステムはOpenGL+GLSLで記述しています。とりあえず、問題なく動いているようです。
    100815desktop.jpg



















    さらにデジタルコスメが開発している人間の肌の3DCG生成システムを移植して実行してみました。
    こちらも問題なく動いているようです。
    ※2010年9月5日追記(実は、後で速度面に問題があることが分かりました。
    以下の画像が、その結果です。人間の3DCG(肌の3DCG)が綺麗に生成されているのがわかるでしょうか。
    100815face.jpg






























    と、以上のようにUbuntu Linuxの試験導入はほぼ問題なくできました。
    とは言っても、細かい部分ではトラブったのですが、そういう部分は次回以降機会があれば、ご紹介いたします。


     

    今回の記事が面白いと思った方は以下のボタンをクリックして下さい.

     人気ブログランキングへ にほんブログ村 大学生日記ブログ ゼミ・サークルへ 

    1  2  3

    このアーカイブについて

    このページには、過去に書かれたブログ記事のうち技術情報カテゴリに属しているものが含まれています。

    前のカテゴリはソフトウェア開発です。

    次のカテゴリは本日の田中ゼミ研究室の様子です。

    最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

    長野大学公式サイトへ