From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.

GPU レンダリング

はじめに

GPU レンダリングは CPU の代わりにグラフィックカードを使用してレンダリングさせることができるようにします。最近の GPU は非常に多くの処理を行うよう設計されているため、これによりレンダリングのスピードアップが期待できます。一方、限られたメモリにより、複雑なシーンのレンダリングにいくつか制限があったり、表示とレンダリングに同じグラフィックカードを使用した時のインタラクティブ性に問題があります。

Cycles は二つの GPU レンダリングモードを持っています。CUDA は nVidia のグラフィックカードで望ましい方法で、OpenCL は AMD/ATi のグラフィックカードでのレンダリングに対応する意味であります。ただしその実装は実験段階で、現在アンビエントオクルージョンのような画像のレンダリングにのみ対応しています。

Userプリファレンスによる設定

GPU レンダリングを使用するには、Userプリファレンスに行き、System タブにある、Compute Device(s)を選択します。次に、各シーンで Render プロパティ内で使用する CPU もしくは GPU レンダリングを設定できます。

CUDA

NVidia CUDA は、NVidia のグラフィックカードでのGPU レンダリングに対応しています。GTX 2xx (shader model 1.3)以降のグラフィックカードに対応していますが、 GTX 4xx もしくは GTX 5xx(shader model 2.x)のカードの使用を推奨します。これらのみがスピードアップが期待でき、初期のカードでは大抵、単にCPU を使用するよりも遅いからです。

Cycles はすべての OS において、最新のドライバのインストールが必須です。皆さんの OS にあったバージョンの Blender をダウンロードしてください。つまり、64ビットの OS では64ビット版 Blender をダウンロードしなくてはなりません。

CUDA カードとシェーダモデルリスト

古いカード

Mac と Linux では実行時に、公式に対応していないカード用のカーネルのコンパイルができます。GeForce 8xxx、9xxx カードは公式リリースには含まれていませんが、Experimental(実験的)機能 を有効にすることで動作するかもしれません。

そのためには、CUDA toolkit version 4.0 (64ビット版)以降をインストールする必要があります。他のバージョンも動くかもしれませんが、非対応です。 初回のレンダリングの終了後、(Blender は)カーネルを皆さんの GPU アーキテクチャ用にコンパイルしないといけません。Cycles は標準的な GPU カーネルに比べ非常に複雑であるため、コンパイルは恐らく40秒から数分かかり、グラフィックカードモデルによっては、メモリ使用量が約2GBにもなるでしょう。

OpenCL

まだ実装は完了しておらず、実験的(Experimental)機能とされています。

OpenCLを使用したレンダリングはまだ完全には対応していません。ただし随時作業中であり、もっと多くのグラフィックカードに対応できるでしょう。AMD OpenCL コンパイラにより私たちのフル・カーネルがコンパイルされないため、現在、シンプルなクレイレンダリングのみ対応しています。

初回のレンダリング終了後、(Blender は)カーネルを皆さんの GPU アーキテクチャ用にコンパイルしないといけません。Cycles は標準的な GPU カーネルに比べ非常に複雑であるため、コンパイルは恐らく40秒から数分かかり、グラフィックカードモデルによっては、メモリ使用量が約2GBにもなるでしょう。

OpenCL version 1.1以上が必要です。

よくある質問と答え

レンダリング中、Blender が無反応になるのはなぜ?

グラフィックカードがレンダリング中、ユーザインターフェイスを再描画できなくなり、インタラクティブに反応しなくなります。私たちはこの問題を、GPUからコントロールをできるだけ頻繁に奪回することで回避しようとしていますが、特に重いシーンでは完全にスムーズなインタラクティブ性は保証できません。これはグラフィックカードの真の解決策が存在しない制限の一つですが、将来的には若干改善できるかもしれません。

できるなら、二つ以上のGPUを導入し、一つを表示用、もう一つをレンダリング用として使用するのがベストでしょう。

なぜCPU上でレンダリングされたシーンがGPU上ではレンダリングされないのでしょう?

おそらく原因は色々ありますが、もっとも一般的なのはみなさんのグラフィックカード上に十分なメモリがないことでしょう。現在、グラフィックカードのメモリ量にあったシーンのみレンダリングでき、これは通常 CPU より少ないです。例えば、8k、4k、2k、1kの画像テクスチャでは、それぞれ256MB、64MB、16MB、4MBのメモリを占めることに注意してください。

私たちは GPU メモリより大きなシーンに対応したシステムを追加する予定ですが、これはすぐには追加されません。

複数の GPU をレンダリングに使用できますか?

まだ対応していませんが、そう遠くないうちに追加することを計画しています。

複数の GPU では利用可能なメモリ量は増えますか?

いいえ。各 GPU は自身が保有するメモリのみアクセス可能です。

NVidia と AMD、CUDA と OpenCL ではどれがレンダリングが高速ですか?

現在、nVidia + CUDA がレンダリングが高速です。こうなる根本的な理由はなく、CUDA 固有の機能も使用していません。コンパイラがもっと成熟すれば、大きなカーネルにもっとよく対応できると思われます。OpenCL については作業を行うフルカーネルがまだないため、対応はまだ途中で、あまり最適化もされていません。

エラーメッセージについて

Unsupported GNU version! gcc 4.5 and up are not supported!

Linux では、GCCのバージョンによってこのエラーが出ることがあります。

/usr/local/cuda/include/host_config.h から以下の行を削除してください。

#error -- unsupported GNU version! gcc 4.5 and up are not supported!
CUDA Error: Invalid kernel image

このエラーが Windows 64ビットで出た場合、32ビット版ではなく、64ビットビルドの Blender を使用してるかを確認してください。

CUDA Error: Out of memory

これは大抵の場合、シーンを GPU 上に格納するためのメモリが足りないことを示します。現在、グラフィックカードのメモリ量にあったシーンのみレンダリング可能で、これは通常 CPU より少ないです。詳細は前述してあります。

The NVIDIA OpenGL driver lost connection with the display driver

…異常な Windows のタイムアウト制限の所為で続行が不可能になっています。

GPU を表示とレンダリングの両方に使用している場合、Windows は GPU がレンダリングを計算できる時間を制限します。特に重いシーンでは、Cycles は非常に多くの GPU 時間を使うことがあります。▼Performance の Tile Size を小さくすれば、この問題が軽減されるかもしれませんが、真の解決策は、表示とレンダリングに別々のグラフィックカードを使用することです。