Télécharger mulmat.eso

Retour à la liste

Numérotation des lignes :

mulmat
  1. C MULMAT SOURCE PV 18/10/17 11:46:14 9965
  2. SUBROUTINE MULMAT(A,B,C,I,J,K)
  3. C=======================================================================
  4. C
  5. C S.P. PRODUIT DE 2 MATRICES A(I,J)=B(I,K)*C(K,J)
  6. C
  7. C AOUT 84
  8. C
  9. C Version optimise pour la bande passante memoire
  10. C Unroll sur 4 et 6 car ce sont les dimensions des contraintes
  11. C=======================================================================
  12. IMPLICIT INTEGER(I-N)
  13. IMPLICIT REAL*8(A-H,O-Z)
  14.  
  15. DIMENSION A(I,*),B(I,*),C(K,*)
  16.  
  17. PARAMETER (XZERO=0.D0)
  18.  
  19. ** print *, ' mulmat i j k ',i,j,k
  20. DO JJ=1,J
  21. DO II=1,I
  22. A(II,JJ)=XZERO
  23. ENDDO
  24. KK=1
  25. DO KK=1,K-5,6
  26. XFLOT1=C(KK ,JJ)
  27. XFLOT2=C(KK+1,JJ)
  28. XFLOT3=C(KK+2,JJ)
  29. XFLOT4=C(KK+3,JJ)
  30. XFLOT5=C(KK+4,JJ)
  31. XFLOT6=C(KK+5,JJ)
  32.  
  33. DO II=1,I
  34. A(II,JJ)=A(II,JJ)+B(II,KK )*XFLOT1
  35. > +B(II,KK+1)*XFLOT2
  36. > +B(II,KK+2)*XFLOT3
  37. > +B(II,KK+3)*XFLOT4
  38. > +B(II,KK+4)*XFLOT5
  39. > +B(II,KK+5)*XFLOT6
  40. ENDDO
  41. ENDDO
  42.  
  43. KKK=KK
  44. DO KK=KKK,K-3,4
  45. XFLOT1=C(KK ,JJ)
  46. XFLOT2=C(KK+1,JJ)
  47. XFLOT3=C(KK+2,JJ)
  48. XFLOT4=C(KK+3,JJ)
  49.  
  50. DO II=1,I
  51. A(II,JJ)=A(II,JJ)+B(II,KK )*XFLOT1
  52. > +B(II,KK+1)*XFLOT2
  53. > +B(II,KK+2)*XFLOT3
  54. > +B(II,KK+3)*XFLOT4
  55. ENDDO
  56. ENDDO
  57.  
  58. KKK=KK
  59. DO KK=KKK,K-2,3
  60. XFLOT1=C(KK ,JJ)
  61. XFLOT2=C(KK+1,JJ)
  62. XFLOT3=C(KK+2,JJ)
  63.  
  64. DO II=1,I
  65. A(II,JJ)=A(II,JJ)+B(II,KK )*XFLOT1
  66. > +B(II,KK+1)*XFLOT2
  67. > +B(II,KK+2)*XFLOT3
  68. ENDDO
  69. ENDDO
  70.  
  71. KKK=KK
  72. DO KK=KKK,K-1,2
  73. XFLOT1=C(KK ,JJ)
  74. XFLOT2=C(KK+1,JJ)
  75.  
  76. DO II=1,I
  77. A(II,JJ)=A(II,JJ)+B(II,KK )*XFLOT1
  78. > +B(II,KK+1)*XFLOT2
  79. ENDDO
  80. ENDDO
  81.  
  82. KKK=kk
  83. DO KK=kkK,K
  84. XFLOT1=C(KK,JJ)
  85. DO II=1,I
  86. A(II,JJ)=A(II,JJ)+B(II,KK)*XFLOT1
  87. ENDDO
  88. ENDDO
  89. ENDDO
  90.  
  91. END
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales