亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? spmdmod.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
字號:
#include <misc.h>#include <preproc.h>module spmdMod!----------------------------------------------------------------------- ! ! Purpose: ! MPI routines for initialization and computing arguments for! gatherv and scatterv operations! ! Method: ! ! Author: Mariana Vertenstein! !-----------------------------------------------------------------------! $Id: spmdMod.F90,v 1.7.2.2 2001/11/26 15:28:11 mvertens Exp $!-----------------------------------------------------------------------#if (defined COUP_CSM)  use shr_msg_mod#endif#if (!defined SPMD)  logical :: masterproc = .true. ! proc 0 logical for printing msgs  integer :: iam = 0#endif#if (defined SPMD)#if (defined COUP_CAM)  use mpishorthand  use spmd_dyn, only: npes  use pmgrid  , only: masterproc, iam #endif #if (defined OFFLINE)  use mpishorthand#endif#if (defined COUP_CSM)  use mpishorthand, only : mpiint, mpichar, mpilog, mpir8, mpicom, mpipk#endif#if (defined OFFLINE) || (defined COUP_CSM)  integer :: npes        !number of processors  integer :: iam         !proc number  logical :: masterproc  !proc 0 logical for printing msgs#endif  integer, public, allocatable :: proc_landi(:)  integer, public, allocatable :: proc_landf(:)  integer, public, allocatable :: proc_patchi(:)  integer, public, allocatable :: proc_patchf(:)  integer, public, allocatable :: proc_patchpts(:)  integer, public, allocatable :: proc_landpts(:)  SAVE!===============================================================================CONTAINS!===============================================================================#if (defined OFFLINE) || (defined COUP_CSM)  subroutine spmd_init!----------------------------------------------------------------------- ! ! Purpose: MPI initialization (number of cpus, processes, tids, etc)!!-----------------------------------------------------------------------  implicit none! ------------------------ local variables -----------------------------    integer i,j        ! indices    integer ier        ! return error status          integer, allocatable :: length(:)    integer, allocatable :: displ(:)    character*(MPI_MAX_PROCESSOR_NAME), allocatable :: proc_name(:)#if (defined OFFLINE)    logical mpi_running#endif!-----------------------------------------------------------------------#if (defined OFFLINE)! Initialize mpi    call mpi_initialized (mpi_running, ier)    if (.not. mpi_running) call mpi_init (ier)       #endif! Set mpishorthand variables.  Need to set as variables rather ! than parameters since some MPI implementations set values for ! MPI tags at run time.    mpiint  = mpi_integer    mpichar = mpi_character    mpilog  = mpi_logical    mpir8   = mpi_real8    mpipk   = mpi_packed#if (defined OFFLINE)    mpicom  = MPI_COMM_WORLD#elif (defined COUP_CSM)    mpicom  = SHR_MSG_COMM_LND#endif! Get my processor id      call mpi_comm_rank(mpicom, iam, ier)      if (iam==0) then        masterproc = .true.    else       masterproc = .false.    end if! Get number of processors    call mpi_comm_size(mpicom, npes, ier) ! Get my processor names    allocate (length(0:npes-1))    allocate (displ(0:npes-1))    allocate (proc_name(0:npes-1))    call mpi_get_processor_name (proc_name(iam),length(iam),ier)    call mpi_allgather (length(iam),1,mpiint,length,1,mpiint,mpicom,ier)    do i =0,npes-1       displ(i)=i*MPI_MAX_PROCESSOR_NAME    end do    call mpi_gatherv (proc_name(iam),length(iam),mpichar, &                      proc_name,length,displ,mpichar,0,mpicom,ier)    if (masterproc) then       write(6,100)npes       write(6,200)       write(6,220)       do i=0,npes-1          write(6,250)i,(proc_name((i))(j:j),j=1,length(i))       end do    endif    deallocate (length)    deallocate (displ)    deallocate (proc_name)100 format(i3," pes participating in computation")200 format(/,35('-'))220 format(/,"NODE#",2x,"NAME")250 format("(",i3,")",2x,100a1)    return  end subroutine spmd_init#endif!===============================================================================  subroutine spmd_init_patch!----------------------------------------------------------------------- ! ! Purpose: Initialize arrays for number of land/patch points per proc! !-----------------------------------------------------------------------     allocate (proc_landi(0:npes-1))    allocate (proc_landf(0:npes-1))    allocate (proc_landpts(0:npes-1))    allocate (proc_patchi(0:npes-1))    allocate (proc_patchf(0:npes-1))    allocate (proc_patchpts(0:npes-1))        return  end subroutine spmd_init_patch!===============================================================================  subroutine compute_mpigs_patch (nfact, numtot, numperproc, displs)!------------------------------------------------------------------! ! Purpose: Compute arguments for gatherv, scatterv for patche vectors! !------------------------------------------------------------------    implicit none! ------------------- arguments -----------------------------------    integer, intent(in ) :: nfact                ! multiplicative factor for patches    integer, intent(out) :: numtot               ! total number of elements (to send or recv)    integer, intent(out) :: numperproc(0:npes-1) ! per-PE number of items to receive    integer, intent(out) :: displs(0:npes-1)     ! per-PE displacements!------------------------------------------------------------------! ---------------------- local variables --------------------------    integer :: p                                 ! index!------------------------------------------------------------------       numtot = (proc_patchpts(iam))*nfact        do p=0,npes-1       numperproc(p) = proc_patchpts(p)*nfact    end do        displs(0) = 0    do p=1,npes-1       displs(p) = displs(p-1) + numperproc(p-1)    end do      end subroutine compute_mpigs_patch!===============================================================================  subroutine compute_mpigs_land (nfact, numtot, numperproc, displs)!------------------------------------------------------------------! ! Purpose: Compute arguments for gatherv, scatterv for land vectors! !------------------------------------------------------------------    implicit none! ------------------- arguments -----------------------------------    integer, intent(in ) :: nfact                ! multiplicative factor for patches    integer, intent(out) :: numtot               ! total number of elements (to send or recv)    integer, intent(out) :: numperproc(0:npes-1) ! per-PE number of items to receive    integer, intent(out) :: displs(0:npes-1)     ! per-PE displacements!------------------------------------------------------------------! ---------------------- local variables --------------------------    integer :: p                                 ! index!------------------------------------------------------------------       numtot = (proc_landpts(iam))*nfact        do p=0,npes-1       numperproc(p) = proc_landpts(p)*nfact    end do        displs(0) = 0    do p=1,npes-1       displs(p) = displs(p-1) + numperproc(p-1)    end do      end subroutine compute_mpigs_land!===============================================================================#endifend module spmdMod

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区日韩精品中文字幕| 日韩色在线观看| 国产欧美一区二区三区鸳鸯浴 | 日韩有码一区二区三区| 欧美性猛交xxxxxx富婆| 亚洲午夜免费视频| 欧美肥妇bbw| 国内外精品视频| 欧美国产综合一区二区| 99久久免费视频.com| 一区二区三区影院| 在线不卡中文字幕播放| 狠狠狠色丁香婷婷综合激情| 久久综合色播五月| 成人精品电影在线观看| 亚洲欧美一区二区三区久本道91| 色婷婷综合久久久中文字幕| 午夜精品在线视频一区| 精品美女一区二区| 不卡一区中文字幕| 亚洲国产精品欧美一二99| 69堂精品视频| 国产成人精品免费| 亚洲精品免费视频| 欧美一区二区三区视频免费播放 | 国产亚洲婷婷免费| 97aⅴ精品视频一二三区| 亚洲国产精品自拍| 日韩欧美123| 97久久精品人人爽人人爽蜜臀| 亚洲精品高清在线| 日韩免费观看2025年上映的电影 | 91久久精品网| 天堂蜜桃一区二区三区| 精品剧情v国产在线观看在线| 国产传媒欧美日韩成人| 亚洲国产cao| 亚洲国产精品高清| 欧美疯狂性受xxxxx喷水图片| 国产精品1区2区| 亚洲国产视频网站| 中文幕一区二区三区久久蜜桃| 色狠狠桃花综合| 精品中文字幕一区二区小辣椒| ...av二区三区久久精品| 91精品国模一区二区三区| 成人av综合在线| 99精品偷自拍| 久久老女人爱爱| 欧美日韩黄色一区二区| 国产成人午夜电影网| 日韩精品欧美成人高清一区二区| 国产精品视频第一区| 日韩午夜在线影院| 欧美日韩一级视频| 97se狠狠狠综合亚洲狠狠| 国产乱码精品一品二品| 日本在线播放一区二区三区| 亚洲乱码国产乱码精品精的特点| 久久亚洲影视婷婷| 欧美一区二区三区爱爱| 欧美日韩一区二区三区在线看| 粉嫩久久99精品久久久久久夜| 99re在线精品| 老司机一区二区| 国产精品久线在线观看| 精品欧美一区二区三区精品久久| 麻豆精品在线看| 日韩一级精品视频在线观看| 风间由美一区二区三区在线观看 | 成人18视频在线播放| 国产成人免费xxxxxxxx| 日韩福利视频导航| 欧美国产一区在线| 91精品福利在线一区二区三区 | 麻豆一区二区三| 亚洲制服丝袜一区| 成人欧美一区二区三区白人| 国产精品美女久久久久久2018| 欧美韩国日本不卡| 日韩欧美黄色影院| 8x8x8国产精品| 制服丝袜一区二区三区| 7777女厕盗摄久久久| 91超碰这里只有精品国产| 欧美在线|欧美| 欧美久久高跟鞋激| 精品日韩99亚洲| 亚洲欧洲日韩女同| 日韩国产在线观看| 亚洲精品美腿丝袜| 免费观看日韩av| 精品一区二区三区免费视频| 粉嫩av亚洲一区二区图片| 亚洲欧洲成人精品av97| 欧美r级在线观看| 久久一区二区三区四区| 久久网站热最新地址| 中文字幕在线观看一区二区| 日韩精品一区二区三区中文精品 | 日本亚洲一区二区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 91福利资源站| 国产三级精品三级在线专区| 美女一区二区三区在线观看| 国产一区二区免费视频| 欧洲一区二区av| 国产精品私人影院| 五月婷婷综合在线| 91精品国产入口在线| 日韩毛片高清在线播放| 午夜精品影院在线观看| 国产成人99久久亚洲综合精品| 91精品1区2区| 久久精品人人做人人综合| 欧美一级片在线观看| 亚洲电影第三页| 国产另类ts人妖一区二区| 欧美人与z0zoxxxx视频| 亚洲永久精品国产| 欧美精品aⅴ在线视频| 亚洲日本电影在线| 处破女av一区二区| 制服丝袜一区二区三区| 国产精品亚洲专一区二区三区| 国产视频一区二区在线观看| 久久aⅴ国产欧美74aaa| 欧美图片一区二区三区| 日韩欧美二区三区| 日韩成人午夜电影| 日韩免费在线观看| 日本欧美韩国一区三区| 制服.丝袜.亚洲.另类.中文| 精品国产三级a在线观看| 日韩在线一区二区| 欧美一区二区私人影院日本| 久久超级碰视频| 一区二区三区丝袜| 日韩欧美三级在线| 91香蕉视频黄| 蜜臀av一区二区| 樱桃国产成人精品视频| 日韩视频一区二区| 国产成人无遮挡在线视频| 国产日韩欧美制服另类| 色琪琪一区二区三区亚洲区| 亚洲国产成人精品视频| 精品久久久久久久人人人人传媒| 精久久久久久久久久久| 亚洲欧美另类小说| 欧美日韩一区二区三区四区 | 欧美精品黑人性xxxx| 日韩国产精品大片| 日本道精品一区二区三区| 国产欧美一区二区三区沐欲 | 亚洲最大成人综合| 欧美一区二区免费观在线| 国产呦萝稀缺另类资源| 国产精品久久久久久妇女6080| 成人黄动漫网站免费app| 国产精品污网站| 日韩一区二区三区观看| 波多野结衣一区二区三区| 中文字幕亚洲电影| 久久久不卡网国产精品一区| 91影视在线播放| 亚洲成在人线免费| 国产精品久久久久婷婷二区次| 678五月天丁香亚洲综合网| 国产风韵犹存在线视精品| 亚洲一区二区黄色| 国产精品免费人成网站| 久久理论电影网| 日韩一区二区三区在线观看| 色综合一个色综合| 国产91高潮流白浆在线麻豆| 激情成人综合网| 美女一区二区三区在线观看| 亚洲国产视频在线| 亚洲精品欧美专区| 国产欧美精品一区| 久久欧美中文字幕| 国产精品1区2区3区在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 欧美一区在线视频| 91丨九色丨蝌蚪丨老版| 91在线国产观看| av激情综合网| 91日韩一区二区三区| 欧美日韩中文字幕一区二区| 欧美日韩免费电影| 欧美电影一区二区| 日韩美女视频在线| 日韩女优视频免费观看| 26uuu亚洲综合色欧美| 欧美另类高清zo欧美| 在线不卡的av| 91精品国产全国免费观看| 色偷偷久久人人79超碰人人澡| 麻豆精品国产传媒mv男同|