d3d:d3d12:multiadapter
Multi-Adapter
SLI/CrossFire と異なり非対称な GPU を利用することが可能です。 CPU 内蔵 GPU や乗り換えで余っているビデオカードなど、低コストで性能の上乗せができるようになります。 ただしアプリケーション側の対応が必要です。 通信や同期のコストがかかるため、レンダリング側 GPU と独立したタスクの実行に向いています。
- 例
- GeForce + RADEON
- Intel HD Graphics + GeForce/RADEON
- 等 (ただし Direct3D 12 対応 GPU のみ)
内蔵 GPU を有効にする
CPU 内蔵 GPU は、外付け GPU 利用時に無効化されている場合があります。BIOS 設定で変更できます。
- BIOS → Advanced 等から Integrated Graphcis を選択
- Integrated GPU (iGPU 等) の有効化を行う
非対称 Multi-Adapter の概要
- Adapter を列挙して、それぞれ ID3D12Device を作成。
- 各 Device 毎にリソースの転送や Object の生成等を行う。Device を跨いで Object の使い回しはできない。
- 同期用に Device 間で共有可能な Fence の作成
- 転送用に Device 間でどちらからもアクセス可能な Shared Resource を作成
- Device 毎に CommandQueue , CommandList それぞれ作成して実行
- それぞれの Queue では Shared Fence を使って完了待ちが可能
- 結果を Shared Resource を通して合成
Adapter の列挙
IDXGIFactory1* ifactory= nullptr; CreateDXGIFactory( IID_PPV_ARGS(&ifactory) ); for( unsigned int ai= 0 ; ai< MAX_ADAPTER ; ai++ ){ IDXGIAdapter1* iadapter= nullptr; if( ifactory->EnumAdapters1( ai, &iadapter ) == DXGI_ERROR_NOT_FOUND ){ break; } ~ } ifactory->Release();
Shared Resource の作成
共有可能な Object は、Resource, Heap, Fence に限られます。
d3d/d3d12/multiadapter.txt · 最終更新: 2015/09/21 03:57 by oga