C E X A M P L E 1 C C Program name: CHARACTER*9 MYNAME PARAMETER (MYNAME='EXAMPLE_1') C C Problem size: INTEGER N PARAMETER (N = 100) C C Data type = real: PARAMETER (IDTYPE = 1) C C Number of RHS vectors: PARAMETER (NUMRHS = 1) C C Number of vectors to reduce during factoring: PARAMETER (NUMRED = 0) C C Skip operations during solving (no) PARAMETER (ISKIP = 0) C C Matrix and vector: COMMON A(N,N), X(N) REAL*8 A, X C C FMS matrix and vector file attributes: INTEGER LUA(25) INTEGER LUX(25) C C Local variables: REAL*8 EI, ERROR C C (1) Initialize FMS: CALL FMSINI CALL FMSPSH (MYNAME) CALL FMSIST ('IPRF',1026) C C Populate [A] and {X} with test data: CALL MATGEN (A, N, N, X) C C (2) Open FMS files: C NOTE: The arrays A(N,N) and X(N) are automatically shared on C machines using threads. On machines using separate processes C for parallel, they are not automatically shared. Therefore we C will limit the number of processes accessing these arrays to 1 C for this example. Example_2 illustrates how to place these C arrays in FMS shared memory so they can be operated on by C parallel processes on all machines. CALL FMSIST ('MAXCPU',1) CALL RNDANN (A, N, N, LUA) CALL FMSOV2 (N, IDTYPE, NUMRHS, X, N, LUX) C C (3) Write data to FMS files: (Not required). C C (4) Perform matrix algebra: CALL RNDF (LUA, LUA, LUX, LUX, NUMRED) CALL RNDS (LUA, LUX, LUX, NUMRHS, ISKIP) C C (5) Read data from FMS files: (Not required). C C Check the answer: ERROR = 0.0D0 DO 50 I = 1,N EI = ABS(X(I) - 1.0D0) IF(EI .GT. ERROR) ERROR = EI 50 CONTINUE WRITE(6,*) 'MAXIMUM ERROR =', ERROR C C (6) Close FMS files: CALL FMSCM (LUA) CALL FMSCV (LUX) CALL FMSPOP(MYNAME) CALL FMSEND END C======================================================================= SUBROUTINE MATGEN (A, LDA, N, B) C======================================================================= INTEGER LDA, N REAL*8 A(LDA,N), B(N), ZERO, ONE CHARACTER*6 MYNAME PARAMETER (ZERO=0.D0) PARAMETER (ONE =1.D0) PARAMETER (MYNAME='MATGEN') C C Populate [A] and {B} with test data: C [A] {X} = {B} C +- -+ + + + + C | N -1 -1 -1 -1| | 1 | | 1 | C |-1 1 0 0 0| | 1 | | 0 | C |-1 0 1 0 0| | 1 | = | 0 | C |-1 0 0 1 0| | 1 | | 0 | C |-1 0 0 0 1| | 1 | | 0 | C +- -+ + + + + C CALL FMSPSH (MYNAME) A(1,1) = DCMPLX(N,N) B(1) = ONE DO 20 I = 2,N DO 10 J = 2,N A(I,J) = ZERO 10 CONTINUE A(1,I) =-ONE A(I,1) =-ONE A(I,I) = ONE B(I) = ZERO 20 CONTINUE CALL FMSPOP(MYNAME) RETURN END