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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mod_comm.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
?? 第 1 頁 / 共 5 頁
字號:
!-----      subroutine mp_recv(src, qsize_r, b_r)!-----      implicit none      integer, intent(in):: src      integer, intent(in):: qsize_r      real, intent(inout):: b_r(*)      integer i, j, k, n#if defined(USE_MLP)#include "mlp_ptr.h"#endif#if !defined(USE_MLP)      ncall_r = ncall_r + 1#if defined(MPI2)      if (ncall_r == 1) then        call MPI_WIN_FENCE(MPI_MODE_NOSTORE + MPI_MODE_NOSUCCEED, &                           buffwin, ierror)      endif#endif#endif! Recv from src      if ( qsize_r > 0 ) then#if !defined(USE_MLP)#if !defined(MPI2)        nread = nread + 1        call mpi_wait(rqest(nread), Status, ierror)#endif#elseXXXXXXXXXXXXXXXXXXXXXXXXXX  MLP NOT YET IMPLEMENTED XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX!$omp parallel do private(i, j, k)         do k=kfirst,klast            j = jfirst - 1            do i=1,im               b_r(i,k) = g_t2(i,k,j)            enddo         enddoXXXXXXXXXXXXXXXXXXXXXXXXXX  MLP NOT YET IMPLEMENTED XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#endif      endif#if !defined(USE_MLP)      if (ncall_r == ncall_s) then#if !defined(MPI2)        call mpi_waitall(nsend, sqest, Stats, ierror)        nrecv = 0        nread = 0        nsend = 0#endif        ncall_s = 0        ncall_r = 0      endif#endif      end subroutine mp_recv!-----      subroutine mp_send_ua(im, jm, jfirst, jlast, kfirst, klast, p)!-----      integer, intent(in):: im, jm, jfirst, jlast, kfirst, klast      real, intent(in):: p(im,jfirst:jlast,kfirst:klast)       integer i, k      integer src, dest      integer qsize      integer recv_tag, send_tag#if !defined(USE_MLP) && defined(MPI2)      integer n, tmpsize, mysize      integer(kind=MPI_ADDRESS_KIND) mydisp#endif#if defined(USE_MLP)#include "mlp_ptr.h"#endif#if !defined(USE_MLP)      ncall_s = ncall_s + 1#if defined(MPI2)      if (ncall_s == 1) then        call MPI_WIN_FENCE(MPI_MODE_NOPRECEDE, buffwin, ierror)      endif#endif#endif#if !defined(USE_MLP) && !defined(MPI2)! Start recv from north      if ( jfirst > 1 ) then         src = gid - 1         recv_tag = src         qsize = im*(klast-kfirst+1)         nrecv = nrecv + 1         tdisp = igonorth*idimsize + (ncall_s-1)*idimsize*nbuf         call mpi_irecv(buff_r(tdisp+1), qsize, mp_precision, src, &                        recv_tag, commglobal, rqest(nrecv), ierror)      endif#endif! Send data to North      if ( jlast < jm ) then#if !defined(USE_MLP)        dest = gid + 1        qsize = im*(klast-kfirst+1)        tdisp = igonorth*idimsize + (ncall_s-1)*idimsize*nbuf        call BufferPack3d(p, 1, im, jfirst, jlast, kfirst, klast, &                             1, im, jlast,  jlast, kfirst, klast, &                             buff_s(tdisp+1))#if defined(MPI2)!$omp parallel do private(n,tmpsize,mysize,mydisp)        do n=1,numcpu          tmpsize = ceiling(real(qsize)/real(numcpu))          mysize = MIN(tmpsize, MAX(qsize-(tmpsize*(n-1)),0))          mydisp = tdisp + (n-1)*tmpsize          call MPI_PUT(buff_s(mydisp+1), mysize, mp_precision, dest, &                       mydisp, mysize, mp_precision, buffwin, ierror)        enddo#else        send_tag = gid        nsend = nsend + 1        call mpi_isend(buff_s(tdisp+1), qsize, mp_precision, dest, &                       send_tag, commglobal, sqest(nsend), ierror)#endif#else!$omp parallel do private(i, k)         do k=kfirst,klast            do i=1,im               g_4d(i,jlast,k,1) = p(i,jlast,k)            enddo         enddo#endif      endif      end subroutine mp_send_ua!-----      subroutine mp_recv_ua(im, jm, jfirst, jlast, kfirst, klast, uasouth)!-----      implicit none      integer, intent(in):: im, jm, jfirst, jlast, kfirst, klast      real, intent(inout):: uasouth(im, kfirst:klast)       integer i, j, k, n#if defined(USE_MLP)#include "mlp_ptr.h"#endif#if !defined(USE_MLP)      ncall_r = ncall_r + 1#if defined(MPI2)      if (ncall_r == 1) then        call MPI_WIN_FENCE(MPI_MODE_NOSTORE + MPI_MODE_NOSUCCEED, &                           buffwin, ierror)      endif#endif#endif! Recv from south      if ( jfirst > 1 ) then#if !defined(USE_MLP)#if !defined(MPI2)        nread = nread + 1        call mpi_wait(rqest(nread), Status, ierror)#endif        tdisp = igonorth*idimsize + (ncall_r-1)*idimsize*nbuf        call BufferUnPack2d(uasouth, 1, im, kfirst, klast, &                                     1, im, kfirst, klast, &                                     buff_r(tdisp+1))#else!$omp parallel do private(i, j, k)         do k=kfirst,klast            j = jfirst - 1            do i=1,im               uasouth(i,k) = g_4d(i,j,k,1)            enddo         enddo#endif      endif#if !defined(USE_MLP)      if (ncall_r == ncall_s) then#if !defined(MPI2)        call mpi_waitall(nsend, sqest, Stats, ierror)        nrecv = 0        nread = 0        nsend = 0#endif        ncall_s = 0        ncall_r = 0      endif#endif      end subroutine mp_recv_ua!-----      subroutine mp_reduce_max(km, cymax)!-----      implicit none      integer k, km, n      real maxin(km)      real cymax(km)#if !defined(USE_MLP)!$omp parallel do private(k)      do k=1,km        maxin(k) = cymax(k)      enddo      call mpi_allreduce( maxin, cymax, km, mp_precision, MPI_MAX, &                          commglobal, ierror )#else#include "mlp_ptr.h"      do k=1,km         g_t3(k,nowpro) = cymax(k)      enddo      call mlp_barrier(gid, gsize)      do n=1,numpro         do k=1,km            cymax(k) = max(g_t3(k,n), cymax(k))         enddo      enddo      call mlp_barrier(gid, gsize) !may not be necessay, test, BW#endif      end subroutine mp_reduce_max!-----      subroutine mp_minmax(qmin, qmax)!-----      implicit none      real, intent(inout):: qmin, qmax      real minin, maxin      integer n#if !defined(USE_MLP)      maxin = qmax      call mpi_allreduce(maxin, qmax, 1, mp_precision, MPI_MAX, &                         commglobal, ierror)      minin = qmin      call mpi_allreduce(minin, qmin, 1, mp_precision, MPI_MIN, &                         commglobal, ierror)#else#include "mlp_ptr.h"      g_t3(1,nowpro) = qmin      g_t3(2,nowpro) = qmax      call mlp_barrier(gid, gsize)      do n=1,numpro         qmin = min(g_t3(1,n), qmin)         qmax = max(g_t3(2,n), qmax)      enddo      call mlp_barrier(gid, gsize)#endif      end subroutine mp_minmax!-----      subroutine mp_sum1d(jm, jfirst, jlast, qin, sum0)!-----      implicit none      integer jm      integer jfirst, jlast      real  qin(jfirst:jlast)! Output:      real  sum0! Local:      integer j, n      real qout(jm)#if !defined(USE_MLP)      call mp_allgather1d(jm, jfirst, jlast, qin, qout)      sum0 = 0.      do j=1,jm        sum0 = sum0 + qout(j)      enddo#else#include "mlp_ptr.h"! Gather all subdomain vector from all PEs to a global array      do j=jfirst,jlast         g_1d(j) = qin(j)      enddo      call mlp_barrier(gid, gsize)! Compute the sum if "Master"      if ( gid == 0 ) then            sum0 = 0.         do j=1,jm            sum0 = sum0 + g_1d(j)         enddo      endif      call mp_bcst_real(sum0)#endif      end subroutine mp_sum1d!-----      subroutine mp_bcst_real(val)!-----! Send real "val" from Process=id to All other Processes      real val#if !defined(USE_MLP)      call mpi_bcast(val, 1, mp_precision, 0, commglobal, ierror)#else#include "mlp_ptr.h"      if ( gid == 0 ) then          g_1d(1) = val      endif      call mlp_barrier(gid, gsize)      if ( gid /= 0 ) then          val = g_1d(1)      endif      call mlp_barrier(gid, gsize)   !may not be necessary, BW#endif      end subroutine mp_bcst_real!-----      subroutine mp_bcst_int(intv)!-----! Send integer "intv" from Process=id to All other Processes      integer intv#if !defined(USE_MLP)      call mpi_bcast(intv, 1, MPI_INTEGER, 0, commglobal, ierror)#else#include "mlp_ptr.h"      if ( gid == 0 ) then          g_1d(1) = intv      endif      call mlp_barrier(gid, gsize)      if ( gid /= 0 ) then          intv = nint(g_1d(1))      endif      call mlp_barrier(gid, gsize)   !may not be necessary, BW#endif      end subroutine mp_bcst_int!-----      subroutine mp_bcst_r2d(im, jm, jfirst, jlast, qin, id)!-----! Send 2D array qin from Process=id to All other Processes      integer im, jm      integer id        ! source ID      integer jfirst, jlast      real qin(im,jm)      integer i, j, n       integer j1, j2      integer qsize_s      integer qsize_r      integer src, dest      integer send_tag, recv_tag#if !defined(USE_MLP)      integer rqst(numpro), rq_stats(numpro*MPI_STATUS_SIZE)#if defined(MPI2)      integer p, tmpsize, mysize      integer(kind=MPI_ADDRESS_KIND) mydisp#endif#endif#if !defined(USE_MLP)#if defined(MPI2)      call MPI_WIN_FENCE(MPI_MODE_NOPRECEDE, buff4dwin, ierror)#endif      if (gid == id) then         do n=1,numpro           qsize_s = im*jm           dest = n-1           tdisp = 0#if defined(MPI2)           call BufferPack2d(qin, 1, im, 1, jm, 1, im, 1, jm, buff4d(tdisp+1))!$omp parallel do private(p,tmpsize,mysize,mydisp)           do p=1,numcpu             tmpsize = ceiling(real(qsize_s)/real(numcpu))             mysize = MIN(tmpsize, MAX(qsize_s-(tmpsize*(p-1)),0))             mydisp = tdisp + (p-1)*tmpsize             call MPI_PUT(buff4d(mydisp+1), mysize, mp_precision ,dest, &                          mydisp, mysize, mp_precision, buff4dwin, ierror)           enddo#else           send_tag = gid           nsend = nsend + 1           call mpi_isend(qin, qsize_s, mp_precision, dest, &                          send_tag, commglobal, rqst(nsend), ierror)#endif         enddo      endif#if defined(MPI2)      call MPI_WIN_FENCE(MPI_MODE_NOSTORE + MPI_MODE_NOSUCCEED, &                         buff4dwin, ierror)#else      qsize_r = im*jm      src = id      recv_tag = src      call mpi_recv(buff4d, qsize_r, mp_precision, src, recv_tag, &                    commglobal, Status, ierror)#endif      tdisp = (jfirst-1)*im      call BufferUnPack2d(qin, 1, im, 1, jm, 1, im, jfirst, jlast, &                          buff4d(tdisp+1))#if !defined(MPI2)      if (nsend /= 0) then        call mpi_waitall(nsend, rqst, rq_stats, ierror)        nsend = 0      endif#endif#else#include "mlp_ptr.h"      if ( gid == id ) then!$omp parallel do private(i, j)          do j=1,jm             do i=1,im                g_2d(i,j) = qin(i,j)             enddo          enddo      endif      call mlp_barrier(gid, gsize)      if ( gid /= id ) then!$omp parallel do private(i, j)          do j=jfirst,jlast             do i=1,im                qin(i,j) = g_2d(i,j)             enddo          enddo      endif      call mlp_barrier(gid, gsize)#endif      end subroutine mp_bcst_r2d!-----      subroutine mp_gath_r2d(im, jm, jfirst, jlast, qin, id)!-----      integer im, jm      integer id        ! source ID      integer jfirst, jlast      real qin(im,jm)! Local:      integer i, j, k, iq      integer j1, j2      integer n      integer qsize      integer src, dest      integer send_tag, recv_tag#if !defined(USE_MLP) && defined(MPI2)      integer p, tmpsize, mysize      integer(kind=MPI_ADDRESS_KIND) mydisp#endif  #if !defined(USE_MLP)#if defined(MPI2)      call MPI_WIN_FENCE(MPI_MODE_NOPRECEDE, buff4dwin, ierror)#endif      dest = id      tdisp = (

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费观看男女羞羞视频| 日韩和欧美的一区| 欧美视频在线一区| 高清不卡在线观看| 天天综合色天天| 亚洲色图丝袜美腿| 久久婷婷一区二区三区| 欧美日韩夫妻久久| 成人av集中营| 极品瑜伽女神91| 午夜精品久久一牛影视| 日韩一区欧美一区| 国产欧美一区二区在线| 日韩欧美国产小视频| 欧美视频在线一区| 91老师国产黑色丝袜在线| 国产精品亚洲人在线观看| 美女视频黄频大全不卡视频在线播放| 亚洲美女免费在线| 国产精品国产自产拍高清av| 欧美精品一区二区高清在线观看| 欧美日韩精品一区二区三区蜜桃| 成人av动漫网站| 国产精品18久久久久久久久 | 亚洲欧美精品午睡沙发| 欧美日韩一区二区不卡| 喷白浆一区二区| 亚洲精品视频在线观看免费| 欧美激情一区二区三区全黄| 久久综合九色综合97_久久久| 91精品免费在线观看| 欧美日韩久久久久久| 91黄色激情网站| 色老汉av一区二区三区| 一本一道波多野结衣一区二区| 成人精品鲁一区一区二区| 国产另类ts人妖一区二区| 国内外成人在线| 国产一区二区伦理| 国产成人亚洲精品青草天美| 久久99国产精品成人| 中文字幕综合网| 日本一区二区电影| 久久五月婷婷丁香社区| 精品美女被调教视频大全网站| 欧美日韩精品一区二区三区四区| 在线视频一区二区三| 国产成人精品www牛牛影视| 精品在线观看免费| 麻豆国产精品视频| 久久精品国产久精国产爱| 婷婷夜色潮精品综合在线| 亚洲一区二区三区中文字幕在线 | 国产成人超碰人人澡人人澡| 精品一区二区三区影院在线午夜 | 精品无人码麻豆乱码1区2区 | 久久99久久精品| 精品一区二区三区香蕉蜜桃| 日本 国产 欧美色综合| 五月综合激情日本mⅴ| 亚洲色图在线播放| 蜜桃免费网站一区二区三区| 麻豆精品国产91久久久久久| 蜜臀精品一区二区三区在线观看| 日韩在线一区二区| 日韩国产高清影视| 久久97超碰国产精品超碰| 国内精品国产三级国产a久久| 精品一区二区三区视频在线观看| 国产一区二区三区在线观看免费 | 国产成人综合在线| 国产成人精品影视| 波多野结衣亚洲一区| av在线免费不卡| 91久久国产最好的精华液| 欧美色涩在线第一页| 欧美视频一区二区三区四区| 6080国产精品一区二区| 欧美成人精品3d动漫h| 久久人人97超碰com| 国产亚洲欧洲一区高清在线观看| 久久精品夜夜夜夜久久| 精品国产伦一区二区三区免费| 精品88久久久久88久久久| 国产精品久久看| 亚洲国产成人av| 寂寞少妇一区二区三区| 成人ar影院免费观看视频| 欧美亚洲禁片免费| 日韩精品中文字幕一区| 国产精品久久一级| 亚洲国产精品影院| 国模一区二区三区白浆| 91在线观看高清| 欧美大片在线观看| 中文字幕在线视频一区| 午夜久久久久久久久| 国产一区二区伦理片| 欧美在线综合视频| 26uuu亚洲| 夜夜嗨av一区二区三区中文字幕| 久久国产精品色| 91麻豆国产自产在线观看| 欧美高清dvd| 国产精品久久久99| 日本亚洲三级在线| 成人av集中营| 久久一留热品黄| 亚洲国产欧美另类丝袜| 国产成人鲁色资源国产91色综| 欧美视频在线观看一区二区| 亚洲精品国产一区二区精华液| 免费观看日韩电影| 欧亚一区二区三区| 国产欧美日韩视频一区二区 | 国产麻豆精品视频| 在线看国产一区二区| 国产精品日韩精品欧美在线| 日欧美一区二区| av动漫一区二区| 国产精品午夜在线观看| 久久精品噜噜噜成人88aⅴ | 精品成人私密视频| 亚洲图片欧美综合| 91在线视频播放地址| 国产免费成人在线视频| 蜜桃av噜噜一区| 欧美日韩成人高清| 亚洲一卡二卡三卡四卡| 波多野结衣在线aⅴ中文字幕不卡| 日韩精品一区二区三区老鸭窝| 自拍偷拍欧美精品| 色婷婷狠狠综合| 成人欧美一区二区三区小说| 国产精品影视在线观看| 日韩免费一区二区三区在线播放| 亚洲成人三级小说| 色丁香久综合在线久综合在线观看| 久久综合久久99| 免费观看一级欧美片| 欧美一区二区三区免费| 偷拍亚洲欧洲综合| 欧美日韩在线观看一区二区 | 色婷婷av一区| 亚洲欧美怡红院| 成人视屏免费看| 久久久www成人免费无遮挡大片 | 亚洲精品视频免费看| av在线一区二区| 国产精品的网站| 丁香婷婷综合激情五月色| 国产午夜亚洲精品理论片色戒| 精品一区二区在线播放| 久久在线免费观看| 粉嫩嫩av羞羞动漫久久久 | 国产精品卡一卡二| 99精品久久99久久久久| 亚洲狠狠丁香婷婷综合久久久| 色综合久久中文字幕综合网| 亚洲精品视频一区| 欧美日韩视频不卡| 丝瓜av网站精品一区二区| 欧美日韩精品欧美日韩精品| 亚洲第一激情av| 日韩一区二区精品葵司在线| 久久99国产精品尤物| 久久夜色精品一区| av午夜精品一区二区三区| 一区精品在线播放| 色婷婷久久综合| 日本美女视频一区二区| 日韩久久久精品| 成人短视频下载| 一区二区三区不卡视频在线观看 | 欧美日韩国产精品自在自线| 视频一区国产视频| 欧美电影免费提供在线观看| 国产精品亚洲а∨天堂免在线| 中文字幕日韩一区| 欧美日韩精品一区二区三区蜜桃| 蜜桃视频免费观看一区| 日本一区二区免费在线观看视频| 91原创在线视频| 日本免费在线视频不卡一不卡二| 精品sm捆绑视频| 91伊人久久大香线蕉| 日韩av一区二区在线影视| 精品少妇一区二区三区在线视频| 国产一区二区在线视频| 国产精品乱人伦一区二区| 欧美视频在线观看一区二区| 男人操女人的视频在线观看欧美| 久久嫩草精品久久久精品| 国产成人免费视频一区| 亚洲最快最全在线视频| 久久久久久一二三区| 色偷偷88欧美精品久久久| 九九**精品视频免费播放| 最近日韩中文字幕| 欧美mv日韩mv国产网站app|