midasMpi_mod

link to source code

Dependency Diagrams:

midasMpi_mod.svg

Direct Dependency Diagram

midasMpi_mod_rev.svg

Reverse Dependency Diagram

Purpose

Subroutine and public variables related to general aspects of mpi. Also, subroutine and public variables related to the mpi decomposition specific to the MIDAS code.

Quick access

Variables

mmpi_comm_ew, mmpi_comm_grid, mmpi_comm_ns, mmpi_datyp_int, mmpi_datyp_real4, mmpi_datyp_real8, mmpi_dobarrier, mmpi_myid, mmpi_myidx, mmpi_myidy, mmpi_npex, mmpi_npey, mmpi_nprocs, mmpi_numthread

Routines

mmpi_allgather_string(), mmpi_allreduce_sumr8_1d(), mmpi_allreduce_sumr8_2d(), mmpi_allreduce_sumreal8scalar(), mmpi_getptopo(), mmpi_initialize(), mmpi_myidxfromlon(), mmpi_myidyfromlat(), mmpi_reduce_sumr8_1d(), mmpi_reduce_sumr8_2d(), mmpi_reduce_sumr8_3d(), mmpi_setup_latbands(), mmpi_setup_levels(), mmpi_setup_lonbands(), mmpi_setup_m(), mmpi_setup_n(), mmpi_setup_varslevels()

Needed modules

  • utilities_mod: MODULE utilities_mod (prefix=’utl’ category=’8. Low-level utilities and constants’)

Variables

  • midasmpi_mod/mmpi_comm_ew [integer,public]
  • midasmpi_mod/mmpi_comm_grid [integer,public]
  • midasmpi_mod/mmpi_comm_ns [integer,public]
  • midasmpi_mod/mmpi_datyp_int [integer,public]
  • midasmpi_mod/mmpi_datyp_real4 [integer,public]
  • midasmpi_mod/mmpi_datyp_real8 [integer,public]
  • midasmpi_mod/mmpi_dobarrier [logical,public]
  • midasmpi_mod/mmpi_myid [integer,public]
  • midasmpi_mod/mmpi_myidx [integer,public]
  • midasmpi_mod/mmpi_myidy [integer,public]
  • midasmpi_mod/mmpi_npex [integer,public]
  • midasmpi_mod/mmpi_npey [integer,public]
  • midasmpi_mod/mmpi_nprocs [integer,public]
  • midasmpi_mod/mmpi_numthread [integer,public]

Subroutines and functions

subroutine  midasmpi_mod/mmpi_initialize()
Called from

midas_adjointtest, midas_analysiserroroi, midas_calcstats, midas_diagbmatrix, midas_diaghbht, midas_enspostprocess, midas_ensembleh, midas_extractbmatrixfor1dvar, midas_gencoeff, midas_letkf, midas_ominusf, midas_obsimpact, midas_obsselection, midas_prepcma, midas_pseudosstobs, midas_randompert, midas_sstbias, midas_ssttrial, midas_thinning, midas_var, midas_var1d

subroutine  midasmpi_mod/mmpi_getptopo(npex, npey)
Arguments
  • npex [integer ,out]

  • npey [integer ,out]

Call to

utl_abort()

subroutine  midasmpi_mod/mmpi_allreduce_sumreal8scalar(sendrecvvalue, comm)
Arguments
  • sendrecvvalue [real ,inout] :: value to be summed over all mpi tasks

  • comm [character ,in] :: rpn_comm communicator

Called from

calcvertmodesspec(), cfn_sumjo(), epp_printrmsstats(), sumfso(), simvar(), prscal(), multenergynorm(), gbi_mean_gsv(), gsv_dotproduct(), grtest2(), n1qn3a(), sstb_getgriddedobs()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  midasmpi_mod/mmpi_allreduce_sumr8_1d(sendrecvvector, comm)
Purpose

Perform sum of 1d array over all MPI tasks.

