bf-blender v2.33a / intel compiler optimized (windows)
投稿日時 2004年06月02日 | カテゴリ: テストビルド
|
bf-blender v2.33a / intel compiler optimized (windows)
従来Elysiunで活躍されていたAntares氏が、Blender.org::Testing Buildsへと場を移されました。
皆さんこんにちは。 Ton氏から私にこの話題についてのスレッドを作る旨を告げられました。おそらくあなた方の何人かは私がした、もしくは行っている編集版を知っているでしょう。
私の編集版のBlenderは特別にインテルコンパイラを使用しており、コードの書き換えや再構成といった基本的な改良から、分岐予測、ループ展開、現在のインテルやAMDプロセッサのパイプライン技術を使用した並行命令実行、もしくは、可能であれば浮動小数点数演算と整数演算の並行実行を行っています。
しかし、主な利点はSSE(Streaming SIMD Extension)やSSE2のような、インテル(そしてAMD)プロセッサの特別な命令セットを使用した結果にあります。これらの命令セットによる8×128-bitレジスタへの一括設定はMMX技術の後継で、SIMD(Single Instruction Multiple Data)の実行をサポートします。
これはCPUが内部キャッシュにある同じ演算(例えば配列YのベクトルにXをループ内で加えるなど)を実行できることを意味します。(訳注:当方が端折りすぎてるかも)
Blenderは単精度浮動小数点単位を使用しており、プロセッサのサポートするSSE2の計算はデータ上の正確な演算を3ステップ(ロード、実行、ストア)で行えます。通常は少なくとも12ステップは必要になります。
私のBlenderバージョンはまた自動的にCPUを判別するようコンパイルされており、何のCPU上で走っているかをチェックし、パフォーマンスを向上するのに最適な命令セットを使用します。
これは私の版がP-P4やAMDプロセッサを含むいかなるx86CPUでも走ることを意味します。
MSVC++の主なコンパイラ設定は以下のとおり: /Qaxw: CPU自動判別と可能ならSSE(2)を使用します /O3: 最大スピード最適化とハイレベル最適化 /Ob2: どの関数でもコンパイラの判断でインライン展開化されます
これらの設定は以下のモジュールでは動作しません: FTF_ftfont KX_ketsji SG_SceneGraph
私はまたIntelコンパイラを特にBlenderカーネル関数(モジュール:BKE_blenkernel)とプリマリーレンダリング関数(モジュール:BRE_render)のプロファイルのために使用しています。これはまたパフォーマンスの向上とバイナリサイズの縮小も少し行われます。
このすべてが通常レンダリング時間を20-60%縮小し、GUIの反応を少しだけ向上してくれます。
このコンパイラのひと月完全な機能を使用できるデモバージョンがwww.intel.comにあります。このコンパイラをどうやってincludeし呼び出すかについてのすべての重要なドキュメントがデモバージョンに入っており、30秒以内でできます。
Elysin内のスレッド: http://www.elysiun.com/forum/viewtopic.php?t=17626
Windowsバイナリ: http://www.silentthunder.de/files/blenderintel.zip
この中には他に私がblenderのいくつかの関数をアセンブラで書き直したものがあります。その一つが下記の関数です。 (訳注:MTC_Mat4MulMat4関数(4x4行列同士の内積)が続きますが、長いので省略します。参照したい方は原文をどうぞ)。
レンダリングプロセスにプロファイラをかけた後、この関数が非常に多く呼ばれていたため、私はメモリ整列化のためにSSE2命令セットで書き直しました。これがその結果です: (訳注:前記同様SSE2を使用したアセンブラコードが記述されていますが省略します)。
両ルーチンを単精度浮動小数点の乱数を用いた結果が下記です。
標準のコード: 2.934秒で51000回実行 私のコード: 2.936秒で13000000回実行
標準版より250倍も早くなっています。^^
私はこの投稿が長文でないことを願っています。 おつきあいいただきありがとうございます。
このバイナリは必要なDLLなどが含まれていません。2.33aなどのディレクトリから必要なものをもってくるか、blender.exeのみをblender-i.exeなどに変更し、libmmd.dllとsolid.dllとともにコピーして下さい(このdllはbf-blenderとは競合しません)。 下記は当方の環境(WindowsXP、Celeron1.7GHz、GeForceFX5200)での比較をしてみた例です。別に作業しながらだったので、あくまで参考程度です。 (AO、340x160、OSA11) - 2.33a: 6分02秒 - intel: 4分55秒
こうなると、bf-blenderへの組み込みにも期待されますが、記事中によると、すでにAntares氏はTon氏とその件について話をされているようです。 Ton氏はまず、そのことに他の開発者も興味を示してもらえるように最適化の仕組みを公開すること、そして、他の開発者がテストできるようにし、最適化による影響の分析と、通常のbf-blenderと同品質にすることが統合のために必要だとされているようです。また、ライセンス購入も寄付でまかないたいとのことです。 Antares氏は、今回の記事で最初の目的は達成したので、今後はインテルコンパイラの購入と、他の開発者へ情報を公開していきたい、と書かれています。
|
|