9
votes

NVCC -XPTXAS -V Drapeau du compilateur n'a aucun effet

J'ai un projet CUDA. Il se compose de plusieurs fichiers .CPP contenant ma logique d'application et un fichier .cu contenant plusieurs noyaux plus un __ hôte __ la fonction qui les invoque.

Maintenant, je voudrais déterminer le nombre de registres utilisés par mon ou mes noyau. Mon appel de compilateur normal ressemble à ceci:

NVCC -arch Compute_20 -Link src / kernel.cu obj / .. obj obj / .. obj .. -o bin / .. exe -l glew32 .. . .

Ajout du drapeau du compilateur "-XPTXAS -V" à cet appel n'a malheureusement aucun effet. Le compilateur produit toujours la même sortie textuelle qu'auparavant. Le compilé .exe fonctionne également de la même manière qu'avant, à une exception près: mon framerate saute à 1800fps, jusqu'à 80fps.


0 commentaires

6 Réponses :


2
votes

Lorsque vous compilez

nvcc --ptxas-options = -v


5 commentaires

ne fonctionne pas non plus. J'ai essayé toutes les différentes notations pour ce drapeau que l'on peut trouver sur Internet.


@DAV Essayez d'éliminer l'option de liaison et compiler uniquement


carpe dans ce cas, le compilateur se plaint de symboles externes indéfinis.


@DAV Break Process dans deux, premier compilé que le lien.


carpe j'ai essayé nvcc -c.cu -arch compute_20 --ptxas-options = -v - le compilateur sortira un fichier ..Obj mais aucun registre compte



-1
votes

Pas exactement ce que vous recherchiez, mais vous pouvez utiliser le profileur Visual Cuda expédié avec le SDK Computing NVIDIA GPU. Outre de nombreuses autres informations utiles, cela montre le nombre de registres utilisés par chaque noyau dans votre application.


2 commentaires

Cela ne peut pas être correct car il ne répond pas à la question ... Si vous ne vouliez que créer un moyen de compter les registres, puis changez la question.


@jimilloy "maintenant je voudrais déterminer le nombre de registres utilisés par mon noyau (s)"



10
votes

J'ai eu le même problème, voici ma solution:

  1. compile * CU fichiers dans le périphérique uniquement * Fichier PTX, cela supprimera le code hôte

    nvcc -ptx * .cu

  2. Compile * Fichier PTX:

    ptxas -v * .PTX

    La deuxième étape vous montrera le nombre de registres utilisés par le noyau et la quantité de mémoire partagée utilisée.


0 commentaires

0
votes

Vous pouvez vouloir CTRL vos valeurs par défaut de votre compilateur Verbose.

Par exemple est vstudio goto: Outils-> Options-> ProjectsAndsolutions-> BuildRun puis réglez la sortie de verbosité sur la normale.


0 commentaires

3
votes

Lorsque vous utilisez "-XPTXAS -V", "-arch" ensemble, nous ne pouvons pas obtenir des informations verbeuses (enregistrez num, etc.). Si nous voulons voir le verbeux sans perdre la chance d'attribuer une architecture GPU (-arch, -code) à l'avance, nous pouvons procéder aux étapes suivantes: NVCC -arch Compute_XX * .Cu -keekeekee (code> alors PTXAS -V * .PTX . Mais nous obtiendrons de nombreux fichiers de traitement. Certes, la réponse de Kogut est au point.


0 commentaires

5
votes

Convertissez le Compute_20 en SM_20 dans votre appel du compilateur. Cela devrait le réparer.


0 commentaires