⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpdstdcp.py

📁 刚才是说明 现在是安装程序在 LINUX环境下进行编程的MPICH安装文件
💻 PY
📖 第 1 页 / 共 2 页
字号:
                                mpd_send_one_msg(rhsSocket,msgToSend)                    else:                        parentSocket.sendall(line)                        # parentSocket.sendall('FWD by %d: |%s|' % (myRank,line) )                elif readySocket == rchildSocket:                    line = rchildFile.readline()                    if not line:                        del socketsToSelect[rchildSocket]                        rchildSocket.close()                        numDone += 1                        if numDone >= numToDo:                            if parentSocket:                                parentSocket.close()                                parentSocket = 0                            if myRank == 0 or endBarrierLoop1Recvd:                                endBarrierLoop1Recvd = 0                                msgToSend = {'cmd' : 'end_barrier_loop_1'}                                mpd_send_one_msg(rhsSocket,msgToSend)                    else:                        parentSocket.sendall(line)                        # parentSocket.sendall('FWD by %d: |%s|' % (myRank,line) )                elif readySocket == lhsSocket:                    msg = mpd_recv_one_msg(lhsSocket)                    if not msg:                        del socketsToSelect[lhsSocket]                        lhsSocket.close()                    elif msg['cmd'] == 'end_barrier_loop_1':                        if myRank == 0:                            msgToSend = { 'cmd' : 'end_barrier_loop_2' }                            mpd_send_one_msg(rhsSocket,msgToSend)                        else:                            if numDone >= numToDo:                                msgToSend = {'cmd' : 'end_barrier_loop_1'}                                mpd_send_one_msg(rhsSocket,msgToSend)                            else:                                endBarrierLoop1Recvd = 1                    elif msg['cmd'] == 'end_barrier_loop_2':                        endBarrierDone = 1                        if myRank != 0:                            mpd_send_one_msg(rhsSocket,msg)                    elif msg['cmd'] == 'pmi_barrier_loop_1':                        if myRank == 0:                            msgToSend = { 'cmd' : 'pmi_barrier_loop_2' }                            mpd_send_one_msg(rhsSocket,msgToSend)                            pmiMsgToSend = 'cmd=barrier_out\n'                            pmiSocket.sendall(pmiMsgToSend)                        else:                            pmiBarrierLoop1Recvd = 1                            if pmiBarrierInRecvd:                                mpd_send_one_msg(rhsSocket,msg)                    elif msg['cmd'] == 'pmi_barrier_loop_2':                        pmiBarrierInRecvd = 0                        pmiBarrierLoop1Recvd = 0                        if myRank != 0:                            pmiMsgToSend = 'cmd=barrier_out\n'                            pmiSocket.sendall(pmiMsgToSend)                            mpd_send_one_msg(rhsSocket,msg)                    elif msg['cmd'] == 'pmi_get':                        if msg['from_rank'] == myRank:                            pmiMsgToSend = 'cmd=get_result rc=-1 msg="%s"\n' % msg['key']                            pmiSocket.sendall(pmiMsgToSend)                            mpd_print(0000, "RMB: SENT pmimsg=:%s:" % pmiMsgToSend )                        else:                            kvsname = msg['kvsname']                            key = msg['key']                            cmd = 'value = ' + kvsname + '["' + key + '"]'                            try:                                exec(cmd)                                gotit = 1                            except Exception, errmsg:                                gotit = 0                            if gotit:                                msgToSend = { 'cmd' : 'pmi_get_response', 'value' : value, 'to_rank' : msg['from_rank'] }                                mpd_send_one_msg(rhsSocket,msgToSend)                            else:                                mpd_send_one_msg(rhsSocket,msg)                    elif msg['cmd'] == 'pmi_get_response':                        pmiMsgToSend = 'cmd=get_result rc=0 value=%s\n' % (msg['value'])                        pmiSocket.sendall(pmiMsgToSend)                    else:                        mpd_print(1, 'unrecognized msg on lhs :%s:' % (msg) )                elif readySocket == rhsSocket:                    msg = mpd_recv_one_msg(rhsSocket)                    if not msg:                        del socketsToSelect[rhsSocket]                        rhsSocket.close()                    else:                        mpd_print(1, 'unexpected msg from rhs :%s:' % (msg) )                elif readySocket == pmiSocket:                    line = pmiFile.readline()                    mpd_print(0000, 'RMB: got msg from pmi :%s:' % (line) )                    if not line:                        del socketsToSelect[pmiSocket]                        pmiSocket.close()                    else:                        parsedMsg = parse_pmi_msg(line)                        if parsedMsg['cmd'] == 'get_my_kvsname':                            pmiMsgToSend = 'cmd=my_kvsname kvsname=default_kvs\n'                            pmiSocket.sendall(pmiMsgToSend)			elif parsedMsg['cmd'] == 'get_maxes':			    pmiMsgToSend = 'cmd=maxes kvsname_max=4096 ' + \			                   'keylen_max=4096 vallen_max=4096\n'                            pmiSocket.sendall(pmiMsgToSend)                        elif parsedMsg['cmd'] == 'put':                            kvsname = parsedMsg['kvsname']                            key = parsedMsg['key']                            value = parsedMsg['value']                            cmd = kvsname + '["' + key + '"] = "' + value + '"'                            mpd_print(0000, "RMB: cmd=:%s:" % cmd )                            try:                                exec(cmd)                                mpd_print(0000, "RMB: finished cmd=:%s:" % cmd )                                pmiMsgToSend = 'cmd=put_result rc=0\n'                                pmiSocket.sendall(pmiMsgToSend)                            except Exception, errmsg:                                pmiMsgToSend = 'cmd=put_result rc=-1 msg="%s"\n' % errmsg                                pmiSocket.sendall(pmiMsgToSend)                        elif parsedMsg['cmd'] == 'barrier_in':                            pmiBarrierInRecvd = 1                            if myRank == 0  or  pmiBarrierLoop1Recvd:                                msgToSend = { 'cmd' : 'pmi_barrier_loop_1' }                                mpd_send_one_msg(rhsSocket,msgToSend)                        elif parsedMsg['cmd'] == 'get':                            kvsname = parsedMsg['kvsname']                            key = parsedMsg['key']                            cmd = 'value = ' + kvsname + '["' + key + '"]'                            mpd_print(0000, "RMB: cmd=:%s:" % cmd )                            try:                                exec(cmd)                                gotit = 1                            except Exception, errmsg:                                gotit = 0                            if gotit:                                pmiMsgToSend = 'cmd=get_result rc=0 value=%s\n' % (value)                                pmiSocket.sendall(pmiMsgToSend)                                mpd_print(0000, "RMB: SENT pmimsg=:%s:" % pmiMsgToSend )                            else:                                msgToSend = { 'cmd' : 'pmi_get', 'key' : key,                                              'kvsname' : kvsname, 'from_rank' : myRank }                                mpd_send_one_msg(rhsSocket,msgToSend)                        else:                            mpd_print(0000, "RMB: unrecognized pmi msg :%s:" % line )                elif readySocket == manSocket:                    mpd_print(1, 'unexpected msg from manSocket')                    del socketsToSelect[manSocket]                    manSocket.close()                else:                    mpd_print(1, 'msg on unexpected socket %s' % readySocket)        mpd_print(0000, "out of loop")        for openSocket in socketsToSelect:            openSocket.close()        if myRank == 0:            mshipSocket.close()    mpd_print(0000, "EXITING")def parse_pmi_msg(msg):    parsed_msg = {}    sm = re.findall(r'\S+',msg)    for e in sm:        se = e.split('=')        parsed_msg[se[0]] = se[1]    return parsed_msgif __name__ == '__main__':    mpdstdcp()    ## raise RuntimeError, 'mpdstdcp is not a stand-alone pgm'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -