ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MPI可靠性设计

2022-05-08 23:00:20  阅读:181  来源: 互联网

标签:可靠性 ip line new MPI IP 设计 mpiuser maxnode


导入库函数

import subprocess
import numpy as np
import os

 

同步每个节点暂停状态

n = 100
array=np.load('zong.npy')

flag= array[-1][0:2]
flag1 = int(flag[0])
flag2 = int(flag[1])

def bijiao():
    maxflag=-100
    maxnode=-1
    for line in open("cpu_ip.txt"):
        line = line.replace("\n", '')
        IP.append(line)
    for ip in IP:
        if (subprocess.call('timeout 5s ping ' + ip + ' -c3', shell=True)):  # 执行成功返回0 ping不通的执行
            rmip.append(ip)
        else:
            os.system('scp mpiuser@'+str(ip)+':/home/mpiuser/mpii/zong.npy  /home/mpiuser/chaxun.npy')
            a=np.load('/home/mpiuser/chaxun.npy')
            f = a[-1][0:2]
            b=f[1]   #dangqianxunhuancishu
            if b>maxflag:
                maxflag=b
                maxnode=ip
            continue
    return maxflag,maxnode

 

确定节点当前状态并继续运算

while(flag2 < flag1):
    IP = []     # cpu_ip
    rmip = []       # 要删除的IP
    for line in open("cpu_ip.txt"):
        line = line.replace("\n", '')
        IP.append(line)
    for ip in IP:
        if (subprocess.call('timeout 5s ping ' + ip + ' -c3', shell=True)):  # 执行成功返回0 ping不通的执行
            rmip.append(ip)
        else:
            continue
    # 修改节点的进程数
    pro_sum = flag1**2 + 1      # 总进程数
    new_IP = []
    for i in range(len(IP)):
        if (IP[i] not in rmip):
            new_IP.append([IP[i],0])
    left_sum = pro_sum
    while left_sum >= len(new_IP):
        left_sum -= len(new_IP)
        for i in range(len(new_IP)):
            new_IP[i][1] += 1
    if left_sum > 0:
        for i in range(left_sum):
            new_IP[i][1] += 1

    f = open("mpi_config.txt", "w")
    print("open")
    for i in range(len(new_IP)):
        f.write("{}:{}\n".format(new_IP[i][0], new_IP[i][1]))
    f.close()

    maxflag,maxnode=bijiao()
    print('maxflag',maxflag)
    print('maxnode', maxnode)

    os.system('scp   mpiuser@' + str(maxnode) + ':/home/mpiuser/mpii/zong.npy  /home/mpiuser/mpii/')  # kaobei


    for ip in IP:
        if ip not in rmip:
            if ip != maxnode:
                os.system('scp  /home/mpiuser/mpii/zong.npy  mpiuser@' + str(ip) + ':/home/mpiuser/mpii/zong.npy ')   #faguoqu


    if (os.system("mpiexec -n 17 -f mpi_config.txt python3 mpi_helloworld.py")):
        print("unsuccess!restart!")
        array = np.load('zong.npy')

        flag = array[-1][0:2]
        flag1 = int(flag[0])
        flag2 = int(flag[1])
    else:
        print("success!")
        break

 

标签:可靠性,ip,line,new,MPI,IP,设计,mpiuser,maxnode
来源: https://www.cnblogs.com/shi-yi/p/16247414.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有