2016-11-10 1 views
0

Ich versuche meine PC-Bandbreite mit CUDA zu bestimmen. Ich habe eine 750M Bord und meine theoretische Bandbreite ist 90 GB, in der Spezifikation ist wie 80GB erwähnt. Ich habe einen einfachen Algorithmus aus der Nvidia-Website https://devblogs.nvidia.com/parallelforall/how-implement-performance-metrics-cuda-cc/ versucht. Ich habe den Code für einzelne precison und Doppel precison ändern und ich habe diese Ergebnisse:CUDA Bandbreite in Single Precison und Bandbreite in Doppel Precison

Einzel precison (float): 30GB/s

Doppel precison: 26DE/s

Die Bandbreite für einzelne precison berechnet wird wie folgt aus:

printf("Effective Bandwidth (GB/s): %fn", N*4*3/milliseconds/1e6); 

Und wenn ich versuche, es zu machen für Doppel precison (8 Byte):

printf("Effective Bandwidth (GB/s): %fn", N*8*3/milliseconds/1e6); 

Die rezult für Doppel precison ist größer dann einzelne precison:

Einzel precison (float): 30 GB/s

Doppel precison: 45 GB/s

Antwort

0

Mit diesem Ansatz, Sie sind 32 Bits laden. Die Speicherverwaltungseinheit für Ihre Karte verfügt nicht über die erforderlichen Ressourcen (Anforderungen während des Flugs - siehe Little Law und Speicherlatenz this technischer Bericht scheint dies zu decken), damit die Bandbreite bei voller Leistung funktioniert.

Sie möchten 128-Bit-Ladungen verwenden (z. B. mit float4), um Ihre Bandbreite zu maximieren, oder zumindest float2, und mehrere Operationen für jeden Thread durchführen.

+0

Vielen Dank. Sehr schönes Material. – adi94

+0

Wenn dies Ihre Frage beantwortet, möchten Sie es vielleicht als solche markieren? –

Verwandte Themen