2015-09-08 4 views
0

J'essaye d'accélérer mon code avec openacc avec le compilateur PGI 15.7.Puis-je profiler le noyau OpenACC au niveau du code source C?

Je souhaite profiler mon code au niveau de la source C. J'utilise le profileur 'nvvp' de CUDA 7.0 Lorsque j'exécute nvvp, je peux utiliser 'analyse tap' et obtenir quelle latence est la raison pour laquelle mon code ralentit. (Dépendance de données, branche conditionnelle et bande passante ... etc)

Mais, je n'ai pas pu obtenir d'analyse par ligne, mais seulement l'analyse de niveau 'noyau'. (par exemple, le noyau main_300_gpu utilisé 10s). J'ai donc du mal à savoir où dois-je réparer le code.

Existe-t-il un moyen de profiler mon code au niveau source?

J'utilise

PGI 15,7 (en utilisant pgcc)

CUDA 7.0

NVIDIA GTX 960

Ubuntu 14.04 LTS x86_64

[mon NVVP screenshots rapports] enter image description here

enter image description here

Répondre

3

Vous pouvez également essayer d'ajouter l'indicateur "-ta = tesla: lineinfo" pour que le compilateur ajoute une association de code source pour le profileur (c'est le même drapeau que nvcc - lineinfo). Bien que, comme Bob le fait remarquer, le code peut être fortement transformé de sorte que les informations de ligne ne correspondent pas directement à votre source d'origine.

+0

Merci Mat. J'ai utilisé l'option -ta = tesla: lineinfo, afin que je puisse montrer mon code source avec NVVP. – soongk

1

A l'heure actuelle (et sur CUDA 7,5 ou plus, avec un cc5.2 ou GPU plus élevé), le NVVP profileur can associate divers types d'activité d'exécution échantillonnée avec CUDA C/C++ lignes de provenance code.

Toutefois, à l'heure actuelle, cette capacité ne s'étend pas aux lignes OpenACC C/C++ (ou Fortran) du code source.

Cependant, il devrait toujours être possible d'associer l'activité au désassemblage, et il peut être possible de l'associer à des fichiers source C intermédiaires produits par le PGI nollvm option. Niether de ceux-ci portera beaucoup de ressemblance avec votre code source OpenACC, cependant. Une autre option pour profiler les codes OpenACC en utilisant les outils PGI est de définir la variable d'environnement PGI_ACC_TIME = 1 avant d'exécuter votre code. Cela permettra à un profileur léger intégré dans le runtime d'analyser les caractéristiques d'exécution de votre code OpenACC, en particulier les parties associées aux régions accélératrices. La sortie est annotée afin que vous puissiez vous référer aux lignes de votre code source.