お世話になっております。
表題の通り、現在タイトルのベンチマークスコアを計測したオプション自動設定機能を作成しているのですが、こちらのスコアについて実行のたびにばらつきが生じ、最悪のケースでは±50ほどの差が発生しております。
これにより、ベンチマークの結果に一貫性が保てず、実行するたびに異なるスケーラビリティが設定されるケースが存在し、問題となっております。
<br/>
こちらの問題はすでにいくつかのスレッドで報告されており、エンジンの問題かと思われるのですが、こちらの計測についてどのような仕組みで計測を行っているのか共有お願いできますでしょうか。
[Content removed]
<br/>
また、ばらつきが発生してしまうとして、可能な限り一貫性を保つにはどのような実装でベンチマークを計測を実装するのが妥当か、共有お願いできますでしょうか。
<br/>
お手数をおかけいたしますが、ご確認よろしくお願いいたします。
再現手順
1.添付プロジェクトを起動する
2.PIEを起動しnum3を押す
3.GPUパフォーマンスの数値を確認する
4.2-3を繰り返しパフォーマンスのスコアが一定の数値にならないのを確認する。
ご回答ありがとうございます。
ベンチマークの実行内容について共有ありがとうございます。
スコアのブレについてですが、シッピングパッケージを作成して実行しましたが、初回の計測から連続して計測すると徐々に初回のスコアから乖離していくような挙動を確認しています。
外的な要因やシーンによってスコアがブレる可能性を考慮する場合、アプリケーション内の一定のシーンでベンチマークを回し、そのスコアを使いまわして自動設定を行う方法で実装し、設定項目がばらつくのを回避しようと考えております。
特に毎回ベンチマークを回す必要がなければ、こちらの実装で進めようかと考えておりますが、もし自動設定の度にベンチマークを回す方が運用として正しい場合は回答いただけると助かります。
お手数をおかけいたしますが、ご確認よろしくお願いいたします。
ご回答ありがとうございます
スコアのブレとなる原因について承知いたしました。
とりいそぎ、こちらで提示させていただいた一定環境下で図ったスコアを使いまわして自動設定を行う方式でプロジェクトの方で検証させていただきます。
問題があればこちらのスレッドに連絡いたしますので、一旦こちらの回答を最良の回答としてクローズとさせてください。
ご対応ありがとうございました。
お世話になっております。
本件返信にお時間を頂いてしまい申し訳ございません。
ベンチマークの処理に関しては、以下で実装されている7種類のシンプルなシェーダーを複数回(IterationCount数)実行した結果のタイムスタンプから数値化を行っております。
.\Engine\Source\Runtime\Renderer\Private\GPUBenchmark.cpp
.\Engine\Shaders\Private\GPUBenchmark.usf
こちらの手元では50程のスコアのブレは確認できていない状態となりますが、
PC上ではバックグラウンドで動いている他の処理から影響を受ける可能性もあるため、負荷の高いUE以外アプリケーションが動作していないか、またPIEではなくStandaroneやパッケージでの動作をご確認いただけますと幸いです。
お手数おかけしますが、よろしくお願いいたします。
問題の切り分け確認を行って頂きありがとうございます。パッケージでも同様の状態とのこと承知いたしました。
GPUに関しては温度によって性能が可変となるサーマルスロットリングが行われているため短時間の計測では適切な値が測れないケースがございます。
※外部ソフトにはなりますがGPU-Z等で確認可能な温度、ホットスポット等を確認頂くと、温度が高くなっていくほどベンチマークのスコアが下がってしまっている状態が確認できるかもしれません。
この問題への対応方法としましては、検討頂いているようなプロジェクトが想定している負荷でのベンチマークが望ましく、また、ある程度負荷をかけている時間を長くすることでPC環境が実際に発揮できる性能を測れる見込みです。(ファン等は温度が上がり次第動作するため)
お手数おかけしますが、一定のシーンでベンチマークを行うといった方法を検討いただけますと幸いです。
よろしくお願いいたします。
ご対応ありがとうございます。
本件は一度クローズとさせて頂きますが、また何かございましたらお気軽にご相談ください。
よろしくお願いいたします。