h5writer_mpi_pw.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:h5writer 作者: mhantke 项目源码 文件源码
def _expand_poll(self):
        #log_debug(logger, self._log_prefix + "Polling for stack expansion")
        expand = False
        if self.comm.Iprobe(source=(self.comm.rank-1) % self.comm.size, tag=MPI_TAG_EXPAND):
            buf1 = numpy.empty(1, dtype='i')
            self.comm.Recv([buf1, MPI.INT], source=(self.comm.rank-1) %  self.comm.size, tag=MPI_TAG_EXPAND)
            buf2 = numpy.array(1, dtype='i')
            self.comm.Send([buf2, MPI.INT], dest=(self.comm.rank+1) %  self.comm.size, tag=MPI_TAG_EXPAND)
            expand= True
        # Sending of expansion signal needed?
        elif self._i >= self._stack_length:
            buf1 = numpy.array(1, dtype='i')
            req_s = self.comm.Isend([buf1, MPI.INT], dest=(self.comm.rank+1) %  self.comm.size, tag=MPI_TAG_EXPAND)
            buf2 = numpy.empty(1, dtype='i')
            req_r = self.comm.Irecv([buf2, MPI.INT], source=(self.comm.rank-1) %  self.comm.size, tag=MPI_TAG_EXPAND)
            while True:
                sent     = req_s.Test()
                received = req_r.Test()
                if sent and received:
                    break
                time.sleep(0.01)
            expand = True
        if expand:
            log_debug(logger, self._log_prefix + "Do stack expansion")
            self.comm.Barrier()
            self._sync_i_max()
            self._expand_stacks_mpi()
        else:
            pass
            #log_debug(logger, self._log_prefix + "No stack expansion")
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号