PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Special Functions in Shadern


Matti
2010-01-14, 20:48:49
Auf ATI-Karten ist jeder 5.Stream-Prozessor eine Special Function Unit und kann also auch Wurzel, Sinus usw. berechnen. Wie ist es eigentlich auf Nvidia-Karten?

Coda
2010-01-14, 20:50:15
Da gibt's auch SFUs.

Matti
2010-01-14, 21:01:47
bei ATI ist der Anteil 20%. Und bei Nvidia?

deekey777
2010-01-14, 21:08:20
bei ATI ist der Anteil 20%. Und bei Nvidia?
50%? Nein, so funktioniert es dort nicht.
http://www.realworldtech.com/page.cfm?ArticleID=RWT090808195242
http://www.realworldtech.com/page.cfm?ArticleID=RWT090808195242&p=7

Beim Fermi ist das anders: http://www.realworldtech.com/page.cfm?ArticleID=RWT093009110932

http://www.realworldtech.com/page.cfm?ArticleID=RWT093009110932&p=7

Coda
2010-01-14, 21:12:09
Bei G8x und allem was darauf basiert sind es 2 SFUs für 8 ALUs.

reunion
2010-01-14, 21:13:17
Wobei die SFUs AFAIK vier Takte benötigen, das sollte man nicht unterschlagen.

Coda
2010-01-14, 21:14:58
Die SFUs brauchen 16 Takte für einen Warp, weil es eben nur 2 sind pro SM und nicht 8. Da gibt's nichts zu unterschlagen, das ist eine Konsequenz der Anzahl an Anheiten.

Genauer: Die SFUs haben nicht 1/16 des Durchsatzes der ALUs sondern 1/4.

Matti
2010-01-14, 22:26:03
Bei Computerbase habe ich folgende Aussage zum G80 gefunden:

...128 Shadereinheiten, die pro Takt ein MADD (Multiply-ADD) sowie ein MUL (Multiplikation) berechnen können. Letzteres ist aber nur selten für „General Shading“-Aufgaben zu gebrauchen, da das MUL meistens mit Special-Function-Unit-Berechnungen, wie beispielsweise eine Kosinus-Operation, beschäftigt ist.

http://www.computerbase.de/artikel/hardware/grafikkarten/2007/test_nvidia_geforce_8800_gts_512/2/


Daß man sin/cos/tan mit Polynomial-Funktionen annähert, ist mir bekannt. Aber wie paßt das Zitat von Computerbase zu Coda's Aussage, daß es für 8 ALUs 2 SFUs gibt?

deekey777
2010-01-14, 23:03:37
http://www.realworldtech.com/page.cfm?ArticleID=RWT090808195242&p=9

Dual-Issue?

Coda
2010-01-14, 23:12:03
Aber wie paßt das Zitat von Computerbase zu Coda's Aussage, daß es für 8 ALUs 2 SFUs gibt?
Eine SFU kann wohl anstatt einer Special-Function auch 4 MULs ausführen. Eine andere Erklärung habe ich für das Phänomen auch nicht.

deekey777
2010-01-14, 23:58:36
Wieviele Interpolatoren hat denn jede SFU?

Coda
2010-01-15, 00:01:46
Einen iirc.

deekey777
2010-01-15, 00:05:55
Das klingt aber nach mehr:
The SFU hardware for interpolation includes several 32-bit floating point multiply units, which can be issued separately for multiply instructions instead of an interpolation. The SFU is physically implemented as two execution units; each one services four of the eight execution pipelines in the SM, and multiply instructions issued to the SFU execute in the same 4 cycles as in the FMAD unit.

Coda
2010-01-15, 00:12:07
An welcher Stelle machst du das fest? Man interpoliert ja ganze Texturkoordinaten, also bis zu 4 Komponenten auf einmal.

Gast
2010-01-15, 14:34:45
Daß man sin/cos/tan mit Polynomial-Funktionen annähert, ist mir bekannt. Aber wie paßt das Zitat von Computerbase zu Coda's Aussage, daß es für 8 ALUs 2 SFUs gibt?

Ein weit verbreiteter Irrglaube.
Annäherung über Polynominalfunktionen (also Taylorreihe) ist VIIIIIIIEL zu langsam. Es wird stattdessen ein CORDIC-Algorithmus verwendet. Die Mondlandung wäre zB mit Taylerpolynomen nicht möglich gewesen, da zu aufwendig für die damalige HW.

mfg,
zgep

Coda
2010-01-16, 01:52:15
Auf Wiki steht dass man CORDIC nur einsetzt, wenn man kein Hardware-MUL hat. Ich vermute da gibt es noch bessere Verfahren inzwischen.