Last change
on this file since 1632 was
1632,
checked in by Laurent Fairhead, 12 years ago
|
Import initial du répertoire dyn3dmem
Attention! ceci n'est qu'une version préliminaire du code "basse mémoire":
le code contenu dans ce répertoire est basé sur la r1320 et a donc besoin
d'être mis à jour par rapport à la dynamique parallèle d'aujourd'hui.
Ce code est toutefois mis à disposition pour circonvenir à des problèmes
de mémoire que certaines configurations du modèle pourraient rencontrer.
Dans l'état, il compile et tourne sur vargas et au CCRT
Initial import of dyn3dmem
Warning! this is just a preliminary version of the memory light code:
it is based on r1320 of the code and thus needs to be updated before
it can replace the present dyn3dpar code. It is nevertheless put at your
disposal to circumvent some memory problems some LMDZ configurations may
encounter. In its present state, it will compile and run on vargas and CCRT
|
File size:
1.7 KB
|
Rev | Line | |
---|
[1632] | 1 | ! |
---|
| 2 | ! $Id: mod_const_para.F90 1279 2009-12-10 09:02:56Z fairhead $ |
---|
| 3 | ! |
---|
| 4 | MODULE mod_const_mpi |
---|
| 5 | |
---|
| 6 | INTEGER,SAVE :: COMM_LMDZ |
---|
| 7 | INTEGER,SAVE :: MPI_REAL_LMDZ |
---|
| 8 | |
---|
| 9 | |
---|
| 10 | CONTAINS |
---|
| 11 | |
---|
| 12 | SUBROUTINE Init_const_mpi |
---|
| 13 | #ifdef CPP_IOIPSL |
---|
| 14 | USE IOIPSL |
---|
| 15 | #else |
---|
| 16 | ! if not using IOIPSL, we still need to use (a local version of) getin |
---|
| 17 | USE ioipsl_getincom |
---|
| 18 | #endif |
---|
| 19 | |
---|
| 20 | IMPLICIT NONE |
---|
| 21 | #ifdef CPP_MPI |
---|
| 22 | INCLUDE 'mpif.h' |
---|
| 23 | #endif |
---|
| 24 | INTEGER :: ierr |
---|
| 25 | INTEGER :: comp_id |
---|
| 26 | INTEGER :: thread_required |
---|
| 27 | INTEGER :: thread_provided |
---|
| 28 | CHARACTER(len = 6) :: type_ocean |
---|
| 29 | |
---|
| 30 | !$OMP MASTER |
---|
| 31 | type_ocean = 'force ' |
---|
| 32 | CALL getin('type_ocean', type_ocean) |
---|
| 33 | !$OMP END MASTER |
---|
| 34 | !$OMP BARRIER |
---|
| 35 | |
---|
| 36 | IF (type_ocean=='couple') THEN |
---|
| 37 | #ifdef CPP_COUPLE |
---|
| 38 | !$OMP MASTER |
---|
| 39 | CALL prism_init_comp_proto (comp_id, 'lmdz.x', ierr) |
---|
| 40 | CALL prism_get_localcomm_proto(COMM_LMDZ,ierr) |
---|
| 41 | !$OMP END MASTER |
---|
| 42 | #endif |
---|
| 43 | #ifdef CPP_MPI |
---|
| 44 | MPI_REAL_LMDZ=MPI_REAL8 |
---|
| 45 | #endif |
---|
| 46 | ELSE |
---|
| 47 | CALL init_mpi |
---|
| 48 | ENDIF |
---|
| 49 | |
---|
| 50 | END SUBROUTINE Init_const_mpi |
---|
| 51 | |
---|
| 52 | SUBROUTINE Init_mpi |
---|
| 53 | IMPLICIT NONE |
---|
| 54 | #ifdef CPP_MPI |
---|
| 55 | INCLUDE 'mpif.h' |
---|
| 56 | #endif |
---|
| 57 | INTEGER :: ierr |
---|
| 58 | INTEGER :: thread_required |
---|
| 59 | INTEGER :: thread_provided |
---|
| 60 | |
---|
| 61 | #ifdef CPP_MPI |
---|
| 62 | !$OMP MASTER |
---|
| 63 | thread_required=MPI_THREAD_SERIALIZED |
---|
| 64 | |
---|
| 65 | CALL MPI_INIT_THREAD(thread_required,thread_provided,ierr) |
---|
| 66 | IF (thread_provided < thread_required) THEN |
---|
| 67 | PRINT *,'Warning : The multithreaded level of MPI librairy do not provide the requiered level', & |
---|
| 68 | ' in mod_const_mpi::Init_const_mpi' |
---|
| 69 | ENDIF |
---|
| 70 | COMM_LMDZ=MPI_COMM_WORLD |
---|
| 71 | MPI_REAL_LMDZ=MPI_REAL8 |
---|
| 72 | !$OMP END MASTER |
---|
| 73 | #endif |
---|
| 74 | |
---|
| 75 | END SUBROUTINE Init_mpi |
---|
| 76 | |
---|
| 77 | END MODULE mod_const_mpi |
---|
Note: See
TracBrowser
for help on using the repository browser.