网络聚合通信测试--自动化测试脚本

一 网络聚合通信测试

以下测试用例为:
整集群测试,每节点进程数从2开始以2的幂次增加至满核心;
测试常见的通信聚合测试8个条目

在这里插入图片描述

二 测试前准备

  • 待测节点已完成OS安装及基础配置
  • 待测节点已配置完IP(若存在IB,则需要配置IB IP)
  • 待测节点做完互信操作
  • 所有节点具有共享存储
  • 编译安装osu_benchmark测试工具至共享目录

三 测试

  • 上传测试脚本至osu_benchmark测试工具目录,如:
/share/opt/osu/libexec/osu-micro-benchmarks/mpi/collective/
  • 在该目录创建nodelist文件并填入待测节点IP
vim nodelist
10.186.121.102
10.186.121.103
10.186.121.104
10.186.121.105
10.186.121.106
10.186.121.107
10.186.121.108
10.186.121.109
10.186.121.110
........
  • 在该目录创建processlist文件并填入测试进程数
#假设每节点总核数为64,从2开始,已2的幂次增加
vim processlist
2
4
8
16
32
64
  • `脚本赋予执行权限
chmod +x osu_batch_test.sh
  • 执行脚本进行测试
[root@linux ~]# bash osu_batch_test.sh
===============================================>>> Please choose a number to continue:
1 osu_allgather
2 osu_allreduce
3 osu_alltoall
3 osu_barrier
5 osu_bcast
6 osu_gather
7 osu_reduce
8 osu_scatter
9 Exit
>>>input number>>>
  • 执行完成后会所有的日志会保存在在当前目录下的log文件夹中

四 脚本

#!/bin/bash
current_dir=`pwd`
node_file=${current_dir}/nodelist
proc_file=${current_dir}/processlist
mkdir -p ${current_dir}/log
logfile=$current_path/log/
size=65536if [ ! -f ${node_file} ] || [ ! -f ${proc_file} ];thenecho -e "Error: Nodes file ${node_file} or Process file ${proc_file} is not exist."exit 1
fi#获取节点及进程总数
cat ${proc_file} | grep -v "^#"  | grep -v "^$" > process.temp
processlist=process.temp
cat ${node_file} | grep -v "^#"  | grep -v "^$" > nodes.temp
nodelist=nodes.temp
count=`grep -v '^$' $processlist | wc -l `
nodenum=`grep -v '^$' $nodelist | wc -l `
if [ $count -eq 0 ] || [ $nodenum -eq 0 ];thenecho -e "Warning: Nodes file ${node_file} or process file ${proc_file}  is empty, skip."exit 1
fi#获取进程数内容
proc_list=(`awk '{print $1}' $processlist`)
rm -rf $processlistfunction test_osu_allgather() {# test osu_allgatherecho -e "\n>>> Start to test osu_allgather :"echo -e "--------------------------------------------------------------------------------------"for ((i=0; i<$count; i++))doecho -e "\n>>> Start to test ppn=${proc_list[$i]} :"echo -e "\n>>>> ppn=${proc_list[$i]}" >> ${logfile}/${nodenum}"nodes_osu_allgather.log"mpirun -ppn ${proc_list[$i]}  -hostfile ${node_file} ${current_dir}/osu_allgather -m $size >> ${logfile}/${nodenum}"nodes_osu_allgather.log"sleep 2doneecho "the current test time is $(date +%Y-%m-%d-%H%M%S)" >> ${logfile}/${nodenum}"nodes_osu_allgather.log"
}function test_osu_allreduce(){# test osu_allreduceecho -e "\n>>> Start to test osu_allreduce :"echo -e "--------------------------------------------------------------------------------------"for ((i=0; i<$count; i++))doecho -e "\n>>> Start to test  ppn=${proc_list[$i]} :"echo -e "\n>>>> ppn=${proc_list[$i]}" >> ${logfile}/${nodenum}"nodes_osu_allreduce.log"mpirun -ppn ${proc_list[$i]}  -hostfile ${node_file} ${current_dir}/osu_allreduce -m $size >> ${logfile}/${nodenum}"nodes_osu_allreduce.log"sleep 2doneecho "the current test time is $(date +%Y-%m-%d-%H%M%S)" >> ${logfile}/${nodenum}"nodes_osu_allreduce.log"
}function test_osu_alltoall() {# test osu_alltoallecho -e "\n>>> Start to test osu_alltoall :"echo -e "--------------------------------------------------------------------------------------"for ((i=0; i<$count; i++))doecho -e "\n>>> Start to test ppn=${proc_list[$i]} :"echo -e "\n>>>> ppn=${proc_list[$i]}" >> ${logfile}/${nodenum}"nodes_osu_alltoall.log"mpirun -ppn ${proc_list[$i]}  -hostfile ${node_file} ${current_dir}/osu_alltoall -m $size >> ${logfile}/${nodenum}"nodes_osu_alltoall.log"sleep 2doneecho "the current test time is $(date +%Y-%m-%d-%H%M%S)" >> ${logfile}/${nodenum}"nodes_osu_alltoall.log"
}function test_osu_barrier() {# test osu_barrierecho -e "\n>>> Start to test osu_barrier :"echo -e "--------------------------------------------------------------------------------------"for ((i=0; i<$count; i++))doecho -e "\n>>> Start to test ppn=${proc_list[$i]} :"echo -e "\n>>>> ppn=${proc_list[$i]}" >> ${logfile}/${nodenum}"nodes_osu_barrier.log"mpirun -ppn ${proc_list[$i]}  -hostfile ${node_file} ${current_dir}/osu_barrier -m $size >> ${logfile}/${nodenum}"nodes_osu_barrier.log"sleep 2doneecho "the current test time is $(date +%Y-%m-%d-%H%M%S)" >> ${logfile}/${nodenum}"nodes_osu_barrier.log"}function test_osu_bcast() {# test osu_bcastecho -e "\n>>> Start to test osu_bcast :"echo -e "--------------------------------------------------------------------------------------"for ((i=0; i<$count; i++))doecho -e "\n>>> Start to test ppn=${proc_list[$i]} :"echo -e "\n>>>> ppn=${proc_list[$i]}" >> ${logfile}/${nodenum}"nodes_osu_bcast.log"mpirun -ppn ${proc_list[$i]}  -hostfile ${node_file} ${current_dir}/osu_bcast -m $size >> ${logfile}/${nodenum}"nodes_osu_bcast.log"sleep 2doneecho "the current test time is $(date +%Y-%m-%d-%H%M%S)" >> ${logfile}/${nodenum}"nodes_osu_bcast.log"}function test_osu_gather() {# test osu_gatherecho -e "\n>>> Start to test osu_gather :"echo -e "--------------------------------------------------------------------------------------"for ((i=0; i<$count; i++))doecho -e "\n>>> Start to test ppn=${proc_list[$i]} :"echo -e "\n>>>> ppn=${proc_list[$i]}" >> ${logfile}/${nodenum}"nodes_osu_gather.log"mpirun -ppn ${proc_list[$i]}  -hostfile ${node_file} ${current_dir}/osu_gather -m $size >> ${logfile}/${nodenum}"nodes_osu_gather.log"sleep 2doneecho "the current test time is $(date +%Y-%m-%d-%H%M%S)" >> ${logfile}/${nodenum}"nodes_osu_gather.log"}function test_osu_reduce() {# test osu_reduceecho -e "\n>>> Start to test osu_reduce :"echo -e "--------------------------------------------------------------------------------------"for ((i=0; i<$count; i++))doecho -e "\n>>> Start to test ppn=${proc_list[$i]} :"echo -e "\n>>>> ppn=${proc_list[$i]}" >> ${logfile}/${nodenum}"nodes_osu_reduce.log"mpirun -ppn ${proc_list[$i]}  -hostfile ${node_file} ${current_dir}/osu_reduce -m $size >> ${logfile}/${nodenum}"nodes_osu_reduce.log"sleep 2doneecho "the current test time is $(date +%Y-%m-%d-%H%M%S)" >> ${logfile}/${nodenum}"nodes_osu_reduce.log"}function test_osu_scatter() {# test osu_scatterecho -e "\n>>> Start to test osu_scatter :"echo -e "--------------------------------------------------------------------------------------"for ((i=0; i<$count; i++))doecho -e "\n>>> Start to test ppn=${proc_list[$i]} :"echo -e "\n>>>> ppn=${proc_list[$i]}" >> ${logfile}/${nodenum}"nodes_osu_scatter.log"mpirun -ppn ${proc_list[$i]}  -hostfile ${node_file} ${current_dir}/osu_scatter -m $size >> ${logfile}/${nodenum}"nodes_osu_scatter.log"sleep 2doneecho "the current test time is $(date +%Y-%m-%d-%H%M%S)" >> ${logfile}/${nodenum}"nodes_osu_scatter.log"}# main function# print menuecho -e "==============================================="while :doecho -e "\n>>> Please choose a number to continue:"echo -e "1 osu_allgather"echo -e "2 osu_allreduce"echo -e "3 osu_alltoall"echo -e "3 osu_barrier"echo -e "5 osu_bcast"echo -e "6 osu_gather"echo -e "7 osu_reduce"echo -e "8 osu_scatter"echo -e "9 Exit"# read inputread -p ">>>input number>>> " nuif [[ "$nu" == "1" ]];thentest_osu_allgatherelif [[ "$nu" == "2" ]];thentest_osu_allreduceelif [[ "$nu" == "3" ]];thentest_osu_alltoallelif [[ "$nu" == "4" ]];thentest_osu_barrierelif [[ "$nu" == "5" ]];thentest_osu_bcastelif [[ "$nu" == "6" ]];thentest_osu_gatherelif [[ "$nu" == "7" ]];thentest_osu_reduceelif [[ "$nu" == "8" ]];thentest_osu_scatterelif [[ "$nu" == "9" ]];thenecho -e "\n>>> exit"exit 0elseecho -e "\033[41;37m unsupported input. \033[0m"fidone

日常总结,一起学习进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/29472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二十二篇——香农第二定律(一):为什么你的网页总是打不开?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 看似在将知识&#xff0c;实际是在讲生活和所有&#xff1b;突破边界偶尔…

gitlab 获取指定分支下指定路径文件夹的解决方案

第一步&#xff1a; 获取 accessToken 及你的 项目 id &#xff1a; 获取 accessToken ,点击用户头像进入setting 按图示操作&#xff0c;第 3 步 填写你发起请求的域名。 获取项目 id , 简单粗暴方案 进入 你项目仓库页面后 直接 源码搜索 project_id&#xff0c; value 就…

【神经网络】基于CNN(卷积神经网络)构建猫狗分类模型

文章目录 解决问题数据集探索性数据分析数据预处理数据集分割数据预处理 构建模型并训练构建模型训练模型 结果分析与评估模型保存结果预测经验总结 解决问题 针对经典猫狗数据集&#xff0c;基于卷积神经网络&#xff0c;构建猫狗二元分类模型&#xff0c;使用数据集进行参数…

怎么提取视频中的音频?别错过这6个音频提取方法了!(全新)

您是否曾经发现过一个音乐很棒的视频&#xff0c;并想从视频中提取音频&#xff1f;如今&#xff0c;关于提取mp4视频中的音频需求越来越常见。例如&#xff0c;您可能想从mp4格式的电影中提取音频&#xff0c;将音乐用作手机铃声&#xff0c;或在自己的视频项目中使用视频中的…

[Qt] Qt Creator 编码警告:warning:C4819

Qt项目使用VC&#xff08;2019 64bit&#xff09;编译器出现此错误。 warning&#xff1a;C4819&#xff1a;该文件包含不能在当前代码页&#xff08;936&#xff09;中表示的字符。请将该文件保存为Unicode格式以防止数据丢失。(可能这个警告内容也会在Qt Creator 中乱码) 如…

Matlab只选取自己需要的数据画图

在Matlab作图的时候&#xff0c;经常会在同一个坐标系中作很多数据的图&#xff0c;如下图所示&#xff1a; 这就会导致不同数据所作的线会重叠在一起&#xff0c;不利于数据分析。如果只想对比几个数据的趋势&#xff0c;直接修改代码太过麻烦&#xff0c;可通过Matlab的绘图…

【C语言】数组参数和指针参数详解

在写代码的时候难免要把【数组】或者【指针】传给函数&#xff0c;那函数的参数该如何设计呢&#xff1f; 1 一维数组传参 #include <stdio.h> void test(int arr[])//ok? {} void test(int arr[10])//ok? {} void test(int* arr)//ok? {} void test2(int* arr[20])…

Java毕业设计 基于SSM助学贷款管理系统

Java毕业设计 基于SSM助学贷款管理系统 SSM 助学贷款管理系统 功能介绍 学生&#xff1a;登录 修改密码 学生信息 贷款项目信息 申请贷款 留言信息 公告 学校负责人&#xff1a;登录 修改密码 学生管理 学校负责人信息 贷款项目 贷款申请审批 留言信息 公告 银行负责人&…

Linux中nginx.conf如何配置【搬代码】

Nginx 是一个独立的软件。 它是一款高性能的 Web 服务器、反向代理服务器和负载均衡器等&#xff0c;具有强大的功能和广泛的应用场景。它通常需要单独进行安装和配置来发挥其作用。 下载网址&#xff1a;http://nginx.org/en/download.html nginx.conf写法&#xff1a; #配置…

鸿蒙实现金刚区效果

前言&#xff1a; DevEco Studio版本&#xff1a;4.0.0.600 所谓“金刚区"是位于APP功能入口的导航区域&#xff0c;通常以“图标文字”的宫格导航的形式出现。之所以叫“金刚区”&#xff0c;是因为该区域会随着业务目标的改变&#xff0c;展示不同的功能图标&#xff…

C++ 70 之 类模版中的成员函数,在类外实现

#include <iostream> #include <string> using namespace std;template<class T1, class T2> class Students10{ public:T1 m_name;T2 m_age;Students10(T1 name, T2 age); // 类内声明 类外实现// {// this->m_name name;// this->m_age …

CCAA质量管理【学习笔记】​​ 备考知识点笔记(六)质量改进系统方法与工具

第七节 质量改进系统方法与工具 1 质 量 改 进 方 法 概 述 可以说几乎每种质量管理领域的方法与工具都可以用于质量改进&#xff0c;但是一个组织在改进的整体推进中&#xff0c;往往不是采用单一的方法&#xff0c;会涉及多种改进的工具和手段&#xff0c;并依据一定的模式…

鸿蒙实现自定义Tabbar样式,显示数字红点提示

前言&#xff1a; DevEco Studio版本&#xff1a;4.0.0.600 Tabs的链接参考&#xff1a;OpenHarmony Tabs TabContent的链接参考&#xff1a;OpenHarmony TabContent 通过查看链接参考我们知道可以通过TabContent的tabBar来实现自定义TabBar样式&#xff08;CustomBuilder&…

CloudTopExam考试系统

前言 整个项目的都是自己从0到1完成的&#xff08;包括数据库设计&#xff09;。 这个项目耗费了自己的很多心血&#xff0c;尤其是数据库的设计&#xff08;中途推翻重做了好几次&#x1f494;&#xff09;。在做这个之前也看过很多类似的开源项目&#xff0c;相较于商用的产品…

第六节 未登录与登录分支设立

经常我们在设计中,经常会遇到多条件分支打开相关界面,下面重点基于一个控件判断对未登录与已登录分支跳转案例进行说明。 一、设置元件 注意:动态面板默认设置 二、设置隐藏面板 三、关联条件情形 1、设置触发事件的元件 2、启用情形 3、添加情形,增加面板中“未登录”为…

文件操作(2)(C语言版)

文件的随机读写&#xff1a; fseek函数&#xff1a; 前面讲解了顺序读写的相关函数&#xff0c;这里介绍一些可以“指哪写哪的函数” 有三个参数&#xff1a; 1、文件的地址 2、相对于第三个参数origin偏移的位置 3、起始位置&#xff08;有三种&#xff09; 第一种&#xff…

参数搜索流形学习

目录 一、网格搜索1、介绍2、代码示例 二、HalvingGridSearch1、介绍2、代码示例 三、随机搜索1、介绍2、代码示例 三、贝叶斯搜索1、介绍2、代码示例 四、参数搜索总结五、流形学习1、LLE1、介绍2、官方代码示例 2、t-SNE1、介绍2、官方代码示例 一、网格搜索 1、介绍 网格搜…

Matlab复数相关

文章目录 MATLAB复数相关知识相关函数 MATLAB复数相关知识 相关函数 假定存在复数zabi 函数说明real(z)返回复数z的实部&#xff08;a&#xff09;imag(z)返回复数z的虚部&#xff08;b&#xff09;abs(z)返回复数的模即|z| &#xff08; ( a 2 ) ( b 2 ) \sqrt{(a^2)(b^2)…

重生奇迹MU召唤术师简介

出生地&#xff1a;幻术园 性 别&#xff1a;女 擅 长&#xff1a;召唤幻兽、辅助魔法&攻击魔法 转 职&#xff1a;召唤巫师&#xff08;3转&#xff09; 介 绍&#xff1a;从古代开始流传下来的高贵的血缘&#xff0c;为了种族纯正血缘的延续及特殊使用咒术的天赋&…

【前端】 nvm安装管理多版本node、 npm install失败解决方式

【问题】If you believe this might be a permissions issue, please double-check the npm ERR! permissio或者Error: EPERM: operation not permitted, VScode中npm install或cnpm install报错 简单总结&#xff0c;我们运行npm install 无法安装吧包&#xff0c;提示权限问题…