天道酬勤,学无止境

博客

[源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark

[源码解析] 深度学习分布式训练框架 horovod (10) — run on spark 文章目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark0x00 摘要0x01 回顾1.1 总体序列图1.2 总体逻辑1.3 问题 0x02 第四阶段 : 启动 Job2.1 _launch_job2.2 获取路由信息2.3 run_controller 0x03 MPI 实验3.1 问题点3.2 名词解释3.2.1 orterun & orted3.2.2 mpi orterun 源码 3.3 实验设计3.3.1 组件3.3.2 host 文件 remote_hosts3.3.3 rsh.py3.3.4 user_function.py 3.4 实验结果3.5 运行过程3.6 Trick 分析 0x04 MPI 实现4.1 mpi_run in spark4.2 mpi_run in normal4.3 执行命令4.3.1 mpi 参数4.3.3 mpirun_rsh.py4.3.4 rsh4.3.5 发送命令 4.4 Run in Spark Executor4.4.1 RunCommandRequest4.4.2 _run_command4.4.3 mpirun_rsh4.4.4 rsh4.4.5 mpirun_exec_fn

2022-03-26 03:54:08   

python版本升级到3.9.6

1、到官网[https://www.python.org/downloads/]下载对应的版本,然后默认安装(注意勾选添加环境变量) 2、版本升级后,在pycharm中切换到对应的版本 3、代码中依赖的模块可能在新的版本中不存在,需要手动更新一下 pip.exe在安装的目录下E:\python39\Scripts目录下,右键弹出powershell,执行pip安装的命令 pip install xxx 4、遇到一个奇怪的问题,升级版本3.9.6版本并使用后,我的pycharm社区版一直提示python3.5不支持f-string,运行程序时f-string语法又是可以成功执行的,不知道什么原因?后面重装了一个最新版本的pycharm才恢复的。。。 记录一下 来源:https://blog.csdn.net/weixin_40131468/article/details/118465882

2022-03-26 03:53:20   

linux常用命令

1.关机重启命令 # 关机 shutdown -h now # 立刻关机 shutdown -h 5 # 5分钟后关机 poweroff # 立刻关机 # 重启 shutdown -r now # 立刻重启 shutdown -r 5 # 5分钟后重启 reboot # 立刻重启 2.帮助命令 --help shutdown --help # 查看帮助信息 ifconfig --help # 查看网卡信息 man : man shutdown # 打开命令说明书 Q键退出 3.目录基本操作命令 目录切换 cd cd /home # 进入 根目录下的 home 目录 cd - # 进入上一次工作路径 cd !$ # 把上个命令的参数作为 cd 的参数使用 目录查看 ls ls -a # 列出目录下的所有文件,包含以 . 开始的隐藏文件,如 .bash_profile ls -A # 列出目录下除 . 和 .. 目录的其他文件 ls -r # 反序排列 ls -t # 以文件修改时间排序,由近到远 ls -S # 以文件大小排序,大文件在前 ls -h # 以文件易读大小显示,即容量显示 GB、MB、KB等 ls -l # 列出目录下文件的权限、所有者、修改时间、大小等信息 目录创建 mkdir (选项) (参数) mkdir -m # 建立目录时设置目录的权限 mkdir -p #

2022-03-26 03:53:16   

vue里axios的封装

1)、创建目录和文件:utils/service.js,封装axios的请求拦截器和全局的配置,axios的post,get请求, import axios from "axios" // 创建axios 赋值给常量service const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, timeout: 100000 headers: { "Content-Type": "application/json;charset=UTF-8", // "Content-Type": "application/x-www-form-urlencoded;charset=utf-8", } }); // 添加请求拦截器(Interceptors) service.interceptors.request.use(function (config) { // 发送请求之前做写什么 let token = localStorage.getItem("token"); // 如果有 if(token){ // 放在请求头(token跟后端沟通,他需要什么该成什么就可以了) config.headers.authorization = token; } return config; }, function (error

2022-03-26 03:53:11   

java基础-适配器模式

概述 一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作。 属于结构型设计模式。 场景 场景:两脚转三角;手机充电接口;显示器接口 1、已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况。 2、适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案。 类似于,亡羊补牢,打补丁; 适配器模式的优点 1、能提高类的透明性和复用,现有的类复用但不需要改变。 2、目标类和适配器类解耦,提高程序的扩展性。 3、在很多业务场景中符合开闭原则。 适配器模式的缺点 1、适配器编写过程需要全面考虑,可能会增加系统的复杂性。 2、增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代码变得凌乱。 截图: 目标对象target与Adaptee 没关系,现在增加了一个 Adapter,使得用户能够访问Target的行为也能访问Adaptee的功能; 5种实现 类适配 public class Adaptee { public int specificRequest() { return 220; } } public interface Target { int request(); } // 俺是适配器 public class Adapter extends

2022-03-26 03:53:07   

2021-07-04

Java的正则表达式 今天 在编程语言中,除了容器集合、多线程并发、IO流等等基础组件之外,还有一项专门处理字符串的正则表达式。Perl语言正是凭借强大的正则表达式才逐渐兴起。本篇内容将会描述Java正则表达式的用法、技巧等等。 正则表达式 1.正则表达式定义了字符串的模式、正则表达式可以用来搜索、编辑或处理文本; 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 “Hello World” 字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:“a” 或 “1”。 下表列出了一些正则表达式的实例及描述: 正则表达式描述This is text匹配字符串 “this is text”This/s+is/s+text注意字符串中的 \s+。 匹配单词 “this” 后面的 \s+ 可以匹配多个空格,之后匹配 is 字符串,再之后 \s+ 匹配多个空格然后再跟上 text 字符串。 可以匹配这个实例:this is text^\d+(\.\d+)?^ 定义了以什么开始 \d+ 匹配一个或多个数字 ? 设置括号内的选项是可选的 \. 匹配 “.” 可以匹配的实例:“5”, “1.5” 和 “2.21”。 Java 正则表达式和 Perl 的是最为相似的。 java.util

2022-03-26 03:52:59   

knowledge_map

一、linux命令 1、find -type f | xargs -l {} dos2unix {} #找到当前目录下的文件并使用dos2unxi命令转换格式 2、https://blog.csdn.net/qq_24913485/article/details/84840399 Linux grep 同时满足多个条件 3、https://blog.csdn.net/weixin_30752699/article/details/97307000 Yum包管理 4、https://www.cnblogs.com/JeromeLong/p/13196006.html Linux中crontab日志配置 5、https://blog.csdn.net/chenfeng_sky/article/details/81165082 Linux上如何使用 Crontab定时任务及日志查看 6、https://www.cnblogs.com/hehecat/p/8950769.html linux 用户切换组 7、https://blog.csdn.net/tfslovexizi/article/details/50548414 grep查找字串sed替换字串 8、https://blog.csdn.net/zhidao_wenge/article/details/61427975

2022-03-26 03:52:51   

MT7603 ping包固定速率修改

diff --git a/mt7603/mt_wifi/common/cmm_data.c b/customers/huawei/mt7603/mt_wifi/common/cmm_data.c index b49f922..f961509 100755 --- a/mt7603/mt_wifi/common/cmm_data.c +++ b/mt7603/mt_wifi/common/cmm_data.c @@ -2206,6 +2206,7 @@ BOOLEAN RTMP_FillTxBlkInfo(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk) #endif /* UAPSD_SUPPORT */ ) || ((pAd->OpMode == OPMODE_AP) && (pMacEntry->MaxHTPhyMode.field.MODE == MODE_CCK) && (pMacEntry->MaxHTPhyMode.field.MCS == RATE_1)) + || (RTMP_GET_PACKET_ICMP(pTxBlk->pPacket)) //add icmp fix rate by dragon ) { /* Specific packet, i.e., bDHCPFrame, bEAPOLFrame, bWAIFrame, need

2022-03-26 03:52:37   

linux线程(互斥锁、条件)

线程概念: 典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。 进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。 首先Linux并不存在真正的线程,Linux的线程是使用进程模拟的。当我们需要在一个进程中同时运行多个执行流时,我们并不可以开辟多个进程执行我们的操作(32位机器里每个进程认为它独享4G的内存资源),此时便引入了线程,例如当我们既需要下载内容,又需要浏览网页时,此时多线程便起了作用。线程是承担调度的基本单位,一个进程可拥有多个线程,它的执行力度比进程更加细致,线程资源共享。 “进程——资源分配的最小单位,线程——程序执行的最小单位” 一个进程至少包含一个线程,进程是运行的程序,程序是静态的概念,进程是动态的概念。 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮

2022-03-26 03:52:29   

Mysql增删改查

CRUD,即增加Create,查询Retrieve,Updata更新,删除Delete。其中增删改都差不多,而查询的话玩法比较多。下面就来具体看看如何对表进行增删改查 一、增加 sql语句:insert into +表名 +values (要增加的字段内容)。 需要注意插入的字段内容需要和我们创建表规定的每列的类型保持一致。 在sql语句中字符串可以用单引号也可以用双引号。 也可以指定列来插入,也就是只插入到指定列中 sql语句:insert into +表名+(要插入的列名)+values+(对应的字段内容) 也可以一次性插入多条记录,每一条记录之间用逗号隔开。 二、查找 全列查找 sql语句:select *from +表名 *是一个通配符,代表全列。 指定列查找 sql语句:select +列名 + from +表名 针对查到的列进行表达式计算 sql语句:select +列名 +表达式+ from + 表名 也可以给表达式指定别名,在表达式后面加上as+名字即可 去重查找 sql语句:select distinct +列名+ from 表名。 去重查找得到的结果表行数会发生变化。 排序 sql语句:order by +列名asc/desc 其中的asc代表升序排序,desc代表降序排序。 当某一列没有指定任何字段,此时这一列就为null,默认是最小的。 条件查询

2022-03-26 03:52:17