1 : C GMOMV SOURCE GOUNAND 11/10/07 21:15:28 7149 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 : -INC SMMATRIK 38 : POINTEUR KMORS.PMORS 39 : POINTEUR KISA.IZA 40 : POINTEUR X.IZA,Y.IZA 41 : -INC CCASSIS 42 : CHARACTER*1 TRANS 43 : LOGICAL LSAME 44 : EXTERNAL LSAME 45 : EXTERNAL GMOMVI 46 : COMMON/CGMOMV/xac,xbc,kmorsc,kisac,kxc,kyc,itran,nbthr,imvecc 47 : * 48 : INTEGER IMPR,IRET 49 : PARAMETER (NGRAND=100000) 50 : LOGICAL LPARA 51 : * 52 : * Executable statements 53 : * 54 : N =KMORS.IA(/1)-1 55 : * 56 : LPARA=.TRUE. 57 : if (.NOT.LSAME(TRANS,'N')) THEN 58 : itran=1 59 : else 60 : itran=0 61 : ENDIF 62 : IF (ITRAN.EQ.1) LPARA=.FALSE. 63 : * IF (N.LT.NGRAND) LPARA=.FALSE. 64 : IF (IMVEC.EQ.0) LPARA=.FALSE. 65 : * WRITE(IOIMP,*) 'LPARA=',LPARA 66 : * IF (N.GT.NGRAND) THEN 67 : IF (LPARA) THEN 68 : * Parallélisme recopié de chole3 69 : xac=alpha 70 : xbc=beta 71 : kmorsc=kmors 72 : kisac=kisa 73 : kxc=x 74 : kyc=y 75 : imvecc=imvec 76 : * 77 : nbthro=max(nbesc,1) 77 : if (nbthro.gt.1) call threadii 78 : nbthr=nbthro 79 : if (nbthr.gt.1) then 80 : do ithr=1,nbthr 80 : call threadid(ithr,gmomvi) 81 : enddo 82 : do ithr=1,nbthr 82 : call threadif(ithr) 83 : enddo 84 : * en multithread il peut y avoir n'importe quoi dans oov(1) du 85 : * aux acces simultanés et ca crache gemat. donc : 86 : oov(1)=0 87 : else 88 : do ithr=1,nbthr 88 : call gmomvi(ithr) 89 : enddo 90 : endif 90 : if (nbthr.gt.1) call threadis 91 : ELSE 92 : NNZ =KMORS.JA(/1) 92 : CALL DMOMV(TRANS,N,ALPHA, 93 : $ NNZ,KMORS.IA,KMORS.JA,KISA.A, 94 : $ X.A,BETA,Y.A) 95 : ENDIF 96 : * 97 : * Normal termination 98 : * 99 : RETURN 100 : * 101 : * End of subroutine GMOMV 102 : * 103 : END 104 : 105 : 106 : 107 : 108 : 109 :
© Cast3M 2003 - All rights reserved.
Disclaimer