PT DMSA概述

本文介绍了PT中的分布式多场景分析(DMSA)技术,如何通过组合操作模式和条件创建并行分析场景,利用SSH和LSF等工具在多主机上执行,以及如何管理场景、设置计算资源、执行命令和监控进度。作者还详细讲解了scenario、session、commandfocus的关系和相关的命令如create_scenario、set_host_options等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是DMSA?

在PT中,我们将一种operating mode(如FUNC、DFT等)和一种operating condition(如WC、WCZ、AVS等)的组合称成为scenario,显然【scenarios = modes * conditions】。

PT为了节省时间,支持并行地对这些scenarios进行分析。

这些scenarios通过ssh、lsf等工具被提交到不同的host上进行计算(支持多种通信工具同时工作),因此这种技术被称为Distributed Multi-Scenario Analysis(DMSA)。

在计算过程中,由master process控制其它的worker processes,可以简单地认为在每个work_process上对应着一种scenario的分析,PT通过这种并行分析节省了总时间。

DMSA模式通过-multi_scenario选项启动,或者将multi_scenario_enable_analysis变量设置为true。

pt_shell -multi_scenario

scenario、session和command focus的关系

scenario的创建由命令create_scenario完成,PT支持两种创建方式。

使用-common_data和-specific_data来创建scenario:

-common_data中指定的是多个scenarios共享的数据,-specific_data中指定的是当前创建的scenario特有的数据。

与之对应的还有-common_variables和-specific_data用于指定变量。

整个创建的过程类似于我们PT在单场景分析模式下创建一个新的session。

         

使用-image读取保存的session来创建scenario:

这里使用的session可以是PT在单场景分析模式下保存的session,也可以是DMSA模式下保存的session。该命令和restore_session比较类似,只不过这里的一个session会被当作一种scenario来进行分析。

         

显然,我们可以由多条create_scenario命令来创建多种scenarios。为了便于管理,PT又定义了current_session和current_scenario两条命令,这两条命令提供了更精细化的选择和控制。

current_scenario是current_session的子集,只有被current_scenario选中的scenarios,才能被我们的命令所影响(remote_execute,后面会详细介绍)。

所幸的是我们一般不用同时指定current_session和current_scenario,因为默认状态下,current_session下所有的scenario都是选中(focus)的状态,所以我们只需要指定current_session就行了。

set_host_options命令

由于DMSA是一种分布式的计算方式,所以我们需要通过set_host_options命令来指定我们需要的计算资源。

下图是set_host_options的一个简单例子,如果你有很多不同类型的计算资源,显然可以多次调用set_host_options来设定你准备使用的计算资源。

需要注意的是,我们会给每个scenario分配一个process(real or virtual)来进行计算。

-local_process:                                 用于指定local_host上的计算资源。
-num_processes number:                          用于指定有多少processes使用当前的host_option设定。
-max_cores number:                              用于指定每个process上最多使用的core。
-protocol auto | custom | lsf | netbatch | pbs | rsh | rtda | sge | sh | ssh:   用于指定local host和远程计算资源之间通信的协议,选好后还需要指定提交job和kill job的命令,这里就不展开说明了。                                                                                                                        
-load_factor number:                            用于指定每个real process可以展开成多少个process(real+virtual)。该选项的意义有两点,一是如果你的计算集群上的机器小于scenerio,可以让一台机器计算多个scenarios;二是同一台机器上的scenarios的计算交互是基于内存的,因此可以减少数据交互的时间。
还有很多其它选项,详细的说明可以参考用户手册,上面的例子还是很详细的:
         
redirect set_host_options.man {man set_host_options}
sh gvim set_host_options.man &
在指定好计算资源后,我们可以使用report_host_usage来查询host_option的设置。检查OK后,通过start_hosts命令让hosts上线(online)。
         
report_host_usage
start_hosts

remote_execute命令

为了能让部分或者全部的scenarios执行我们的命令,我们首先使用current_session和current_scenario两条命令将对应的scenarios选中(focus)。然后将需要执行的命令放在remote_execute语句内,remote_execute语句支持两种类型的远程执行。

基于remote上下文的remote_execute(花括号),也就是说变量的值基于remote worker环境

remote_execute {
    # variable all_in evaluated at worker
    report_timing -from $all_in -to [all_outputs]
}
基于master上下文的remote_execute(双引号),也就是说变量的值基于master环境
remote_execute "
    # variable all_out evaluated at master
    report_timing -to $all_out
"

由于这种远程执行是针对于每个被选中的scenario,所以每个scenario都会产生对应的报告。

PT同样支持基于这些被选中的scenarios产生一个总的merged的报告,此时只需要将命令放在remote_execute外执行即可。

以下的命令支持产生merged的报告。

再补充一张user guide中的流程图帮助加深理解。

Working Directory

Working Directory 指定了 DMSA 各个 scenario 的工作目录。通常在这个目录下,会自动以 scenario 的名字建立各个 scenario slave process 运行的子目录。

下面的命令就是在启动目录下指定一个子目录 work (自动建立) 做为工作目录。

Launch Directory of Remote Slave Process

各个 scenario 运行时都以这个子目录(如 ./work/func_wcl_cmax)为当前目录,所以如果在 slave 的脚本中有相对目录结构 ( relative directory structure )的使用,一定要以这个目录为基准目录进行命令的书写。

当然有些同学为了方便,使用绝对路径(absolute directory path)也是可以的,不过这是以丧失灵活性为代价的。

write_changes

有些 PT 命令是和目录有紧密联系的。例如这节标题提到的 write_changes,在旧版本中只支持下面的命令格式,这个命令会在每个slave process(scenario)的目录里都写出一个 pt_eco_change.tcl,一模一样的若干份,看着一点都不绿色环保。

在 PrimeTime Version P-2019.03 中 write_changes 引入了一些变化。

这样 

pt_eco_change_master.tcl 只会在 Master Process 的启动目录里写出来一份,看着就不那么浪费了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海盗船YYAH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值