maxresdefault



スポンサードリンク




グラボの性能を測るベンチマークとして定評がありリーク情報でも信憑性の高いFireStrike等を含む3DMarkの新たなベンチマーク「Time Spy」が公開されましたが、このベンチによるDirectX12や非同期演算に関するグラボ性能の測定に信憑性があるのか、Steamの掲示板上で物議を醸しています。


ソース:http://steamcommunity.com/app/223850/discussions/0/366298942110944664/

h0rnyfavn(スレッド開設者)

1.
All of the current games supporting Asynchronous Compute make use of parallel execution of compute and graphics tasks. 3D Mark Time Fly support concurrent. It is not the same Asynchronous Compute....

So yeah... 3D Mark does not use the same type of Asynchronous compute found in all of the recent game titles. Instead.. 3D Mark appears to be specifically tailored so as to show nVIDIA GPUs in the best light possible. It makes use of Context Switches (good because Pascal has that improved pre-emption) as well as the Dynamic Load Balancing on Maxwell through the use of concurrent rather than parallel Asynchronous compute tasks. If parallelism was used then we would see Maxwell taking a performance hit under Time Fly as admitted by nVIDIA in their GTX 1080 white paper and as we have seen from AotS.

2.
A proper async compute is all about "parallelism" which is not possible on nvidia cars hence why all these tricks. ;)

【主張の要約】

Time Spyでは現在の実ゲームで採用されているような非同期演算が採用されておらず、NVIDIAのグラボに都合のいい仕様に仕立て上げられている。NVIDIAグラボではTime Spyでは非同期演算が使われていない。Pascalで性能が上がることからわかるように、NVIDIA Maxwell以下のグラボでは非同期演算ではなく、ダイナミックロードバランシングのようなコンテキストスイッチが使われている。


FM_Jarnis(ベンチ開発者)

1.
Yes it does.
http://www.futuremark.com/downloads/3DMark_Technical_Guide.pdf
It was not tailored for any specific architecture. It overlaps different rendering passes for asynchronous compute, in paraller when possible. Drivers determine how they process these - multiple paraller queues are filled by the engine.

The reason Maxwell doesn't take a hit is because NVIDIA has explictly disabled async compute in Maxwell drivers. So no matter how much we pile things to the queues, they cannot be set to run asynchronously because the driver says "no, I can't do that". Basically NV driver tells Time Spy to go "async off" for the run on that card. NV driver runs asynchronous tasks in one queue on Maxwell, similar to if they were submitted in one queue ("async off" in Time Spy). If NVIDIA enables Async Compute in the drivers on Maxwell, Time Spy will start using it. Performance gain or loss depends on the hardware & drivers.

2.
Yes it is. But Engine cannot dictate what the hardware has available or not.

Async compute is about utilizing "idle" shader units. Slower the card, less idle ones you have. Less capable hardware may also be hard pressed to utilize all of them even if the engine asks nicely. Also there may be limitations as to what workloads in the engine *can* run in parallel. Yes, Time Spy is very graphics-heavy, since, well, its a graphics benchmark. But even there many of the rendering passes have compute tasks that can use this.

Ultimately some AMD cards gain quite a bit (ie. they have a lot of shader units idling while rendering and they are very good at using them for the available paraller loads). Some AMD cards gain less or not at all (either less capable at paralleriziing, less idle shader units or no idle shader units at all - for example a HD 7970 is hard pressed to have any to "spare")

Some NVIDIA cards cannot do this at all. The driver simply says "hold your horses, we'll do this nicely in order". Some NVIDIA cards can do some of it. They might use another way than AMD (more driver/software based), but the end result is the same - the card hardware is capable of doing more through some intelligent juggling of the work.


【主張の要約】
Time Spyでは非同期演算以外のコンテキストスイッチやロードバランシングなどの処理が行われることはあるが、特定のアーキテクチャ(NVIDIAグラボやAMDグラボ)に特化したものではない。TimeSpyは非同期演算に対応するが使うかどうかはドライバ次第である。しかしAsyncの有効・無効によらず最終的に出力されるものは同じである。
NVIDIAのMaxwell以下グラボではドライバ側が強制的にAsyncを無効化し、ドライバが調停して(並列処理ではなく)1つのキューで処理を行う。Asyncはアイドル状態のシェーダーを有効活用することであり、仮にAMDグラボであってもスペックの低い(シェーダーの少ないor遅い)ものであればAsyncの恩恵は少ない。


