まーにゃ@エンタメ系火事場エンジニアの日々

数々の「火だるまプロジェクト」を安請け合いし何度でも復活する 「自称・不死身のエンジニア」の物欲まみれの日々をつづる

【PC編】「2024-10-02@画像処理てんこ盛り@PCSX2」と「負荷分散@AMD Radeon iGPUとNVIDIA RTX3060」と私

2024-10-02:
PCSX2 NIGHTLY BUILD
まだ、しょーこりもなく実験しています。
今回のテーマ>
・PCSX2のレンダリングオプションをてんこ盛りONにして
 アップスケーリングを5倍(最大設定)にして
 画像処理の負荷を上げたとき72FPSは保てるか?
・AMD Radeon 内蔵GPUと
 NVIDIA RTX 3060外付けGPUで
 負荷分散効果は??
スクリーンショット 2024-10-02 170404.jpg
結論>
・画像処理オプションをてんこ盛りONにして
 負荷を上げても72FPSから低下はしない。
・AMD Radeon 内蔵GPUの負荷は、10%未満。
・NVIDIA RTX 3060の負荷は1%~2%程度
副次効果>
・アップスケーリング5倍なので、画像は美しい。
・内蔵GPUも外付けGPUも温度は、50度前後で推移
ー>環境にやさしい。
※DirectX12の仕様を調べてみると
複数のGPUがある場合、負荷を分担させて処理できるAPIが
提供されているようです。
<DirectX12場合のタスクマネージャ表示>
スクリーンショット 2024-10-02 170512@DX12.jpg
<VALKANの場合の負荷表示>
スクリーンショット 2024-10-02 170315@VALKAN.jpg
DirectX12でもVALKANでも、複数のGPUで負荷の分担ができているようです。
Copilotに質問を出してみると:
(1)
VALKAN というグラフィックのAPIをごぞんじですか

回答を生成しています…

Copilot が送信しました:

はい、**Vulkan(ヴァルカン)**というグラフィックスAPIについて知っています。Vulkanは、Khronos Groupが策定した次世代のグラフィックスおよびコンピュートAPIです。2016年に初めてリリースされ、PC、コンソール、モバイルデバイスなど、さまざまなプラットフォームで高効率かつクロスプラットフォーム型のアクセスを実現することを目的としています12

Vulkanの主な特徴は以下の通りです:

(2)複数の異なる会社のGPUに対してVALKANから複数のGPUを使用することはできますか?

回答を生成しています…

Copilot が送信しました:

はい、Vulkanを使用して複数の異なる会社のGPUを同時に利用することが可能です。これを実現するためには、VulkanのマルチGPU機能を活用します。以下にその概要を説明します:

  1. バイスグループの作成:Vulkanでは、異なるGPUを一つのデバイスグループとして扱うことができます。これにより、複数のGPUを一つの論理デバイスとして操作できます。
  2. 負荷分散レンダリングや計算タスクを複数のGPUに分散させることで、パフォーマンスを向上させることができます。
  3. クロスベンダー対応:VulkanはクロスプラットフォームAPIであるため、異なるベンダーのGPU(例えば、NVIDIAAMDGPU)を同時に使用することが可能です。

ただし、実装には高度なプログラミング技術が必要であり、各GPUの特性や互換性を考慮する必要があります。また、すべてのアプリケーションやゲームがこの機能をサポートしているわけではないため、具体的な使用ケースに応じた調整が必要です。

(3)DirectX12でも複数の異なる会社のGPUを使用することはできますか

回答を生成しています…

(4)EMAをソフトウエアから使用する場合、どちらのGPUに処理させるかをプログラムが明示的に指定する必要はありますか? ダイナミックロードバランシングされるのでしょうか?

回答を生成しています…

Copilot が送信しました:

DirectX 12のExplicit Multi Adapter (EMA)を使用する場合、プログラムがどちらのGPUに処理を割り当てるかを明示的に指定する必要があります。EMAは名前の通り「Explicit(明示的)」であり、開発者が各GPUに対してどのタスクを割り当てるかを細かく制御することが求められます。

具体的には、以下のような制御が必要です:

  • リソースの割り当て:各GPUに対してどのリソース(テクスチャ、バッファなど)を使用するかを指定します。
  • コマンドの発行:各GPUに対してどのコマンドを実行するかを指定します。
  • 同期の管理:複数のGPU間での同期を適切に管理する必要があります。

一方で、DirectX 12自体にはダイナミックロードバランシングの機能は組み込まれていません。開発者が自らの手で負荷分散を実装する必要があります。これにより、最適なパフォーマンスを引き出すための柔軟性が提供されますが、その分、実装の複雑さも増します。

(5)VALKANではどうですか

回答を生成しています…

14年前はCORE2DUOでびっくりしてたのにCPUのマルチコアはあたりまえ、
グラフィック処理も、メーカをまたいで、クロスベンダーでGPUを組み合わせて使用できるようになったんですね。。
すばらしい。。
では・・また・・:_;)/