`
sunzixun
  • 浏览: 75942 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

<HPC>Torque 基本框架

 
阅读更多

背景

 

TORQUE provides administrators the ability to run scripts before and/or after each job executes. With such a
script, a site can prepare systems, perform node health checks, prepend and append text to output and error
log files, cleanup systems, and so forth.
The following table shows which mom runs which script. All scripts must be in the $PBS_HOME/mom_priv/
directory and be available on every compute node. $PBS_HOME by default is /usr/spool/PBS/. Mother
Superior is the pbs_mom on the first node allocated. Sisters refer to all other pbs_moms, although note that
a Mother Superior is also a sister node.

 

rpp.c 中主要是网络的收包,解包

 

可以看到torque 是通过udp来流通信的。

 

 

 

首先通过add_con 注册回调函数rpp_request()

 

接下来在

 

do_rqq()

 

通过 proto = disrsi(stream,&ret); 来获得消息的协议类型,然后去调用相应的协议处理方法

 

case rm_protocol:  资源监控的请求;

 

case im_rpotocol : 任务管理的请求

 

case is_protocol:   内部服务器的请求

 

 

 

im_request(); 对来自于另一个mom rpp 消息 进行处理

 

还是通过disrsi(stream,&ret); 按字节读取,包体组成为request(jobid,cookie,command,event,fromtast)

 

然后根据command的值分为

 

case im_join_job : 主要是来自mother superiorde 的工作消息。

 继续解析得到包体内容: auxiliary info (nodeid,nodenum,)

 这里会调用find_job 看看请求的jobid 是否已经存在 如果存在一般是错误的情况,需要清理告警

 

接下来会job_alloc 继续对任务的解析

 

job_nodes 会去解析工作的node

 

同时任务的状态为: JOB_STATE_TRANSIT;  表示正在接受新任务

 

在这个时候所有的sister会去执行 mom_priv/prologue.parallel"

 

接下来 mom_do_poll()会去看看该job是否被限制某些资源使用。

 

 

然后第一个switch做完, 系统也做好了一些关于job的准备工作。

 

如果没有匹配上第一个SWITH reply = 0. 说明下面的消息是需要反馈的。

 

下一个switch开始

 

case IM_KILL_JOB: 一般是qdel  来删除这个jobid 消息同样来自mom superior

 

case IM_SPAWN_TASK: 这里说明某个 mom job需要开始, 这样大家MOM都要开始干活

 

做了一些合法行检查之后 就要pbs_task_create()

接下来 就到了:  start_process() 这就是真正干活的地方

 

这里面会产生一个pipe,用于fork之后父进程收集子进程的信息

 

子进程 InitUserEnv() 初始化所有环境变量

然后重定向fd ,设置euid 工作目录,等工作

 

最后当然就是  execvp(argv[0],argv);

 

 

 

 

 

mother  主要的工作就是

 

         process_request()

                   dispatch_request()

 

                            case PBS_BATCH_Commit:  req_commit();

                              pj->ji_qs.ji_state = JOB_STATE_RUNNING;

                  

                            主要的执行job就是start_exec()

 

                            TMomFinalizeJob1();*

 Used by MOM superior to start the shell process.

                          perform all server level pre-job tasks, collect information

create parent-child pipes

 

                            TMomFinalizeJob2()

                                      子进程执行TMomFinalizeChild(){

                                               经过多次forksisiter类似的准备工作

                                               execve(shell,arg,vtable.v_envp);

}

 

                            TMomCheckJobChild();

 

TMomFinalizeJob3(){ 这里把JOB的做内部和外部JOB_STATE_RUNNING状态改为RUNNING

         如果失败会

         exec_bail(){

                     send_sisters(pjob,IM_ABORT_JOB); 通知所有sisters

}

 

}

 

 

 

 

 

 Torque的代码 简单而丑陋。。。HPC领域可能本来就是注重并行算法,不在意调度这些辅助库。。

 

 

 

 

分享到:
评论

相关推荐

    hpc-project:使用HPC进行分布式超参数调整

    3. **作业提交系统**:大多数HPC集群使用作业提交系统(如Slurm、Torque或LSF),以管理和调度任务。你需要编写提交脚本,将Jupyter Notebook中的任务转化为可提交的作业。例如,使用`sbatch`命令(Slurm系统)来...

    python-for-hpc:适用于HPC的Python

    在HPC集群中,如Slurm、Torque或PBS等调度系统用于分配和管理计算资源。Python有如joblib和htcondor等库,帮助开发者更好地与这些系统交互,提交和管理作业。 10. **持续集成与自动化**: Jenkins、Travis CI和...

    HPC-Project:HPC项目的代码在此处添加

    4. **并行化实现**: 利用OpenMPI或其他并行计算框架将单机代码转化为适合分布式环境的程序。 5. **性能优化**: 调整代码以提高运行效率,如避免全局锁、减少数据通信、利用缓存等。 6. **测试与调试**: 在不同规模...

    docs:丹麦技术大学Sophia HPC集群的文档

    【标题】"丹麦技术大学Sophia HPC集群的文档"揭示了这是一份关于高性能计算(High Performance Computing, HPC)集群的详细资料,专门针对丹麦技术大学的HPC-Risø系统。Sophia HPC集群是该校用于科学研究和工程计算...

    high-mem-config:高内存HPC环境的配置和配置文件

    总之,"high-mem-config"是一个全面的框架,帮助用户构建和维护能够处理大规模数据和复杂计算的高效HPC环境。正确地配置和管理这样的系统,对于提升科研、工程和商业领域的计算能力具有重要意义。

    十大主流集群调度系统大盘点

    - **Torque**:另一个流行的HPC作业调度系统,与Maui Scheduler配合使用,提供更高级别的策略控制。 - **Grid Engine**:最初由Sun Microsystems开发,现由Oracle维护,是一个强大的并行和分布式计算资源管理器。 - ...

    AWS高性能计算解决方案.pdf

    8. **AWS ParallelCluster**:这是一个开源集群计算框架,可以简化在AWS上设置和管理HPC集群的过程,支持多种作业调度器,如Slurm、PBS和Torque。 9. **AWS管理工具**,如AWS CloudWatch和AWS Config,提供了监控、...

    高性能计算知识汇总

    Torque是集群管理软件之一,支持PBS(Portable Batch System)的作业调度和管理,它由Torque安装、配置和使用等步骤构成。 并行环境与并行开发是高性能计算的核心内容之一,它涉及编译器、并行编程模型、数学库等。...

    关于GPU集群的好资料

    GPU集群是一种专为高性能计算(HPC)设计的系统,它通过将多个图形处理单元(GPU)集成到一个网络环境中,以实现并行处理能力的大幅增强。这种集群技术广泛应用于科学计算、数据分析、深度学习、人工智能等领域,...

    Convert_Trace_Data_to_Single_File.zip_MPI_trace

    在IT行业中,特别是高性能计算(HPC)领域,Message Passing Interface (MPI) 是一种广泛使用的编程接口,用于编写并行程序。"Convert_Trace_Data_to_Single_File.zip_MPI_trace" 提到的资源显然与MPI的性能调优和...

    行业分类-设备装置-基于Linux并行计算平台的动态负载均衡方法.zip

    3. **网格计算**:通过网格计算框架(如 Globus Toolkit),可以跨越地理分布式资源进行负载均衡,进一步扩展了动态负载均衡的范围。 4. **云计算集成**:结合云环境,可以利用弹性伸缩的特性,根据需求自动增加或...

    PyPI 官网下载 | dask-drmaa-0.2.1.tar.gz

    **dask-drmaa** 是一个Python库,它为Dask分布式计算框架提供了DRMAA(分布式资源管理应用编程接口)的支持。这个资源是dask-drmaa的0.2.1版本,可以从Python包索引(PyPI)官方网站获取。Dask是一种灵活的并行计算...

    c5集群

    在Linux环境中构建C5集群,可以实现大规模并行计算,支持高性能计算(HPC)、机器学习、大数据分析等多种复杂任务。 在Linux集群中,C5实例通常通过网络进行紧密耦合,形成一个分布式系统,每个节点(即C5实例)都...

    matlab开发-kyamagumatlabbatch

    9. **集成与兼容性**:考虑到MATLAB与其他系统的交互,kyamagumatlabbatch可能支持与HPC(高性能计算)集群管理软件的集成,如SLURM、Torque等,确保与现有计算环境的无缝对接。 10. **学习与应用**:使用...

    核能系统

    标题中的“核能系统”可能是指在信息技术领域中,尤其是生物信息学中,利用核能原理构建的一种计算或分析框架。然而,考虑到标签是“Nextflow”,我们可以将讨论重点转向这个特定的开源工具,而非物理上的核能系统。...

Global site tag (gtag.js) - Google Analytics