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

シナノケンシ(Plextor)のSSDを導入(ノートPCの改造!)

ゼミ発表大会が近くなってきております.
そこで昨年度末から,困っていたのが次世代3DCGプロジェクトで進められているCGシステムのデモ用PCのディスクアクセス速度です.
田中ゼミでは巨大な画像を扱うのですが,ディスクのアクセス速度が追いつかないため
大変困っておりました.

そこで新型のSandy BridgeアーキテクチャのCore i7 のノートPCが導入されました.

さらに! 世界最速を謳われているPlextorブランドSSDも併せて導入しました.
型番はPX-256M2Pと呼ばれる最新型です.

こちらがSSDの表面です.金属のヘアライン加工が美しいです.
ちょっとコストがかかっている感じがします.
120121PlextorSSD.JPG




















それから裏面を見てみると,地元の上田市のシナノケンシがメーカーであることがわかります.
長野大学の近所でこういったSSDが作られているんですねぇ(製造は台湾ですが...)
120121SSDshinanokenshi.jpg















早速,新型のノートPCに取り付けてみましょう.すでに搭載されているHDDを取り外してSSDに入れ替えます.
分解はそれほど難しくありませんでした.
高性能なクアッドコアなCPUに加えて,nvidiaのGPUが搭載されており冷却系はヒートパイプでつながれています.
120121pc-kaizo.jpg



















これでデモ用のPCはばっちりです.
データの読み込み速度も非常に高速になりました.
120121notePC.jpg



















とりあえずSSDの速度のベンチマークをとってみました.
ベンチマークに使ったソフトウェアはCrystalDiskMarkです.
確かにシーケンシャルアクセスも速いですが,ランダムアクセスが爆速であることが分かります.

120121bench.jpg


























【ベンチマークの環境】
PC: Prime Note Galleria QF555
GPU: NVIDIA GeForce GT 555M (2GB)
CPU: Intel Core i7 2670QM
メモリ: 8GB
SSD: Plextor SSD PX-256M2P (256GB)
OS: Microsoft Windows 7 Professional 64bit SP1




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

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



Ubuntu Linux の OpenGLの速度の問題 その3(FreeBSD vs Linux)

皆様、新年明けましておめでとうございます。
本年も田中ゼミをよろしくお願いいたします。

さて新春第一回目の記事となりますが、Linuxを使われている方からご好評をいただいておりますベンチマーク関連の話題をご提供させていただきます。


先日の記事でベンチマークソフトを作成して、LinuxとWindowsの速度差を比較しました。

過去の記事として、こちらこちらも参照してください。

今回は、田中ゼミでメインで使用しているFreeBSDという unix系のOSと Ubuntu LinuxとでOpenGLの処理速度を比較してみようと思います。

【計測環境】
ベンチマークテストをしている様子です。以下の写真はFreeBSDでベンチマークテストをしているときのものです。
120104freebsd.jpg























<<ソフトウェア>>
前回の記事で公開したソフトウェアを使用して検証します。

<<システム環境>>
 OS: 
   FreeBSD 8.2-STABLE 64bit
   Ubuntu Linux 11.10 64bit
 Driver:
   FreeBSD:  nvidia driver 280.13 (2012年1月6日 290.10 で再試験)
    ※ 【2012年1月6日追記:】
      FreeBSD のドライバのバージョンを290.10に上げて再度試験を
      しましたが、FreeBSD側の結果はほとんど変わりませんでした。
   Linux:  nvidia driver 290.10
 CPU:
   Intel Core i7 950   3.06GHz
 メモリ
   24GB
 GPU:
   NVIDIA Quadro 2000
 ※株式会社ゴーガの小山氏よりご提供いただいたものです。詳細はこちらの記事をご覧ください。

<特に設定したこと>
 Linux:
 (1) デスクトップ環境を LXDEに変更(余計な負荷を減らすため)
 (2) 3D Desktop 環境 (Compiz)がOFFになっていることを確認

【計測結果】
以下の実験では球オブジェクトの分割数に対するフレームレート(fps)を計測しています。このときfpsの値が大きい方が処理速度が速いことを意味します。

<< NVIDIA GeForce GTX 580>>
120104geforce580.jpg














<< NVIDIA Quadro 2000 >>>
120104quadro.jpg













【考察】
計測結果から分かったことは、