管理人の考え

まず大前提としてスレ主からは「Time Spyで非同期演算は”全く”使うことができない」とは主張されていません。あくまでNVIDIAの一部のグラボでドライバから強制的に無効化されるので非同期演算が使用されておらず、ダイナミックロードバランシングのようなコンテキストスイッチ、要はプリエンプションが使用されているという事実が指摘され、開発者側もそれを認めています。正直に言っていいでしょうか……、

何を今更?

Maxwellは非同期演算に対応しておらず、Pascalもネイティブには非対応ではあるものの発展型プリエンプションを採用する形でDirectX12や非同期演算を要求するタスクでパフォーマンスを向上させているのはNVIDIAも認めている(公表している)ところであって、出力結果が同じであればエンジンが非同期演算を使うかどうかをドライバへ丸投げすることに何の問題があるのか管理人にはよくわかりません。また非同期演算はあくまでDirectX12のグラフィック性能を上げる機能の一部であり、それを無効化して別の手段をとるのはNVIDIAにとってはマイナスであって決してプラスの要素でありません。
もちろん以前の某発表会のように出力結果が全く違うとかであれば問題ですが、今回は出力結果は同じであると少なくとも開発者側は明言しており、それに対する反論も出ていません。
もし仮に「TimeSpy」で”完全に”非同期演算を使うことができず、AMDグラボですらコンテキストスイッチを強制されるのであればベンチマークとして信憑性がないと言わざるを得ませんが、Async有効化時のNVIDIA 10XXシリーズとAMD FuryシリーズのAsync有効・無効における性能の伸び幅の違いを見る限りAMDグラボではAsyncが使用されていると見るのが妥当だと思います。(一部のレスで「プログラムを解析したところTimeSpyではロードバランシングしか使われていない、100%証明できる」という主張もありますが真偽不明、その後のレスでも証明となる記述はなし。ただ繰り返しますがNVIDIAとAMDの伸びの違いを見るに嘘or語弊のある主張だと思います。)

とりあえず「Asyncじゃないとだめ、プリエンプションでパフォーマンス上げるのはチート」という主張であれば水掛け論にしかならないのでお好きにどうぞというのが管理人の感想です。
Asyncを使えるAMDは12%以上の性能の伸びがあって、ドライバで強制無効化しシングルキューに調停せざるを得ないMaxwellは性能が伸びず、発展型プリエンプションで疑似的に対応するPascalは6%程度の性能の伸びになるといだけのことであって、ユーザーからすれば出力結果が同じならAsyncだろうがプリエンプションだろうが性能が伸びればどっちでもいいわけで、AMDは非同期演算ネイティブ対応で性能の伸びが凄いという話で終わりではないかと思います。

個人的にはあまり好きなベンチではありませんがAoSでも同じような結果になっていますし。
aos_390_crazyaos_gtx970_crazy
転載元:http://pclab.pl/art67995.html

上のやり取りを発端にして、次の動画の実ゲームFPS比較のようにNVIDIAグラボとAMDグラボのDX12実ゲーム性能の差の比率がTimeSpyと違うとか、AsyncON/OFF時の伸び幅が違うという言い合いも繰り広げられていますが、ゲームエンジンやドライバの最適化具合で1~2割くらいは増減もあるだろうにと……。たまに単純に実ゲームのDX11モードとDX12モードの比較画像とか持ってきて暴れるやつまでいるとかもうね。


あとAsyncによる性能の伸びについては、AMD最適化ゲームHitman2016の開発サイドが次のような証言もしています。
非同期演算(Asynchronous Compute)によるHitman2016での性能向上はせいぜい5~10%であり、開発者曰く、”調整は非常に困難”。



今更感のある事実を指摘しただけスレ主が「3dmark doesn't use proper Asynchronous Compute!」という語弊のあり過ぎるタイトルでスレッドを建てる

論点をはき違えたバカと自称スーパハカーがまるで「TimeSpyが全くAsyncを使えない(使っていない)かのような」主張をして、「TimeSpyを作った3DMarkはNVIDIAの回し者」と言って暴れる(炎上)。

というつまらない展開でしたとさ、というのが管理人の結論です。





(注:記事内で参考のため記載された商品価格は記事執筆当時のものとなり変動している場合があります)



スポンサードリンク