Arguments
  • sendrecvvector (*) [real ,inout] :: 1-D vector to be summed over all mpi tasks

  • comm [character ,in] :: rpn_comm communicator

Called from

cfn_sumjo()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  midasmpi_mod/mmpi_allreduce_sumr8_2d(sendrecvvector, comm)
Purpose

Perform sum of 2d array over all MPI tasks.

Arguments
  • sendrecvvector (*,*) [real ,inout] :: 2-D vector to be summed over all mpi tasks

  • comm [character ,in] :: rpn_comm communicator

Called from

bcs_computepredictorbiases(), calcpowerspec(), calcvertmodesspec(), vms_computemodesfromens()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  midasmpi_mod/mmpi_reduce_sumr8_1d(sendvector, recvvector, root, comm)
Purpose

Perform sum of 1d array over all MPI tasks.

Arguments
  • sendvector (*) [real ,in] :: 1-D vector to be summed over all mpi tasks

  • recvvector (*) [real ,out] :: 1-D vector to be summed over all mpi tasks

  • root [integer ,in] :: mpi task id where data is put

  • comm [character ,in] :: rpn_comm communicator

Called from

bcs_cvtocoeff_ad(), bcs_outputcvomppred()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  midasmpi_mod/mmpi_reduce_sumr8_2d(sendvector, recvvector, root, comm)
Purpose

Perform sum of 2d array over all MPI tasks.

Arguments
  • sendvector (*,*) [real ,in] :: 2-D vector to be summed over all mpi tasks

  • recvvector (*,*) [real ,out] :: 2-D vector to be summed over all mpi tasks

  • root [integer ,in] :: mpi task id where data will be put

  • comm [character ,in] :: rpn_comm communicator

Called from

bcs_computeresidualsstatistics(), bcs_removeoutliers(), bcs_do_regression(), bcs_outputcvomppred()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  midasmpi_mod/mmpi_reduce_sumr8_3d(sendvector, recvvector, root, comm)
Purpose

Perform sum of 3d array over all MPI tasks.

Arguments
  • sendvector (*,*,*) [real ,in] :: 3-D vector to be summed over all mpi tasks

  • recvvector (*,*,*) [real ,out] :: 3-D vector to be summed over all mpi tasks

  • root [integer ,in] :: mpi task id where data is put

  • comm [character ,in] :: rpn_comm communicator

Called from

bcs_do_regression(), bcs_outputcvomppred()

Call to

utl_tmg_start(), utl_tmg_stop()

subroutine  midasmpi_mod/mmpi_allgather_string(str_list, str_list_all, nlist, nchar, nproc, comm, ierr)
Purpose

Performs the MPI ‘allgather’ routine for an array of strings

Arguments
  • str_list (nlist) [character ,in]

  • str_list_all (nlist,nproc) [character ,out]

  • nlist [integer ,in,]

  • nchar [integer ,in]

  • nproc [integer ,in]

  • comm [character ,in]

  • ierr [integer ,out]

Called from

setobsfilesmpiuniquelist(), oss_obsdata_mpiallgather(), oss_comboidlist()

subroutine  midasmpi_mod/mmpi_setup_latbands(nj, latperpe, latperpemax, mylatbeg, mylatend[, mylathalfbeg_opt[, mylathalfend_opt[, divisible_opt]]])
Purpose

compute parameters that define the mpi distribution of latitudes over tasks in Y direction (npey)

Arguments
  • nj [integer ,in]

  • latperpe [integer ,out]

  • latperpemax [integer ,out]

  • mylatbeg [integer ,out]

  • mylatend [integer ,out]

Options
  • mylathalfbeg_opt [integer ,out,]

  • mylathalfend_opt [integer ,out,]

  • divisible_opt [logical ,out,]

Called from

