2010-10-14 5 views
11

Ich kann nicht finden, eine Antwort auf diese einfache Frage in der Cuda-Programmieranleitung zu finden: Beim Kompilieren eines Kernels mit nvcc, Welche Größe Integer wird durch kurz erklärt, int, long und lang Lang? Kommt es auf meine Host-Architektur an, also sollte ich int16_t, int32_t und int64_t verwenden, oder ist es immer eine feste Größe?Welche Größe sind Integer beim Programmieren von Cuda Kernel

Antwort

10

Es hängt vom Host-Compiler ab. Insbesondere wird nvcc die Definition dieser Typen mit der Darstellung des Host-Compilers übereinstimmen.

In der Praxis ist die char, short und int Datentypen haben vorhersagbare Größen auf allen Plattformen, die CUDA Stützen (8, 16, und 32 Bits jeweils). Die Größe von long variiert jedoch von Plattform zu Plattform.

+1

Sind Sie sicher, dass das richtig ist? Der Gerätecode muss in PTX-Befehle konvertiert werden. Es wäre komisch, wenn dieser Prozess für die Host-Architektur spezifisch wäre. Ich habe in den CUDA-Dokumenten nachgeschaut und konnte nichts finden. – nsanders

+2

Ja, die Gerätedatentypen müssen mit den Hosttypen übereinstimmen, andernfalls wäre es unmöglich, vorherzusagen, wie viel Speicher auf den Host zu schreiben ist. – Edric

+0

Danke. Genau das habe ich gebraucht. Es macht Sinn, denn es wäre ein Albtraum, wenn ich dafür verantwortlich wäre, die Typen zwischen meinem Host-Code und meinem Kernel-Code zu vergleichen. –

Verwandte Themen