✨ 长期致力于高性能计算、日志预处理、主动容错、任务迁移、检查点/恢复、多级检查点、混合容错方法、开销优化研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1开销平衡的主动容错PA选择策略OBPASS针对HPC系统故障类型多样且单一PA无法最优处理所有故障的问题建立基于预测故障类型的开销模型。对于可恢复故障采用主动任务迁移对于不可恢复故障采用主动协同检查点。定义每种PA的开销期望E[cost] P(误判)*cost_mis P(正确)*cost_correct。通过在线学习更新故障类型分布每100次故障后重新估计概率。在含1024个物理处理器的模拟系统中OBPASS策略将主动容错的总开销比固定PA方案降低约8.3%。当预测引擎的准确率仅为70%时OBPASS仍能使开销比单一最优PA降低5.1%。2极小集消息记录与主动消息存储优化策略MSL-SPPML针对主动非协同CR中消息记录开销大的问题提出极小集消息记录方法。只记录与预测故障进程直接相关的消息而非所有进程间消息。定义极小集为预测故障窗口内发生消息交互的进程集合平均规模为总进程数的5%到10%。在此基础上设计主动消息存储优化策略根据消息重要程度选择存储方式内存、SSD或网络。在系统规模达到200万处理器时MSL将消息记录开销降低了83%SPPML进一步将存储开销降低6%。结合两者主动非协同CR的总容错开销比HMPL方法低25%。3统一主动时间冗余容错方法UTPF与最少分组策略MGSUP针对时间冗余PA缺乏统一抽象模型的问题提出层次化检查点框架下的统一方法UTPF涵盖主动协同CR、主动非协同CR和任务迁移。推导出通用开销模型C_total C_overhead C_recovery * (failure_rate * T_interval)。最优运算周期通过模型微分求解。同时提出最少分组策略MGSUP按故障定位粒度将进程分组每组数量G通过求解代价函数最小值确定。在模拟两百万处理器规模的实验中UTPF在MGSUP下获得的优化效果达到最大分组策略的98%以上但分组数量仅为最大策略的1/8。综合评估表明UTPF相比PTFPF和PUCRD分别有22%和17%的开销优势。import numpy as np from scipy.optimize import minimize_scalar def OBPASS_cost_expectation(p_correct, cost_correct, cost_mis): return p_correct * cost_correct (1-p_correct) * cost_mis def MSL_minimal_set(communication_graph, fault_process_list, window_size5): # communication_graph: adjacency matrix minimal_set set(fault_process_list) for proc in fault_process_list: neighbors np.where(communication_graph[proc] 0)[0] minimal_set.update(neighbors) # limit to window return list(minimal_set)[:window_size] def SPPML_storage_optimization(msg_size, msg_priority, mem_limit1e9, ssd_speed0.5): # msg_priority: 0 to 1 if msg_size mem_limit and msg_priority 0.7: storage memory cost msg_size * 0.001 # ns per byte elif msg_priority 0.3: storage SSD cost msg_size / ssd_speed else: storage network cost msg_size * 2.0 return storage, cost def UTPF_optimal_interval(failure_rate, recovery_cost, overhead_rate): # C_total overhead/T recovery_cost * failure_rate * T def total_cost(T): return overhead_rate / T recovery_cost * failure_rate * T res minimize_scalar(total_cost, bounds(10, 10000), methodbounded) return res.x def MGSUP_grouping_strategy(n_processes, fault_granularity, max_groups256): # minimize cost: cost n_processes/G * fault_granularity G * comm_overhead def group_cost(G): if G 1: return 1e9 return n_processes / G * fault_granularity G * 0.5 G_opt minimize_scalar(group_cost, bounds(1, max_groups), methodbounded) return int(np.ceil(G_opt.x)) def simulate_utpf(): n_proc 2000000 fail_rate 1e-5 # per second rec_cost 120.0 # seconds over_rate 1800.0 T_opt UTPF_optimal_interval(fail_rate, rec_cost, over_rate) G_opt MGSUP_grouping_strategy(n_proc, fault_granularity0.05) print(fOptimal checkpoint interval: {T_opt:.1f}s, groups: {G_opt})
大规模高性能计算系统主动容错开销优化方法【附代码】
✨ 长期致力于高性能计算、日志预处理、主动容错、任务迁移、检查点/恢复、多级检查点、混合容错方法、开销优化研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1开销平衡的主动容错PA选择策略OBPASS针对HPC系统故障类型多样且单一PA无法最优处理所有故障的问题建立基于预测故障类型的开销模型。对于可恢复故障采用主动任务迁移对于不可恢复故障采用主动协同检查点。定义每种PA的开销期望E[cost] P(误判)*cost_mis P(正确)*cost_correct。通过在线学习更新故障类型分布每100次故障后重新估计概率。在含1024个物理处理器的模拟系统中OBPASS策略将主动容错的总开销比固定PA方案降低约8.3%。当预测引擎的准确率仅为70%时OBPASS仍能使开销比单一最优PA降低5.1%。2极小集消息记录与主动消息存储优化策略MSL-SPPML针对主动非协同CR中消息记录开销大的问题提出极小集消息记录方法。只记录与预测故障进程直接相关的消息而非所有进程间消息。定义极小集为预测故障窗口内发生消息交互的进程集合平均规模为总进程数的5%到10%。在此基础上设计主动消息存储优化策略根据消息重要程度选择存储方式内存、SSD或网络。在系统规模达到200万处理器时MSL将消息记录开销降低了83%SPPML进一步将存储开销降低6%。结合两者主动非协同CR的总容错开销比HMPL方法低25%。3统一主动时间冗余容错方法UTPF与最少分组策略MGSUP针对时间冗余PA缺乏统一抽象模型的问题提出层次化检查点框架下的统一方法UTPF涵盖主动协同CR、主动非协同CR和任务迁移。推导出通用开销模型C_total C_overhead C_recovery * (failure_rate * T_interval)。最优运算周期通过模型微分求解。同时提出最少分组策略MGSUP按故障定位粒度将进程分组每组数量G通过求解代价函数最小值确定。在模拟两百万处理器规模的实验中UTPF在MGSUP下获得的优化效果达到最大分组策略的98%以上但分组数量仅为最大策略的1/8。综合评估表明UTPF相比PTFPF和PUCRD分别有22%和17%的开销优势。import numpy as np from scipy.optimize import minimize_scalar def OBPASS_cost_expectation(p_correct, cost_correct, cost_mis): return p_correct * cost_correct (1-p_correct) * cost_mis def MSL_minimal_set(communication_graph, fault_process_list, window_size5): # communication_graph: adjacency matrix minimal_set set(fault_process_list) for proc in fault_process_list: neighbors np.where(communication_graph[proc] 0)[0] minimal_set.update(neighbors) # limit to window return list(minimal_set)[:window_size] def SPPML_storage_optimization(msg_size, msg_priority, mem_limit1e9, ssd_speed0.5): # msg_priority: 0 to 1 if msg_size mem_limit and msg_priority 0.7: storage memory cost msg_size * 0.001 # ns per byte elif msg_priority 0.3: storage SSD cost msg_size / ssd_speed else: storage network cost msg_size * 2.0 return storage, cost def UTPF_optimal_interval(failure_rate, recovery_cost, overhead_rate): # C_total overhead/T recovery_cost * failure_rate * T def total_cost(T): return overhead_rate / T recovery_cost * failure_rate * T res minimize_scalar(total_cost, bounds(10, 10000), methodbounded) return res.x def MGSUP_grouping_strategy(n_processes, fault_granularity, max_groups256): # minimize cost: cost n_processes/G * fault_granularity G * comm_overhead def group_cost(G): if G 1: return 1e9 return n_processes / G * fault_granularity G * 0.5 G_opt minimize_scalar(group_cost, bounds(1, max_groups), methodbounded) return int(np.ceil(G_opt.x)) def simulate_utpf(): n_proc 2000000 fail_rate 1e-5 # per second rec_cost 120.0 # seconds over_rate 1800.0 T_opt UTPF_optimal_interval(fail_rate, rec_cost, over_rate) G_opt MGSUP_grouping_strategy(n_proc, fault_granularity0.05) print(fOptimal checkpoint interval: {T_opt:.1f}s, groups: {G_opt})