Jaein. Eigentlich muss ein Kontextwechsel nur auf GCN Architekturen durchgeführt werden.Limit schrieb:Kann sein, dass ich das falsch verstanden habe, aber afaik konnte Maxwell das nur rein logisch, sprich man kann entsprechende commands zwar parallel absetzen, intern muss weiterhin ein Kontextwechsel vorgenommen werden um zwischen Compute und Graphics Tasks hin- und herzuwechseln.
NVidia versucht das ganze weiterhin über die SMs aufzuteilen. Kontext switches werden nur gemacht wenn sie wirklich nötig sind.
Knackpunkt ist, dass NVidia keinen Kontext Cache hat wie AMD. Daher muss für einen Kontextwechsel jedes mal über den externen Hauptspeicher der Grafikkarte gegangen werden. Das kostet Zeit. Dementsprechend versucht man das Kontextwechseln beim Scheduling möglichst zu vermeiden, vornehmlich dadurch, dass man Compute und Graphics Tasks zwischen den SMs aufteilt. Neu mit Pascal ist, dass der Scheduler auch dynamisch darauf reagiert, wenn ein Task früher fertig wird.
Der Grund weshalb NVidia hier einen anderen Ansatz fährt dürfte wohl darin liegen, dass die Grafik Komponenten etwas anders verteilt sind als bei AMD und dementsprechend auch der Zugriff und die Lastverteilung bei den einzelnen ALUs anders ausfällt.
Ich denke eine relativ umfangreiche Erklärung und einen Vergleich für das Vorgehen der jeweiligen Architekturen gibt es hier:
https://www.reddit.com/r/nvidia/comments/50dqd5/demystifying_asynchronous_compute/
Der entscheidende Absatz für den Vergleich beider Ansätze dürfte der hier sein.
Das würde ich so in etwa auch unterschreiben.So if we stop using the term asynchronous compute and focus on multi-engine all our lives would be much more pleasant, DX12 only requires you to have those "engines" and their queues exposed. It places no requirements whatsoever on how the independent command streams are executed; "Async Shaders" and "Dynamic Load Balancing" are just marketing terms used to introduce new features I guess, and frankly it's unusual for such a profoundly architecture-intimate feature to be propelled to the forefront of a marketing campaign.
GCN has one geometry engine and one rasterizer in each Shader Engine (usually 9 CUs). NVIDIA employs a geometry engine per SM and rasterizers shared by all SMs in a GPC ( 4 or 5). The balance of resources is radically different.