Il y avait des compteurs de profilage dans cudaprof pour la mémoire globale (gst_coherent, gst_incoherent, gld_coherent, gld_incoherent) qui étaient utiles et clairs pour moi car ils me disaient combien de lectures et d'écritures globales non-coalisées J'avais.Profilage CUDA (interprétation des requêtes gst/gld)
Maintenant, il semble qu'il n'y ait que des "requêtes gst" et des "requêtes gld". Ce sont les charges totales/magasins par warp sur mp 0. Comment puis-je déterminer si j'ai des lectures/écritures non coalisées? Je suppose qu'il y aurait moins de demandes si les demandes étaient fusionnées. Suis-je censé comprendre combien je m'attends par fil et comparer? Malheureusement, mon noyau est trop dynamique pour ça.
Ils ressemblent à une excellente ressource. Je mettrai aussi certainement certains de mes propres compteurs - cela m'aidera à comprendre la sortie du profileur. – jmilloy
Sur les GPU 2.0, les échecs de cache L1 sont-ils "coalisés" dans un sens? Est-il possible que les lectures globales 2.0 finissent plus lentement que les lectures globales 1.0 s'il y a beaucoup de ratés? Je suppose que j'ai besoin de regarder de plus près les changements dans l'accès mémoire globale entre mon ancien GPU et mon nouveau! – jmilloy
Sur sm_2x, le matériel va chercher une ligne de cache sur un échec, ce qui permet d'obtenir la même chose. Vous pouvez également choisir de contourner le cache L1, voir le Guide de programmation CUDA pour plus de détails sur les deux modes. – Tom