2010-10-14 2 views
11

Я не могу найти ответ на этот простой вопрос в Руководстве по программированию Cuda: при компиляции ядра с nvcc, какое целое число объявляется коротким, int, long и долго долго? Это зависит от архитектуры моего хоста, поэтому я должен использовать int16_t, int32_t и int64_t, или это всегда фиксированный размер?Какой размер является целым числом при программировании ядер cuda

ответ

10

Это зависит от компилятора хоста. В частности, определение nvcc этих типов согласуется с представлением компилятора хоста.

На практике char, short и int типы данных имеют предсказуемые размеры на всех платформах, что CUDA поддерживает (8, 16 и 32 бита соответственно). Однако размер long варьируется от платформы к платформе.

+1

Вы уверены, что это правильно? Код устройства необходимо преобразовать в команды ptx. Было бы странно, если бы этот процесс был специфичным для архитектуры хоста. Я просмотрел документы CUDA и не смог ничего найти. – nsanders

+2

Да, типы данных устройства должны соответствовать типам хостов, иначе было бы невозможно предсказать, сколько memcpy нужно сделать для хоста. – Edric

+0

Спасибо. Это именно то, что мне нужно. Это имеет смысл, потому что было бы кошмаром, если бы я был ответственен за соответствие типов между моим хост-кодом и кодом ядра. –

Смежные вопросы