Ich habe gelesen, dass CUDA aus dem globalen Speicher 128 Bytes gleichzeitig lesen kann, so macht es Sinn, dass jeder Thread in einem Warp 4 Bytes in einem zusammengewachsenen Muster für insgesamt 128 Bytes lesen/schreiben kann.Warum sind CUDA-Vektortypen (int4, float4) schneller?
Lesen/Schreiben mit den Vektor-Typen wie int4 und float4 ist faster.
Aber was ich nicht verstehe, warum das ist. Wenn jeder Thread im Warp 16 Bytes anfordert und sich nur 128 Bytes gleichzeitig über den Bus bewegen können, woher kommt der Leistungsgewinn?
Ist es, weil es weniger Speicheranforderungen gibt, d. H. Es heißt "schnappen Sie 16 Bytes für jeden Thread in diesem Warp" einmal, im Gegensatz zu "4 Bytes für jeden Thread in diesem Warp" 4 mal? Ich kann nichts in der Literatur finden, das den genauen Grund angibt, warum die Vektortypen schneller sind.
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. – Luke
Danke, habe es einfach gemacht. –