CUDA: Comment utilisez -d'arc et de et de code SM vs CALCULER

Je ne suis toujours pas sûr de la façon de bien spécifier les architectures pour la génération de code lors de la construction avec nvcc. Je suis conscient qu'il est du code machine ainsi que PTX code incorporé dans mon binaire et que cela peut être contrôlée par le régulateur se met en -code et -arch (ou une combinaison des deux à l'aide de -gencode).

Maintenant, selon cette outre les deux drapeaux de compilation il y a aussi deux manières de spécifier les architectures: sm_XX et compute_XX, où compute_XX se réfère à un virtuel et sm_XX à une véritable architecture. Le drapeau -arch ne prend que des identificateurs pour les architectures virtuelles (comme compute_XX) alors que le -code indicateur prend à la fois, les identifiants pour de vrai et pour des architectures virtuelles.

La documentation indique que les -arch spécifie les architectures virtuelles pour lesquelles les fichiers d'entrée sont compilés. Cependant, cette PTX code n'est pas automatiquement compilé en code machine, mais c'est plutôt un "prétraitement".

Maintenant, -code est censé pour spécifier les architectures de la PTX code est assemblé et optimisé pour l'.

Cependant, il n'est pas clair qui PTX ou code binaire sera intégré dans le binaire. Si je spécifie par exemple -arch=compute_30 -code=sm_52, cela veut-il dire que mon code sera d'abord compilé en fonction du niveau 3.0 PTX de qui par la suite s'en code machine pour le niveau de fonctionnalité 5.2) sera créé? Et ce sera intégrée?

Si je viens de le préciser -code=sm_52 ce qui va se passer ensuite? Seulement en code machine pour V5.2 sera intégré qui a été créé à partir de V5.2 PTX code? Et quelle serait la différence de -code=compute_52?

OriginalL'auteur bweber | 2016-02-26