Télécharger gmomv.eso

Retour à la liste

Numérotation des lignes :

  1. C GMOMV SOURCE PV 16/11/17 21:59:30 9180
  2. SUBROUTINE GMOMV(IMVEC,TRANS,ALPHA,KMORS,KISA,X,BETA,Y)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : GMOMV
  7. C DESCRIPTION : Interface à DMOMV parallèle
  8. C
  9. C
  10. C
  11. C LANGAGE : ESOPE
  12. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  13. C mél : gounand@semt2.smts.cea.fr
  14. C***********************************************************************
  15. C APPELES :
  16. C APPELES (E/S) :
  17. C APPELES (BLAS) :
  18. C APPELES (CALCUL) :
  19. C APPELE PAR :
  20. C***********************************************************************
  21. C SYNTAXE GIBIANE :
  22. C ENTREES :
  23. C ENTREES/SORTIES :
  24. C SORTIES :
  25. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  26. C***********************************************************************
  27. C VERSION : v1, 09/02/2006, version initiale
  28. C HISTORIQUE : v1, 09/02/2006, création
  29. C HISTORIQUE : 08/01/2008, ajout petit parallélisme
  30. C HISTORIQUE :
  31. C***********************************************************************
  32. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  33. C en cas de modification de ce sous-programme afin de faciliter
  34. C la maintenance !
  35. C***********************************************************************
  36. -INC CCOPTIO
  37. POINTEUR KMORS.PMORS
  38. POINTEUR KISA.IZA
  39. POINTEUR X.IZA,Y.IZA
  40. -INC CCASSIS
  41. CHARACTER*1 TRANS
  42. LOGICAL LSAME
  43. EXTERNAL LSAME
  44. EXTERNAL GMOMVI
  45. COMMON/CGMOMV/xac,xbc,kmorsc,kisac,kxc,kyc,itran,nbthr,imvecc
  46. *
  47. INTEGER IMPR,IRET
  48. PARAMETER (NGRAND=100000)
  49. LOGICAL LPARA
  50. *
  51. * Executable statements
  52. *
  53. N =KMORS.IA(/1)-1
  54. *
  55. LPARA=.TRUE.
  56. if (.NOT.LSAME(TRANS,'N')) THEN
  57. itran=1
  58. else
  59. itran=0
  60. ENDIF
  61. IF (ITRAN.EQ.1) LPARA=.FALSE.
  62. * IF (N.LT.NGRAND) LPARA=.FALSE.
  63. IF (IMVEC.EQ.0) LPARA=.FALSE.
  64. * WRITE(IOIMP,*) 'LPARA=',LPARA
  65. * IF (N.GT.NGRAND) THEN
  66. IF (LPARA) THEN
  67. * Parallélisme recopié de chole3
  68. xac=alpha
  69. xbc=beta
  70. kmorsc=kmors
  71. kisac=kisa
  72. kxc=x
  73. kyc=y
  74. imvecc=imvec
  75. *
  76. nbthro=nbthrs
  77. if (nbthro.gt.1) call threadii
  78. nbthr=nbthro
  79. if (nbthr.gt.1) then
  80. do ithr=1,nbthr
  81. call threadid(ithr,gmomvi)
  82. enddo
  83. do ithr=1,nbthr
  84. call threadif(ithr)
  85. enddo
  86. * en multithread il peut y avoir n'importe quoi dans oov(1) du
  87. * aux acces simultanés et ca crache gemat. donc :
  88. oov(1)=0
  89. else
  90. do ithr=1,nbthr
  91. call gmomvi(ithr)
  92. enddo
  93. endif
  94. if (nbthr.gt.1) call threadis
  95. ELSE
  96. NNZ =KMORS.JA(/1)
  97. CALL DMOMV(TRANS,N,ALPHA,
  98. $ NNZ,KMORS.IA,KMORS.JA,KISA.A,
  99. $ X.A,BETA,Y.A)
  100. ENDIF
  101. *
  102. * Normal termination
  103. *
  104. RETURN
  105. *
  106. * End of subroutine GMOMV
  107. *
  108. END
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  

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