2010-05-12 12 views

Antwort

11

Wenn Ihre GPU compute capability 1.3 hat, können Sie doppelte Genauigkeit erreichen. Sie sollten sich jedoch darüber im Klaren sein, dass die 1.3-Hardware nur eine FP-Einheit mit doppelter Genauigkeit pro MP besitzt, die von allen Threads dieses MP gemeinsam genutzt werden muss. Dagegen gibt es 8 FPUs mit einfacher Genauigkeit, sodass jeder aktive Thread seine eigene FPU mit einfacher Genauigkeit besitzt. Mit anderen Worten, Sie sehen vielleicht eine achtmal schlechtere Leistung mit doppelter Genauigkeit als mit einfacher Genauigkeit.

+1

Danke für den Tipp Paul. Ich wollte hauptsächlich wegen der Genauigkeit auf "doppelte" Präzision schalten. Ich berate ein Nebenprojekt, in dem ich Python-Code in C++/CUDA konvertiere, und der Python-Code verwendet "doppelte" Präzision überall. Ich bemerkte, dass ich bei der Verwendung von "float" eine maximale absolute Differenz von "1e-06" für die Ergebnisse hatte. Ich war damit nicht allzu zufrieden, aber ich würde eher die Genauigkeit als die Leistung in Betracht ziehen. Vielen Dank! +1. – rayryeng

+0

Ha - kommentiert auf 7 Jahre alte Antworten jetzt Ray? ;-) Ernsthaft, das ist jetzt vielleicht ein wenig veraltet - ich habe seit ein paar Jahren nicht mehr mit CUDA gespielt und die neueste nVidia-Hardware könnte jetzt besser einen doppelten Präzisions-Support haben, soweit ich weiß. –

+2

Hehe Ich habe das Jahr nicht bemerkt. Ich habe die Fähigkeit nachgeschaut, bevor ich kommentiert habe :). Die Karte, an der ich für meinen Kunden arbeite, hat nur Rechenkapazität 3.0 und ist immer noch nur halb so genau. Es wurde nur in voller Unterstützung seit 6.0 ... Schade. Danke trotzdem, auch wenn das 7 Jahre alt war! – rayryeng

8

Nach den Kommentaren von Paul R. haben Compute Capability 2.0-Geräte (auch bekannt als Fermi) viel verbesserte Unterstützung für doppelte Genauigkeit, mit einer Leistung, die nur halb so hoch ist wie bei einfacher Genauigkeit.

Diese Fermi whitepaper hat mehr Details über die doppelte Leistung der neuen Geräte.

+0

+1: Danke für diese zusätzliche Information - Ich habe seit einem Jahr nicht mehr mit CUDA gearbeitet und war mir der Compute Capability 2.0 nicht bewusst - nichts in der Technik bleibt sehr lange! –

+1

Beachten Sie jedoch, dass Fermis doppelte Präzisionsleistung für GeForce-Karten (künstlich) niedriger ist als für Teslas. Quadro-Karten sollten das gleiche Leistungsniveau wie Tesla-Karten haben. – Eric

+0

Leider scheinen Quadro-Karten etwa 10-mal teurer zu sein als GeForce-Karten mit entsprechenden GPUs (obwohl Quadro-Karten mehr Speicher bieten). –

10

Als Tipp:

Wenn Sie mit doppelter Genauigkeit verwenden Sie die GPU-Architektur sm_13 gesetzt haben (wenn Ihr GPU unterstützt).

Sonst werden alle Doubles immer noch in Floats konvertiert und es wird nur eine Warnung ausgegeben (wie in fayas Beitrag zu sehen ist). (Sehr ärgerlich, wenn man wegen dieses :-) einen Fehler bekommen)

Die Flagge ist: -arch=sm_13

2

Wenn Sie mehr Präzision als die alte CUDA-Karte bietet wollen, können Sie die Schwimmer-Float-Lösung verwenden . Auf modernen Grafikprozessoren können Sie auch double-double verwenden, um eine größere Genauigkeit als doppelt zu erreichen.

Weitere Informationen here