2010-05-08 21 views
1

Déjà terminé mon application qui multiplie la matrice CRS et le vecteur (SpMV) et la seule chose à faire maintenant est de compter FLOPS mon application a fait. À mon avis, il est vraiment difficile d'estimer le nombre d'opérations à virgule flottante dans le cas d'une multiplication de matrice-vecteur clairsemée, parce que le nombre de multiplications dans une rangée est vraiment «nerveux» ou fluide.Comptage FLOPS/GFLOPS dans le programme - CUDA

J'ai seulement essayé de mesurer le temps en utilisant "cudaprof" (disponible dans le répertoire ./CUDA/bin) - cela fonctionne bien.

Toutes les suggestions et les instructions sont appréciées!

Répondre

2

Ce n'est pas seulement votre avis; c'est un fait simple que le nombre d'opérations dans le cas d'une matrice clairsemée dépend des données, et donc vous ne pouvez pas obtenir une réponse raisonnable sans savoir quelque chose sur les données. Cela rend impossible l'estimation d'un chiffre unique. Ceci est probablement l'une des situations où vous pourriez y réfléchir pendant de nombreuses heures (et faire beaucoup de recherches) pour faire une estimation peut-être exacte, ou vous pourriez passer quelques minutes à écrire une variante de votre implémentation existante qui incrémente un compteur chaque fois qu'il effectue une opération. Bien sûr, cela va prendre du temps à s'exécuter (surtout si vous ne le faites pas sous une forme compatible avec CUDA), mais probablement beaucoup moins de temps qu'il n'en faudrait pour réfléchir, et quand la réponse sortira, vous n'avez pas à faire beaucoup de travail pour vous convaincre que c'est juste.