BLAS daxpy et dcopy quand inc = 1, sont-ils plus rapides que d’utiliser simplement a (:, t) = b (:, t)?
-
06-07-2019 - |
Question
Bien, le titre le dit, je fais le genre d'opérations suivant à Fortran:
a(:,t) = b(:,t)
c(:,t) = x(i,t)*d(:,t)
Y a-t-il des avantages à utiliser les sous-routines daxpy
et dcopy
de BLAS dans ce cas où inc = 1?
La solution
Aucune différence que vous ne remarquerez jamais.
BLAS doit être compatible avec Fortran 77, je suis sûr qu’il n’avait pas ces fonctionnalités sophistiquées.
Ces sous-routines sont là pour créer une ligne de code permettant de copier un tableau ou une matrice, car cela en fait beaucoup. Les cycles ont tendance à se perdre dans d'autres routines, comme l'inverse de la matrice, de sorte que la copie n'est généralement pas un problème de performances.
Si les performances vous préoccupent, codez-les de manière raisonnable. Ensuite, je ferais l'interrompre quelques fois . Cela vous montrera où le temps passe réellement. S'il passe beaucoup de temps à copier, il vous le dira. Sinon, il vous le dira.