adv_setup(), bmat1d_setupbens(), bchm_setupch(), bdiff_setup(), ben_setuponeinstance(), bhi_setup(), ocebg_bgchecksst(), csg_setup(), diff_setup(), gst_setup(), gsv_allocate(), lgt_setupfromhco(), lbhi_setup(), lst_setup(), lsp_setup(), oobs_pseudosst(), sstb_computebias(), midas_diagbmatrix, midas_randompert

function  midasmpi_mod/mmpi_myidyfromlat(latindex, nj)
Purpose

use same logic as setup_latbands to compute myidy corresponding to a latitude grid index

Arguments
  • latindex [integer ,in]

  • nj [integer ,in]

Return

ip_y [integer ]

Called from

setobsmpistrategy()

subroutine  midasmpi_mod/mmpi_setup_lonbands(ni, lonperpe, lonperpemax, mylonbeg, mylonend[, divisible_opt])
Purpose

compute parameters that define the mpi distribution of longitudes over tasks in X direction (npex)

Arguments
  • ni [integer ,in]

  • lonperpe [integer ,out]

  • lonperpemax [integer ,out]

  • mylonbeg [integer ,out]

  • mylonend [integer ,out]

Options

divisible_opt [logical ,out,]

Called from

adv_setup(), bmat1d_setupbens(), bchm_setupch(), bdiff_setup(), ben_setuponeinstance(), bhi_setup(), ocebg_bgchecksst(), csg_setup(), diff_setup(), gst_setup(), gsv_allocate(), lgt_setupfromhco(), lbhi_setup(), lst_setup(), lsp_setup(), oobs_pseudosst(), sstb_computebias(), midas_diagbmatrix, midas_randompert

function  midasmpi_mod/mmpi_myidxfromlon(lonindex, ni)
Purpose

use same logic as setup_lonbands to compute myidx corresponding to a longitude grid index

Arguments
  • lonindex [integer ,in]

  • ni [integer ,in]

Return

ip_x [integer ]

Called from

setobsmpistrategy()

subroutine  midasmpi_mod/mmpi_setup_m(ntrunc, mymbeg, mymend, mymskip, mymcount)
Purpose

compute parameters that define the mpi distribution of wavenumber m over tasks in Y direction (npey)

Arguments
  • ntrunc [integer ,in]

  • mymbeg [integer ,out]

  • mymend [integer ,out]

  • mymskip [integer ,out]

  • mymcount [integer ,out]

Called from

bchm_setupch(), ensemblescaledecomposition(), bhi_setup(), csg_setup(), gst_setup(), uvtopsichi_gsv(), lst_setup(), lsp_setup()

subroutine  midasmpi_mod/mmpi_setup_n(ntrunc, mynbeg, mynend, mynskip, myncount)
Purpose

compute parameters that define the mpi distribution of wavenumber n over tasks in X direction (npex)

Arguments
  • ntrunc [integer ,in]

  • mynbeg [integer ,out]

  • mynend [integer ,out]

  • mynskip [integer ,out]

  • myncount [integer ,out]

Called from

bchm_setupch(), ensemblescaledecomposition(), bhi_setup(), csg_setup(), gst_setup(), uvtopsichi_gsv(), lst_setup(), lsp_setup()

subroutine  midasmpi_mod/mmpi_setup_levels(numlevels, mylevbeg, mylevend, mylevcount)
Purpose

compute parameters that define the mpi distribution of levels over tasks in X direction (npex)

Arguments
  • numlevels [integer ,in]

  • mylevbeg [integer ,out]

  • mylevend [integer ,out]

  • mylevcount [integer ,out]

Called from

ben_setuponeinstance(), csg_setup(), gst_setup(), lst_setup(), lsp_setup()

subroutine  midasmpi_mod/mmpi_setup_varslevels(numk, mykbeg, mykend, mykcount)
Purpose

compute parameters that define the mpi distribution of variables/levels (i.e. 1->nk) over all tasks (nprocs)

Arguments
  • numk [integer ,in]

  • mykbeg [integer ,out]

  • mykend [integer ,out]

  • mykcount [integer ,out]

Called from

gsv_allocate()