Other articles


  1. IMerger及ISplitter文档解析

    IMerger

    类图如下:

    IMerger类图

    文档解析:

    1.merger(self,subjobs,sum_outputdir,**option)

    • 合并子作业的输出到sum_outputdir.
    • options(关键字参数)由具体的子类定义

    2.validatedMerge(self.job)

    ISplitter

    类图如下:

    ISplitter类图

    文档解析:

    1.split(self,job)

    • 根据主作业返回子作业列表
    • 主作业不会被更改
    • 具体子类必须实现本方法
    • 修改子作业的确定部分(如特定的属性)。子作业的其他部分都会相同。只有在schema中声明为"splitable"的属性才可修改。如果app handler不能处理被修改的参数,这个限定应用在app对象上就可以避免前后不一致。
    • 当前的实现中,backend的类型也不可更改。

    2.validatedSplit(self,job)

    • 调用split()方法执行作业拆分,并使mutability inveriants有效
    • 如果invariants损坏(或者split()中发生异常),则抛出SplittingError异常 ...
    read more

    There are comments.

  2. IApplication文档解析

    类图如下:

    Iapp类图

    是所有app对象的基类。子类在GPI中给出程序逻辑并从功能上实现配置操作。app配置是作业提交的第一步。

    实现配置方法的基本规则:

    一般configure()和master_configure()方法会在作业提交的时候调用,所以原则上你

    方法文档:

    1.master_configure(self)

    • 配置app的共享(主要)方面。
    • 调用一次,splitting情况下也会调用
    • 返回元组(modified_flag, appconfig)
      • -appconfig(或appextra): 结构任意。由特定app运行时handler处理
      • -modified_flag: 如果configure()时对象self被改变了则为true
    • 如果方法未实现则忽略掉

    2.config(self,master_aapconfig)

    • 配置app的特定方面。与方法1有类似语义并且返回元组(modified_flag,appconfig).
    • 具体子类必须实现,否则作业提交(submission)会失败。
    • 参数master_configure是方法1的返回
    • splitting情况下每个子作业对象调用一次。即有多少子作业就会调用多少次。
    • 无spliting情况下则会调用一次.
    • 从Ganga4.0.x开始,方法1被忽略。

    3 ...

    read more

    There are comments.

  3. Ganga中文

    GangaDoc

    Ganga文档首页入口

    3 实现

    这章提供了GANGA中一些重要部分的当前实现细节。
    3.1 组件
    作业的各个组件以插件类的形式来实现,需用户在配置文件中设为enabled,则会由GANGA在启动时导入。这表示用户仅能看到与其特定工作环境相关的组件。
    插件维护十分简单,采用了一组内部接口和一个产生代理类的机制。组件类继承自接口类。每个插件类都定义了一个schema,用它描述插件的属性和指定类型(只读/读写/内部)、可见性以及相关的用户友好(user-convinence)的过滤器和语法快捷方式(shortcut)。
    与用户直接进行交互的不是插件类,而是一个自动产生的代理类,代理类在GPI中可见。代理类只包含插件类中的一些在schema中定义可见的属性以及选出用于导出的方法。插件和代理的层次(level)分离十分灵活。在GPI层插件的实现细节不可见;所有代理类都遵循相同的设计逻辑(例如按值拷贝copy-by-value);持续性自动化,会话等级锁定透明。用这种方法,底层的内部的API就与用户层的GPI分离开。
    框架不强迫开发者支持app和backend的所有组合,只要支持有意义和有趣的组合即可。为便于管理这些组合,提出了submission handler的概念。sumission handler是app和backend组件的一个连接器。在提交时间,它将app的内部表示(representation)传送给特定backend可以接受的表示(representation ...
    read more

    There are comments.

  4. IBackend文档解析

    类图:

    IBackend类图

    文档解析:

    1.setup(self)

    • Ganga.core服务启动时由每个作业调用的一个钩子。在监测子系统enabled之前调用。可以被backend用来进行一些特殊的setup(比如远程backned的ssh传输管道)

    2.master_submit(self,rjobs,subjobconfigs,masterjobconfig,keep_going=false)

    • 提交主作业和所有子作业
    • masterjobconfig是共享的,单独的subjob配置在subjobconfig中定义
    • 单个作业(无split的提交也通过本方法执行。在这种情况下subjobconfig只包含一个元素——作业本身。
    • 默认实现是调用每个单独作业的submit()方法
    • 如果任何子作业fails则整个过程被忽略并抛出一个IncompleteSubmissionError
    • 子作业已经submit的保持submitted
    • 默认实现不处理masterjobconfig(因此子类中一般可以重写本方法)
    • 在IBackend_submit()中keep_going是可选的,用以允许不支持keep_going=True的backend实现,这些backend在某些情况下可能要调用IBackend.master_submit()来工作,这样就不需要重写本方法。很多情况中该参数并不重要,因此由开发维护人员决定是否启用对该参数的支持。

    3.submit(self,subjobconfig,master_input_sandbox)

    • 提交一个单独的作业。成功返回1
    • master_input_sandbox是一个列表,内容为所有子作业共享的文件名单 ...
    read more

    There are comments.

Page 1 / 1

blogroll

social