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

📄 mpd.py

📁 mpi并行计算的c++代码 可用vc或gcc编译通过 可以用来搭建并行计算试验环境
💻 PY
📖 第 1 页 / 共 5 页
字号:
            # permit anyone to run but use THEIR own username            #   thus, override any username specified by the user            if self.conSock.realUsername != 'root':                msg['username'] = self.conSock.realUsername                msg['users'] = { (0,msg['nprocs']-1) : self.conSock.realUsername }            #            msg['mpdid_mpdrun_start'] = self.myId            msg['nstarted_on_this_loop'] = 0            msg['first_loop'] = 1            msg['ringsize'] = 0            msg['ring_ncpus'] = 0            if msg.has_key('try_1st_locally'):                self.do_mpdrun(msg)            else:                self.ring.rhsSock.send_dict_msg(msg)            # send ack after job is going        elif msg['cmd'] == 'get_mpdrun_values':            msgToSend = { 'cmd' : 'response_get_mpdrun_values',	                  'mpd_version' : mpd_version(),	                  'mpd_ifhn' : self.myIfhn }            self.conSock.send_dict_msg(msgToSend)        elif msg['cmd'] == 'mpdtrace':            msgToSend = { 'cmd'     : 'mpdtrace_info',                          'dest'    : self.myId,                          'id'      : self.myId,                          'ifhn'    : self.myIfhn,                          'lhsport' : '%s' % (self.ring.lhsPort),                          'lhsifhn' : '%s' % (self.ring.lhsIfhn),                          'rhsport' : '%s' % (self.ring.rhsPort),                          'rhsifhn' : '%s' % (self.ring.rhsIfhn) }            self.ring.rhsSock.send_dict_msg(msgToSend)            msgToSend = { 'cmd'  : 'mpdtrace_trailer', 'dest' : self.myId }            self.ring.rhsSock.send_dict_msg(msgToSend)            # do not send an ack to console now; will send trace info later        elif msg['cmd'] == 'mpdallexit':            if self.conSock.realUsername != self.myRealUsername:                msgToSend = { 'cmd':'invalid_username_to_make_this_request' }                self.conSock.send_dict_msg(msgToSend)                self.streamHandler.del_handler(self.conSock)                self.conSock.close()                self.conSock = 0                return            # self.allExiting = 1  # doesn't really help here            self.ring.rhsSock.send_dict_msg( {'cmd' : 'mpdallexit', 'src' : self.myId} )            self.conSock.send_dict_msg( {'cmd' : 'mpdallexit_ack'} )        elif msg['cmd'] == 'mpdexit':            if self.conSock.realUsername != self.myRealUsername:                msgToSend = { 'cmd':'invalid_username_to_make_this_request' }                self.conSock.send_dict_msg(msgToSend)                self.streamHandler.del_handler(self.conSock)                self.conSock.close()                self.conSock = 0                return            if msg['mpdid'] == 'localmpd':                msg['mpdid'] = self.myId            self.ring.rhsSock.send_dict_msg( {'cmd' : 'mpdexit', 'src' : self.myId,                                              'done' : 0, 'dest' : msg['mpdid']} )        elif msg['cmd'] == 'mpdringtest':            msg['src'] = self.myId            self.ring.rhsSock.send_dict_msg(msg)            # do not send an ack to console now; will send ringtest info later        elif msg['cmd'] == 'mpdlistjobs':            msgToSend = { 'cmd'  : 'local_mpdid', 'id' : self.myId }            self.conSock.send_dict_msg(msgToSend)            for jobid in self.activeJobs.keys():                for manPid in self.activeJobs[jobid]:                    msgToSend = { 'cmd' : 'mpdlistjobs_info',                                  'dest' : self.myId,                                  'jobid' : jobid,                                  'username' : self.activeJobs[jobid][manPid]['username'],                                  'host' : self.myHost,                                  'ifhn' : self.myIfhn,                                  'clipid' : str(self.activeJobs[jobid][manPid]['clipid']),                                  'sid' : str(manPid),  # may chg to actual sid later                                  'pgm'  : self.activeJobs[jobid][manPid]['pgm'],                                  'rank' : self.activeJobs[jobid][manPid]['rank'] }                    self.conSock.send_dict_msg(msgToSend)            msgToSend = { 'cmd'  : 'mpdlistjobs_trailer', 'dest' : self.myId }            self.ring.rhsSock.send_dict_msg(msgToSend)            # do not send an ack to console now; will send listjobs info later        elif msg['cmd'] == 'mpdkilljob':            # permit anyone to kill but use THEIR own username            #   thus, override any username specified by the user            if self.conSock.realUsername != 'root':                msg['username'] = self.conSock.realUsername            msg['src'] = self.myId            msg['handled'] = 0            if msg['mpdid'] == '':                msg['mpdid'] = self.myId            self.ring.rhsSock.send_dict_msg(msg)            # send ack to console after I get this msg back and do the kill myself        elif msg['cmd'] == 'mpdsigjob':            # permit anyone to sig but use THEIR own username            #   thus, override any username specified by the user            if self.conSock.realUsername != 'root':                msg['username'] = self.conSock.realUsername            msg['src'] = self.myId            msg['handled'] = 0            if msg['mpdid'] == '':                msg['mpdid'] = self.myId            self.ring.rhsSock.send_dict_msg(msg)            # send ack to console after I get this msg back        elif msg['cmd'] == 'verify_hosts_in_ring':            msgToSend = { 'cmd'  : 'verify_hosts_in_ring', 'dest' : self.myId,                          'host_list' : msg['host_list'] }            self.ring.rhsSock.send_dict_msg(msgToSend)            # do not send an ack to console now; will send trace info later        else:            msgToSend = { 'cmd' : 'invalid_msg_received_from_you' }            self.conSock.send_dict_msg(msgToSend)            badMsg = 'invalid msg received from console: %s' % (str(msg))            mpd_print(1, badMsg)            if syslog_module_available:                syslog.syslog(syslog.LOG_ERR,badMsg)    def handle_man_input(self,sock):        msg = sock.recv_dict_msg()        if not msg:            for jobid in self.activeJobs.keys():                deleted = 0                for manPid in self.activeJobs[jobid]:                    if sock == self.activeJobs[jobid][manPid]['socktoman']:                        del self.activeJobs[jobid][manPid]                        if len(self.activeJobs[jobid]) == 0:                            del self.activeJobs[jobid]                        deleted = 1                        break                if deleted:                    break            self.streamHandler.del_handler(sock)            sock.close()            return        if not msg.has_key('cmd'):            mpd_print(1, 'INVALID msg for man request msg=:%s:' % (msg) )            msgToSend = { 'cmd' : 'invalid_msg' }            sock.send_dict_msg(msgToSend)            self.streamHandler.del_handler(sock)            sock.close()            return        if msg['cmd'] == 'client_info':            jobid = msg['jobid']            manPid = msg['manpid']            self.activeJobs[jobid][manPid]['clipid'] = msg['clipid']        elif msg['cmd'] == 'spawn':            msg['cmd'] = 'mpdrun'  # handle much like an mpdrun from a console            msg['mpdid_mpdrun_start'] = self.myId            msg['nstarted_on_this_loop'] = 0            msg['first_loop'] = 1            msg['jobalias'] = ''            msg['stdin_dest'] = '0'            msg['ringsize'] = 0            msg['ring_ncpus'] = 0            msg['gdb'] = 0            msg['totalview'] = 0            self.ring.rhsSock.send_dict_msg(msg)        elif msg['cmd'] == 'publish_name':            self.pmi_published_names[msg['service']] = msg['port']            msgToSend = { 'cmd' : 'publish_result', 'info' : 'ok' }            sock.send_dict_msg(msgToSend)        elif msg['cmd'] == 'lookup_name':            if self.pmi_published_names.has_key(msg['service']):                msgToSend = { 'cmd' : 'lookup_result', 'info' : 'ok',                              'port' : self.pmi_published_names[msg['service']] }                sock.send_dict_msg(msgToSend)            else:                msg['cmd'] = 'pmi_lookup_name'    # add pmi_                msg['src'] = self.myId                msg['port'] = 0    # invalid                self.ring.rhsSock.send_dict_msg(msg)        elif msg['cmd'] == 'unpublish_name':            if self.pmi_published_names.has_key(msg['service']):                del self.pmi_published_names[msg['service']]                msgToSend = { 'cmd' : 'unpublish_result', 'info' : 'ok' }                sock.send_dict_msg(msgToSend)            else:                msg['cmd'] = 'pmi_unpublish_name'    # add pmi_                msg['src'] = self.myId                self.ring.rhsSocket.send_dict_msg(msg)        else:            mpd_print(1, 'INVALID request from man msg=:%s:' % (msg) )            msgToSend = { 'cmd' : 'invalid_request' }            sock.send_dict_msg(msgToSend)    def handle_lhs_input(self,sock):        msg = self.ring.lhsSock.recv_dict_msg()        if not msg:    # lost lhs; don't worry            mpd_print(0, "CLOSING self.ring.lhsSock ", self.ring.lhsSock )            self.streamHandler.del_handler(self.ring.lhsSock)            self.ring.lhsSock.close()            self.ring.lhsSock = 0            return        if msg['cmd'] == 'mpdrun':            if  msg.has_key('mpdid_mpdrun_start')  \            and msg['mpdid_mpdrun_start'] == self.myId:                if msg['first_loop']:                    self.currRingSize = msg['ringsize']                    self.currRingNCPUs = msg['ring_ncpus']                if msg['nstarted'] == msg['nprocs']:                    if self.conSock:                        msgToSend = {'cmd' : 'mpdrun_ack',                                     'ringsize' : self.currRingSize,                                     'ring_ncpus' : self.currRingNCPUs}                        self.conSock.send_dict_msg(msgToSend)                    return                if not msg['first_loop']  and  msg['nstarted_on_this_loop'] == 0:                    if msg.has_key('jobid'):                        msgToSend = {'cmd' : 'abortjob', 'src' : self.myId,                                     'jobid' : msg['jobid'],                                     'reason' : 'some_procs_not_started'}                        self.ring.rhsSock.send_dict_msg(msgToSend)                    if self.conSock:                        msgToSend = {'cmd' : 'job_failed',                                     'reason' : 'some_procs_not_started',                                     'remaining_hosts' : msg['hosts']}                        self.conSock.send_dict_msg(msgToSend)                    return                msg['first_loop'] = 0                msg['nstarted_on_this_loop'] = 0            self.do_mpdrun(msg)        elif msg['cmd'] == 'mpdtrace_info':            if msg['dest'] == self.myId:                if self.conSock:                    self.conSock.send_dict_msg(msg)            else:                self.ring.rhsSock.send_dict_msg(msg)        elif msg['cmd'] == 'mpdtrace_trailer':            if msg['dest'] == self.myId:                if self.conSock:                    self.conSock.send_dict_msg(msg)            else:                msgToSend = { 'cmd'     : 'mpdtrace_info',                              'dest'    : msg['dest'],                              'id'      : self.myId,                              'ifhn'    : self.myIfhn,                              'lhsport' : '%s' % (self.ring.lhsPort),                              'lhsifhn' : '%s' % (self.ring.lhsIfhn),                              'rhsport' : '%s' % (self.ring.rhsPort),                              'rhsifhn' : '%s' % (self.ring.rhsIfhn) }                self.ring.rhsSock.send_dict_msg(msgToSend)                self.ring.rhsSock.send_dict_msg(msg)        elif msg['cmd'] == 'mpdlistjobs_info':            if msg['dest'] == self.myId:                if self.conSock:                    self.conSock.send_dict_msg(msg)            else:                self.ring.rhsSock.send_dict_msg(msg)        elif msg['cmd'] == 'mpdlistjobs_trailer':            if msg['dest'] == self.myId:                if self.conSock:                    self.conSock.send_dict_msg(msg)            else:                for jobid in self.activeJobs.keys():                    for manPid in self.activeJobs[jobid]:                        msgToSend = { 'cmd' : 'mpdlistjobs_info',                                      'dest' : msg['dest'],                                      'jobid' : jobid,                                      'username' : self.activeJobs[jobid][manPid]['username'],                                      'host' : self.myHost,                                      'clipid' : str(self.activeJobs[jobid][manPid]['clipid']),                                      'sid' : str(manPid),  # may chg to actual sid later                                      'pgm' : self.activeJobs[jobid][manPid]['pgm'],                                      'rank' : self.activeJobs[jobid][manPid]['rank'] }                        self.ring.rhsSock.send_dict_msg(msgToSend)                self.ring.rhsSock.send_dict_msg(msg)        elif msg['cmd'] == 'mpdallexit':            if self.allExiting:   # already seen this once                self.exiting = 1  # set flag to exit main loop            self.allExiting = 1            self.ring.rhsSock.send_dict_msg(msg)        elif msg['cmd'] == 'mpdexit':            if msg['dest'] == self.myId:

⌨️ 快捷键说明

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