<<FreeBSDについて>>
 (1) Quadro 2000GeForce GTX 580結果がほとんど同じになったことに
   驚いています。この2つはシェーダユニット数やクロック、バス幅に至るまで
   大きく異なっているので、本来はもっと違った結果が得られるはずです。

   これは恐らくベンチマークプログラムが単純過ぎるため、処理速度が飽和状態に
   なって本来の性能が発揮できていないためだと思われます。

 (2) 分割数が大きくなっていっても処理速度が一定値以下にならない
   これはWindowsでも同様な結果になっているのですが、
   ポリゴン数が多くなっても処理速度が落ちないような処理に
   なっているのでしょうか? この部分の疑問が残ります。

<<Linuxについて>>
 (1) まずLinuxはFreeBSDと比較して処理速度が遅くなっていることが
   わかります。
   これはベンチマークの数字の上だけの問題ではなく、
  「次世代3DCGプロジェクト」で田中ゼミが開発している
   様々なソフトウェアでも体感的に大きな差となって出ています。

 (2) 負荷に応じて処理速度が低下していきます。
  FreeBSDやWindowsと異なり、Linuxでは処理負荷(分割数)の増加に応じて
  処理速度が低下していきます。

 (3) Quadro 2000 と GeForce GTX 580の結果からある程度GPUの
  アーキテクチャの違いのようなものが出ています。
  アーキテクチャ的にはGeForce GTX580の方が高機能なのですが、
  全体的にNVIDIAの高機能版ブランドであるQuadroの方が処理速度が
  高くなっていることが分かります。

  一般によく言われているようにOpenGLを使う場合は、GeForceよりも
  Quadroの方が良いということがデータとして表れています。

<<全体について>>
 田中ゼミではNVIDIAのGPUを使って、CGソフトウェアを開発していますが、現時点では上記のような性能上の問題があるため、Linux ではなく FreeBSDまたはWindowsを使っています。

 この問題に関しては早めに結論を出したいのですが、現時点では先送りになっております。


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

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



Ubuntu Linux の OpenGLの速度の問題 その2(Linux vs Windows)

今回はベンチマークテスト用の環境を作ってもう少し詳しく調べてみました。

特に Linux vs Windows でベンチマークテストを行って速度を比較しました。

それでいくつか分かったことがありますので、以下にその結果をまとめます。

【LinuxのOpenGLの問題】
いろいろ田中ゼミで検証した結果、

 (1) LinuxでnvidiaのGPU+メーカー製ドライバを使った場合、
  ポリゴン数が多くなるとOpenGLのレンダリング速度が急激に低下する。
  ※他のGPUやドライバ環境については調査していない

 (2)当初はUbuntuだけの問題と考えていたが、Ubuntu 以外のディストリビューションでも
  速度低下が確認された。
  ※以下のディストリビューションについて検証したが、他のディストリビューションについては未確認
  <速度低下が確認されたディストリビューション>
   Cent OS 6.1 ,Scientific Linux 6.1,Fedora 15

 (3) 速度の低下の問題は、nvidia のドライバのバージョンに依存しない。
  ※複数のドライババージョンで動作を確認

 (4) 3D Desktop環境(Compiz)の有無による影響を調べたが、有意な差異は見られなかった。
  ※ただし、検証時はCompizは常時無効にして、3D Desktop環境による影響を
    受けないように配慮した。

 (5)FreeBSDやWindowsではこういった速度低下の問題は発生しない。

ということが分かりました。


【計測方法】
上記の問題を検証するための実験を行いました。

問題を単純化するために専用のベンチマークテスト用プログラムを作りました。このプログラムではOpenGLの glut で用意されている球物体を使ってレンダリングの速度を検証しています。
球物体をポリゴン分割し、その分割数に対応するフレームレートを計測します。

glutでは、ティーポットや球などの形状情報が予め用意されていますが、これらは全てポリゴンで構成されています。
球物体では以下のように球をポリゴンで分割して描画します。

glutSolidSphere( 半径, 経度分割数, 緯度分割数);

【計測に使用したソフトウェア】
今回の実験用に田中ゼミで開発したベンチーマークソフトウェアを公開しますので、追試をしたい方はこちらのソフトウェアを使用してください。
※今回のソフトウェアではFPSの計算部分についてはこちらのページを参考にさせていただいております。

<<ビルド方法>>
ダウンロードしたntlab-oglbench.tgz を展開して make でビルドしてください。
なお、必要なライブラリは各自でインストールしてください。

<<実行方法>>
実行は簡単です。実行時に引数で分割数を与えるだけです。

例) たとえば、分割数 1000 にしたければ、

./ogl-bench  1000

とします。


【計測結果】
計測の結果を図1に示します。図1のグラフの縦軸は「毎秒何フレーム描画できるのか」を示すフレームレート(FPS)となります。FPSの数値が大きいほど高速に描画していることを示しています。
横軸は球物体のポリゴンの分割数になります。経度・緯度方向それぞれに分割しますので、分割数の2乗でポリゴン数が増加します。

図1の結果からみるとポリゴンの分割数を増やしていくとLinux側の方がWindowsと比較して速度の低下割合が大きいことが分かります。
また、今回の計測環境では、Linux側は分割数が1000を超えると速度が遅くなりすぎて計測不能になりました。

それに対してWindows側は分割数を増やしていっても 360fpsあたりで速度低下が止まります。(FreeBSDでもWindowsとほぼ同様な結果になります



111230bench-log.jpg



















図1.球物体の分割数による LinuxとWindowsのOpenGLの描画速度の比較



【計測結果からわかったこと】
実験の結果から、Linuxは他のOS(今回はWindwos)と比較して、ポリゴン数の増加に対して処理速度の低下が大きいことが分かります。
先の記事でお示ししたLinuxのレンダリング速度が遅いという問題の原因はポリゴン数にありました。

田中ゼミが「次世代3DCGプロジェクト」で開発しているソフトウェアで描画しているCG物体は、美術品や人の肌等を精密意計測したものなので、ポリゴン数が極めて多いためLinuxで速度低下が顕著に表れたと考えられます。



【計測の条件】
111230bench-pc.JPG























※ベンチーマークプログラムを動作させて速度を検証している様子

<ハードウェア>
 ドスパラ Prime Note PC Galleria MR6 
 CPU: Intel Core i7 2720QM
 GPU: nvidia GeForce 540M (2GB)
 メモリ: 8GB

<OS>
 Linux :Ubuntu Linux 11.10 64bit
 Windows: Windows 7 Professional 64bit SP1 

<ドライババージョン>
 Linux: nvidia driver  290.10
 Windows: nvidia driver 285.62(ノート用最新版)

<特に設定したこと>
 Linux:
 (1) デスクトップ環境を LXDEに変更(余計な負荷を減らすため)
 (2) 3D Desktop 環境 (Compiz)がOFFになっていることを確認

 Windows:
 (1) 垂直同期:強制オフ (これをしないと 60fps固定になる)


【2012年1月4日 追記、この記事の続編はこちら】

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

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



グラボの特性比較(GeForce vs Radeon)

大変、光栄なことですが田中ゼミのブログ(GPUのベンチマークなど)に興味を持たれたということで、株式会社ゴーガの小山さんという方が、東京からわざわざ長野大学までお越しくださいました。

遠いところをわざわざお越しいただきまして、
まことにありがとうございました。

小山さんはLinux上でグラフィックスのベンチマークをしているところが
珍しいということでこちらのリンクの記事にご興味を持たれたようです。

しかも、わざわざお越しいただいた上に、NVIDIA Quadro 2000とAMD Radeon HD6950といった2つのGPUを、ご提供いただきました。

重ねて、お礼を申し上げます。

quadro-radeon.JPG



















さて、せっかくご提供いただいた2つのグラボについて、早速ベンチマークをとってみました。

ただ、今回は2つのグラボの特性比較となりますので、まずはWindows 7 上で
動作比較となります。

いろいろ2つのグラボの速度を比較してみると、それぞれ面白い特性があることがわかりました。

【ベンチマーク条件】
◆ハードウェア
 OS: Windows 7 64bit 
 CPU: Intel Core i7  920(2.66GHz)
 メモリ: DDR3 3チャンネル 9GB
 GPU: nvidia と amdそれぞれを交換して使用

◆ドライバ
 nvidia : Quadro/Tesla driver 285.58
 amd :  Catalyst 11.9 

◆グラフィクスAPI
 OpenGL + GLSL(バージョンはドライバに対応)
 

◆使用ソフトウェア
 田中ゼミで開発しているソフトウェア


【ベンチマーク結果】

ベンチマークに使用したソフトウェアは、過去のこちらのリンクの記事と同じソフトウェアを用いました。

(1) レイトレーシング

こちらのソフトは、物体間の相互反射を計算するためにGPUをそのまま使うのではなく、GLSLを使ってGPGPU的に記述したものです。

※このソフトでは、本来GPUに任せてしまうような一般的な処理も含めて、すべて独自に実装したプログラムをFragment Shader上で計算しています。

◆ AMD Radeon HD6950 の結果
 アンチエリアシング ON  : 171.5fps
 アンチエリアシング OFF: 173.0fps

◆NVIDIA Quadro 2000の結果
 アンチエリアシング ON: 測定不能(遅すぎるよう)
 アンチエリアシング OFF: 6.9fps


(2) 美術品のCG再現システム(金属物体)

形状の計算などは通常のGPU上のグラフィックスパイプラインで計算し、
光反射モデルの部分はFragment Shader上に独自実装しています。

※金属独自の光沢や粗さの計算処理負荷が大きいことが特徴となります。

nvidiaのドライバの方はアンチエリアシングの強さを細かく設定できたので2種類のアンチエリアシングそれぞれを載せています。

◆ AMD Radeon HD6950 の結果
 アンチエリアシング ON  : 21.6fps
 アンチエリアシング OFF: 59.8fps

◆NVIDIA Quadro 2000の結果
 アンチエイリアシング ON 64x(16xSS, 4xMS): 3.0fps
 アンチエイリアシング ON 32x(4xSS, 8xMS): 5.1fps

 アンチエリアシング OFF: 103.4fps

(3) 美術品のCG再現システム(プラスチックや塗料など)

形状の計算などは通常のGPU上のグラフィックスパイプラインで計算し、
光反射モデルの部分はFragment Shader上に独自実装しています。

※拡散反射成分の計算に放射照度マップと呼ばれる一種のルックアップテーブルを使って高速化しています。

◆ AMD Radeon HD6950 の結果
 アンチエリアシング ON  : 23.7fps
 アンチエリアシング OFF: 35.4fps

◆NVIDIA Quadro 2000の結果
 アンチエイリアシング ON 64x(16xSS, 4xMS): 2.6fps
 アンチエイリアシング ON 32x(4xSS, 8xMS): 4.4fps

 アンチエリアシング OFF: 75.8fps


(4) 人間の肌のCG再現システム(デジタルコスメ)

形状の計算などは通常のGPU上のグラフィックスパイプラインで計算し、
光反射モデルの部分はFragment Shader上に独自実装しています。

※肌独自の柔らかい陰影を表現するための表面下散乱現象の計算処理負荷が大きいことが特徴となります。

◆ AMD Radeon HD6950 の結果
 アンチエリアシング ON  : 24.0fps
 アンチエリアシング OFF: 34.5fps

◆NVIDIA Quadro 2000の結果
 アンチエイリアシング ON 64x(16xSS, 4xMS): 6.1fps
 アンチエイリアシング ON 32x(4xSS, 8xMS): 9.2fps

 アンチエリアシング OFF: 147.0fps

【実験のまとめ】
まず全体の特性の傾向としてわかったことは、 AMD Radeon はレイトレーシング処理が大変高速なことです。

 (1)のソフトウェアでは、本来GPUに任せるような処理(ライティングや幾何変換)もすべて自前で計算しているため、すべてFragment Shader上で計算処理を行っています。
そのためFragment Shader 上で通常のGPUプログラムでは行わないような複雑な処理を行っていますが、こういった処理はRadeonが得意なようです。

それに対してNVIDIAの方は、通常のGPUのグラフィックスパイプラインに近い処理は高速に実行できるようです。アンチエリアリングOFFの状態では処理結果が逆転しています。

しかし、NVIDIAの問題点としてアンチエリアシングをかけると急激に速度が低下するようです。

以上、田中ゼミで開発いているソフトについて、2つのグラボについてベンチマーク試験を通して、その特性を比較してみました。

今後研究を進めるうえで貴重なデータが取ることができました。



 

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

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



後学期の授業に向けて田中先生の授業の準備を手伝っています。

今回の田中ゼミの学生の仕事は、授業で使う仮想環境を構築することです。

 

後期のコンピュータビジョン、オブジェクト指向、プログラミング関係の授業では、unix系のOS(FreeBSD) を使って授業を行うらしいです。

と、いうわけで田中ゼミ仕様のグラフィックスソフトウェア開発に特化したシステムを構築してみようと思います。

 

こちらが今回VirtualBox上に構築した仮想PCが動作している様子です。Windows上でFreeBSDが動作していることがわかります。

FreeBSDonVirtualBox.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【仮想PCの構築】

今回仮想環境を構築するためのソフトウェアとしてVirtualBox 3.2.8 を使用します。

授業で提供する開発環境は以下のようになります。

  1. Windows上で仮想PCを用意して、その上にFreeBSD 8.1-stable(32bit)をインストールします。
  2. 仮想PC上のメモリはとりあえず512MB,HDDは20GBで動かすことを目指します。
  3. 配布時の仮想ディスクイメージは8GB以下に抑える(片面二層のDVD-Rに入れるため)
  4. デスクトップ環境は軽量化を意識して xfce 4.6.2
  5. 画像処理ソフトウェアは、ラスター方式はgimp 2.6.10, ベクター方式は inkscape 0.47
  6. 3DCG作成には Blender
  7. 開発環境として Eclipse
  8. コンピュータビジョン用ライブラリ OpenCV 2.1.0 の最新版
  9. emacs 等のテキストエディタを用意
  10. グラフ作成にはgnuplot 4.4.0 
  11. 田中ゼミの開発環境(独自のライブラリやコマンド等)をインストール

【VirtualBox上にFreeBSDをインストール】

VirtualBox上にFreeBSDをインストールするのは比較的楽なのですが、その後、ソフトウェアのインストールをしていかなければなりません。

FreeBSDでは通常は ports と呼ばれるシステムを使って、ソースコードからコンパイルしてインストールするのですが、VirtualBox等の仮想環境上では処理速度が遅いので packege と呼ばれるコンパイル済みのアプリをインストールします。

packageを使った場合、ports からインストールするより少しバージョンが古くなってしまう場合があります。

 

【アプリケーションソフトのインストール・設定】

FreeBSDは普段から使いなれたOSなので、特に設定等で困ることはありませんでした。

OSのインストール作業が終わると、あとはアプリ等のインストール作業に入ります。

(1) 環境変数の設定

研究室から外部のサーバへアクセスする場合、プロキシ経由でないといけないので以下のように環境変数を設定します。

setenv HTTP_PROXY http://プロキシサーバ名:port番号

これを一つ設定しておけば、ftp 等も共通の設定で使用されます。

 

次にアプリをどこのサイトからインストールするか設定します。

setenv PACKAGESITE  インストール元のサーバ名(日本国内の速度の速いところを設定)

 

(2) packageのインストール

こちらも非常に作業は簡単。以下のように pkg_add コマンドを使えば自動的にネットワークから依存関係も含めてアプリをダウンロードしてインストールしてくれます。

pkg_add -r パッケージ名

 

(3) 起動画面の設定

FreeBSDは何も設定していなければ起動時が地味で、デバイスの認識状況等が黒画面に次々と表示されていきます。

これだと味気ないので、Linuxのディストリビューションの多くが行っているような起動画面を表示させるようにしたいと思います。

 

こちらは起動画面を設定した後のFreeBSDの起動時の様子です。

FreeBSDのロゴも表示されてカッコよくなっています。

virtualbox3_s.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【起動画面の設定方法】

1024×768サイズのbmpファイル(256色インデックスカラーになっているもの)を用意します。

そのファイル名を bsd.bmp とすると、それを/boot/kernel/にインストールします。

 

その後、/boot/loader.conf に以下の設定を追加します。

bitmap_load="YES"
bitmap_name="bsd.bmp"
splash_bmp_load="YES"
vesa_load="YES"

 

(4) ログイン画面の設定

せっかく起動画面まで作ったので、次はログイン画面を設定します。

こちらもグラフィカルにログインできるようにします。

一般にgnome等ではgdmが使われますが、いろいろ余計なソフトウェアもインストールされるという問題があります。

田中ゼミのお気に入りは、slim と呼ばれるシステムでFreeBSDのテーマ(画面のデザイン)を使います。

slimのインストール方法

・pkg_add -r slim

・pkg_add -r slim-themes

 

slimの設定方法

/usr/local/etc/slim.conf の中の current_theme の値を fbsd にする。

つまり以下のような感じです。

current_theme       fbsd

virtualbox2_s.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(5) 解像度を変更したり、マウスをシームレスモードにできるようにする(Guest Additions の設定)

(5-1) Guest Additions のインストール

VirtualBoxでは、GuestAdditionsと呼ばれる仮想PC用のドライバのパッケージがあり、これをインストールすると画面の解像度が自由に変更できたり、マウスカーソルをHost OSと Guest OSで自由に行き来できるシームレスモードが使えるようになります。

 

他のOSと異なりFreeBSDでは、このGuest Additions は、portsまたは、packageで用意されています。

インストール方法は、

pkg_add -r virtualbox-ose-additions

と入力すれば自動的にインストールされます。

 

次に次回起動時以降も自動的にドライバを認識させるために

/boot/loader.conf に

vboxguest_load="YES"

の一行を追加します。

 

(5-2) ドライバの有効化

その後、インストールしたドライバを有効にするために以下のようなコマンドを入力します。

Xorg  --configure

 

その後、一度、再起動すれば設定は完了です。

 

【とりあえず、動作確認している様子】 

一通りの設定が終わって動作確認をしている様子です。

それにしても散らかっている研究室です。

100923kakunin.jpg 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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



1  2  3

このアーカイブについて

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

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

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

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

長野大学公式サイトへ