导航:首页 > 源码编译 > 编译pslite

编译pslite

发布时间:2023-02-04 13:46:40

⑴ ps-lite概述

ps-lite旨在构建高可用分布式的机器学习应用。在ps-lite框架中,多个节点运行在多台物理机器上用于处理机器学习问题。通常会运行一个schele节点和多个worker/server节点。、

假设我们想要解决下面的问题:

其中(y i ,x i )是样本集,w是权重。
我们想要通过minibatch随机梯度下降(SGD,其中batch大小是b)的方式来解决这个问题。在时间t时,该算法首先随机挑选b个样本,然后通过下面的公式更新权重w

我们给出两个例子来说明ps-lite实现分布式解决这一问题的基本思想。

在第一个例子中,我们将SGD扩展为异步SGD。我们让server节点来维护w,server k获取到w的第k个分片,标识为w k 。当从worker接收到梯度后,server k会更新它所维护的权重:

方法返回server从任意worker节点接收的梯段, 方法返回时间 时的训练速率。
对于一个worker,每次它都会做四件事情:

ps-lite会提供 和 方法,用于和存有正确部分数据的server进行通信。

异步SGD的语义和单机版本不同。因为单机版本worker之间没有通信,所以就可能导致当一个worker节点正在计算梯度时权重发生变化。换句话说,每个worker都可能正在使用过期的权重。下图展示了2个server节点和3个worker节点的通信过程:

同步SGD的语义与单机算法完全相同,该模式使用scheler来管理数据的同步。

和 发布命令给worker和server,这个过程中 函数会一直等待,指定所有命令发布完成。
当worker接受到命令后,它会执行下面的函数:

这个过程和异步SGD几乎一模一样,只是每次要处理b / num_workers个样本。
而server节点相对于异步SGD还要执行额外的一些步骤:

与单机算法相比,分布式算法增加了两个额外的开销,一是数据通信开销,即通过网络发送数据的开销;另一个是由于不完善的负载均衡和机器性能差异带来的同步开销。这两个开销可能会主宰大规模集群和TB级别数据的应用性能。

假设:

权衡结果如下:

从中我们得到如下结论:

⑵ 如何使用codelite进行单文件编译

在Notepad++中,打开函数列表侧边栏:[视图]菜单>>FunctionList双击其中的项目,即可跳转。注意:要切换到正确的语言,FunctionList才能正常显示函数。必要时要点击其Reload(重新载入)按钮。

⑶ PS-Lite使用

一种调试方式是记录所有的通信日志。可以通过指定 环境变量来实现:

可能会有如下输出

这里 , 和 分别表示scheler,server和worker。

默认情况下PS-Lite会自动选择一个可用的网络接口。但是,对于有多个网络接口的机器,我们可以通过环境变量 来指定网络接口。例如,要使用无限带 接口,我们可以采用如下方式:

如果所有的PS-Lite节点都运行在同一台机器上,我们可以通过设置 来使用内存拷贝取代本地网络接口来提高性能:

如果我们想将PS-Lite移植到除 、 、 和 之外的其它集群资源管理器上,本章将会很有用。
要想启动PS-Lite,我们需要提供为下面的环境变量提供正确的值:

网络传输中出现消息丢失是比较常见的现象,当一个重要的消息传递失败时,程序会挂起。这时,可以让PS-Lite为每一个消息发送一个额外的ACK,如果在指定时间内没有收到ACK,则重传这条消息。要想启动这个功能,我们可以设置下面的环境变量:

⑷ [openharmony]liteos-a系统编译之GN

在 文章 中已经分析openharmony的小型系统(liteos-a)编译过程,最主要的就是调用gn/ninja/makefs三个命令最终生成可烧录的镜像文件
从前面文件可以看到hb build调用的gn命令参数如下

这里详细分析一下gn工具在编译过程中的使用

这里简单介绍下GN工具的使用方法,gn语法可以参考 http://weharmonyos.com/openharmony/compile/gn/docs/
,已经熟悉的可以跳过

从上面图中可以看到使用的命令类型为 gn gen <output_dir> [options] ,此命令就是为了将所有需要的BUILD.gn文件生成为*.ninja文件供ninja进行编译; 可以通过 gn help gen 命令查看详细的用法说明, 如下

下面重点说一下gn_cmd中的 [options]

liteos-a编译系统的dotfile内容如下:

liteos-a是嵌入式系统,而编译环境是linux系统,这就需要用到交叉编译方式,这个就可以在环境配置中指定 target_os 、 target_cpu 、 board_cpu 等等信息
这些信息就是 buildconfig 参数指定的 BUILDCONFIG.gn 文件中配置的
除了以上信息,还配置了以下几个重要信息

详细信息可以查看 //build/lite/config/BUILDCONFIG.gn 文件内容

toolchain定义源码编译需要的工具,像编译器、汇编器、连接器等等,一般在.gn所在目录下有一个 toolchain 目录,里面的 BUILD.gn 定义详细的编译工具链信息
这里目录结构如下:

从结构信息中可以看到定义了clang和gcc两种工具链,通过变量 board_toolchain_type 来区分(此变量也是buildconfig中定义的),具体信息参见BUILD.gn文件内容,如下

在.gn文件所在目录下的BUILD.gn就是入口,此文件做了以下几个事情

这里重点说一下target为 ohos 的 group 如下:

这里也比较好理解,里面就是读取一个配置文件,几级循环来处理配置文件中配置的内容。流程如下

到此就将此board下各模块的依赖关系添加好了,然后 GN 会将依赖树中所有的BUILD.gn生成对应的.ninja文件,并且在out的根目录下生成下面几个ninja的入口文件以及配置文件

⑸ codelite编译显示中文字符为乱码,怎么解决

启用C99,并在控制台显示中文: Settings, Build Settings, gnc gcc, Switchs,在Source选项后面增加" -std=c99 -fexec-charset=GBK ",添加后,Source switch看起来是这样:
-c -std=c99 -fexec-charset=GBK

阅读全文

与编译pslite相关的资料

热点内容
主角能看见别人气运的小说 浏览:577
求一个不用下载播放器的网址 浏览:686
免费在线国产小电影 浏览:544
尺度大的女同电影 浏览:371
纯爱高干生子的小说 浏览:879
linux开发服务端 浏览:962
不要VIP的电视网站 浏览:780
看欧美出轨的.看欧美出轨的女人 浏览:872
linuxsignal函数 浏览:248
你的名字 国语 下载 浏览:280
银河麒麟下编译qt源码 浏览:163
读单片机的flash 浏览:839
安全不收费的看片网站 浏览:945
单片机显示屏加排阻 浏览:729
新京报pdf 浏览:403
日本韩国推理片电影免费 浏览:823
c语言求n的阶乘递归算法 浏览:203
服务器未回应是什么原因 浏览:816
缥缈白姬和轩之结局 浏览:593
全球票房在哪里查 浏览:781