Je n'arrive pas à trouver une réponse à cette question simple dans le Guide de programmation Cuda: Lors de la compilation d'un noyau avec nvcc, quelle taille entière est déclarée par short, int, long et longtemps long? Cela dépend-il de mon architecture hôte, donc je devrais utiliser int16_t, int32_t, et int64_t, ou est-ce toujours une taille fixe?Quelle est la taille des entiers lors de la programmation des noyaux cuda
11
A
Répondre
10
Cela dépend du compilateur hôte. Plus précisément, la définition de ces types de nvcc
sera en accord avec la représentation du compilateur hôte.
En pratique, le char
, short
et int
types de données ont des tailles prévisibles sur toutes les plates-formes de soutien CUDA (8, 16, et 32 bits respectivement). Cependant, la taille de long
varie d'une plateforme à l'autre.
Etes-vous sûr que c'est correct? Le code de l'appareil doit être converti en commandes ptx. Ce serait bizarre si ce processus était spécifique à l'architecture de l'hôte. J'ai regardé dans les docs de CUDA et n'ai pas pu trouver n'importe quoi. – nsanders
Oui, les types de données de périphérique doivent correspondre aux types d'hôte, sinon il serait impossible de prédire la quantité de memcpy à effectuer sur l'hôte. – Edric
Merci. C'est exactement ce dont j'avais besoin. Cela a du sens car ce serait un cauchemar si j'étais responsable de faire correspondre les types entre mon code hôte et mon code noyau. –