- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]

From: Etienne ENGLER <etienne_at_rout.u-strasbg.fr>

Date: Wed 17 Jan 2001 10:43:47 +0100

An experimental solution to gibbs MPI/Linux :

1) To enable MPI

gib.f : lines 312-317

Replace

c --- for now, Aug 1997, disable MPI_gibbs, since it fails the

c dynamically modified windows test .... dac

c

write(6,*) 'MPI version of gibbs is currently disabled.'

call mexit(6,1)

c

with

c --- for now, Aug 1997, disable MPI_gibbs, since it fails the

c dynamically modified windows test .... dac

c

c write(6,*) 'MPI version of gibbs is currently disabled.'

c call mexit(6,1)

c

2) To avoid a locking (wait for other process reply)

gibb.f : lines 2372-2376

Replace

C If IFRC>0 then IMES was > 0 on call. In this case only wanted

C derivates, so return now.

C

IF (IFRC.GT.0) RETURN

C

with

C If IFRC>0 then IMES was > 0 on call. In this case only wanted

C derivates, so return now.

C

IF (IFRC.GT.0) then

#ifdef MPI

if (ICORC.eq.1) call cor_mpi_wait(epert,itcumx)

#endif

RETURN

endif

C

3) Add this routine (in machinedep.f for example) :

#ifdef MPI

subroutine cor_mpi_wait(epert,itcumx)

c

IMPLICIT DOUBLE PRECISION (A-H,O-Z)

# include "mpif.h"

DOUBLE PRECISION E58, E59, E60

COMMON/JMTE/E58, E59, E60

DIMENSION EPERT(*)

c

DO 10 ITERA=1,ITCUMX

ITER = ITERA

DO 20 IFRE = 1,2

IFR = IFRE

c

e58 = 0.

e59 = 0.

call mpi_reduce(EPERT(58),e58,1,

+ MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)

call mpi_reduce(EPERT(59),e59,1,

+ MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)

EPERT(58) = e58

EPERT(59) = e59

c

IF (ITER.EQ.1 .AND. IFR.EQ.1) THEN

e60 = 0.

call mpi_reduce(EPERT(60),e60,1,

+ MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)

EPERT(60) = e60

END IF

20 continue

10 continue

c

end

#endif

Etienne Engler

MSM - UMR7551

ULP Strasbourg

Received on Wed Jan 17 2001 - 01:43:47 PST

Date: Wed 17 Jan 2001 10:43:47 +0100

An experimental solution to gibbs MPI/Linux :

1) To enable MPI

gib.f : lines 312-317

Replace

c --- for now, Aug 1997, disable MPI_gibbs, since it fails the

c dynamically modified windows test .... dac

c

write(6,*) 'MPI version of gibbs is currently disabled.'

call mexit(6,1)

c

with

c --- for now, Aug 1997, disable MPI_gibbs, since it fails the

c dynamically modified windows test .... dac

c

c write(6,*) 'MPI version of gibbs is currently disabled.'

c call mexit(6,1)

c

2) To avoid a locking (wait for other process reply)

gibb.f : lines 2372-2376

Replace

C If IFRC>0 then IMES was > 0 on call. In this case only wanted

C derivates, so return now.

C

IF (IFRC.GT.0) RETURN

C

with

C If IFRC>0 then IMES was > 0 on call. In this case only wanted

C derivates, so return now.

C

IF (IFRC.GT.0) then

#ifdef MPI

if (ICORC.eq.1) call cor_mpi_wait(epert,itcumx)

#endif

RETURN

endif

C

3) Add this routine (in machinedep.f for example) :

#ifdef MPI

subroutine cor_mpi_wait(epert,itcumx)

c

IMPLICIT DOUBLE PRECISION (A-H,O-Z)

# include "mpif.h"

DOUBLE PRECISION E58, E59, E60

COMMON/JMTE/E58, E59, E60

DIMENSION EPERT(*)

c

DO 10 ITERA=1,ITCUMX

ITER = ITERA

DO 20 IFRE = 1,2

IFR = IFRE

c

e58 = 0.

e59 = 0.

call mpi_reduce(EPERT(58),e58,1,

+ MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)

call mpi_reduce(EPERT(59),e59,1,

+ MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)

EPERT(58) = e58

EPERT(59) = e59

c

IF (ITER.EQ.1 .AND. IFR.EQ.1) THEN

e60 = 0.

call mpi_reduce(EPERT(60),e60,1,

+ MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)

EPERT(60) = e60

END IF

20 continue

10 continue

c

end

#endif

Etienne Engler

MSM - UMR7551

ULP Strasbourg

Received on Wed Jan 17 2001 - 01:43:47 PST

Custom Search