我知道编辑这个网站吗?
核心 SciJava 软件库本页介绍与 核心 SciJava 软件库 相关的内容。点击徽标查看详情。

Scijava并行

Scijava-parallel 是一个框架,为使用远程计算机或 HPC 集群等计算资源提供访问点。它隐藏了有关此类资源的配置和初始化的详细信息。

用户类型

Scijava 控件设计提供语音类型的用户使用,我们称为:开发人员斐济用户和家具化范式

开发人员使用其定义的API来访问用户的计算资源配置。远程计算资源可以通过实现从ParallelParadigm接口派生的接口的组件来访问。这些组件称为“毛化模板实现”,专门的接口称为“毛化模板”。

斐济用户提供了头部化示例实现的配置。这些配置称为配置文件。用户还可以选择某些代码请求头部化示例时使用的一种配置。

家具化范式提供者提供新的家具化范式实现或新型家具化范式。

开发人员

开发人员通过 getParadigmOfType 方法获取所选配置文件中的家具化模板实现。调用该方法时指定所需的家具化模板。如果家具化模板实现不存在,则返回null值类型。

/media/software/parallelservice.png

Figure 1: ParallelService UML class diagram.

基本类型ParallelParadimg包含三个方法:

  • init - 初始化设备正常运行并使用所需的资源;
  • close - 产生初始化资源;
  • getStatus - 返回指示范式是否已初始化或已执行的状态。

RPCParadigm 类型的第一个家具化示例具有以下方法:

List<Map<String, Object>> runAll(String commandName, List<Map<String, Object>> parameters)
List<CompletableFuture<Map<String, Object>>> runAllAsync(String commandName, List<Map<String, Object>> parameters);

这些方法导致线程执行参数的指定命令。参数的大小定义了要执行的执行次数。请求的线程化和调度是通过线程化范式在内部解决的实现的。线程化示例有语音的实现方式:

LocalMultithreadedParadigm

§模块§§6§§§中的LocalMultithreadedParadigm在运行Fiji的同一个实例中执行命令,并使用多个线程进行任务化。

FSTRPCParadigm

§模块§§7§§§中的FSTRPCParadigm在运行斐济的不同实例中执行命令。斐济可以在不同的计算机或HPC集群中运行。通信通过TCP/IP连接实现,数据由fst库fst串行化。

它是 RPCParadigm 的实现,在运行 Fiji 的不同实例中执行命令。 Fiji 可以在不同的计算机或 HPC 集群中运行。通过 TCP/IP 实现通信,数据通过库fst进行序列化。可以将每个可序列化对象作为请求中的组件。可以通过提供可扩展性对添加其他类型的支持。有必要的实现接口§§5§§§:

public interface ParallelizationParadigmSerializer extends SciJavaPlugin {

  void writeObject(Object obj, ObjectOutput output) throws IOException;

  Object readObject(Class<?> objectClass, ObjectInput input) throws IOException;

  Class<?> getSerializedClass();

  boolean alsoForAllSubclasses();

  boolean willHandleClass(Class<?> clazz);
}

并用指定类型ParallelizationParadigmSerializer的@Plugin注解来注解实现类。项目 scijava-parallel-fst 中存在 Dataset 类型接口的一种实现:

@Plugin(type = ParallelizationParadigmSerializer.class)
public class DatasetSerializer implements ParallelizationParadigmSerializer {

ImageJServerParadigm

scijava-parallel-imagej-server模块中的ImageJServerParadigm持续运行斐济的不同实例中执行命令。该示例使用imagej-server的能力通过其提供的REST API执行命令。

斐用户济

Scijava-parallel 提供了可管理示例和配置文件的插件。可从菜单PluginsScijava parallelParadigm Profiles Manager访问。该插件显示以下格式:

/media/software/paradigmprofilesmanager.png

Figure 2: Paradigm Profiles Manager

配置文件可以是:

  • 创建 - 底部的按钮Edit
  • 编辑 - 中央部分的按钮Create
  • 删除了中央部分的按钮Select;和
  • 选定 - 中央部分的按钮Delete

配置文件创建和编辑

在配置文件期间,用户指定关联示例的实现 - 在屏幕截图 - 示例管理器中选择FSTRPCParadigm。范式管理器由创建家具化范式提供者和家具化范式实现共同提供。范式管理器管理家具化范式实现所使用的资源。同样可用的范式管理器,它们启动服务器处理请求的位置有所不同:

  • 进程中 FSTPRC - 在斐济的实际运行实例中;
  • 本地FSTRPC - 在本地计算机上作为另一个进程;
  • HPC 上的 FSTRPC - 通过 ssh 远程 HPC 集群上。

这样是为了允许用户在配置文件创建期间提供基本设置。需要根据选定的模板管理器的不同和变化进行设置。 本地 FSTPRC 范式管理器要求用户提供本地文件系统中斐济集群安装的路径,而 HPC 上的 FSTRPC 要求用户允许连接到远程 HPC 集群的信息 - 主机名、附件 - 以及斐济集群安装在 HPC 集群上的位置。

配置文件选择

此操作将模板配置文件标记为已选择。在头部化实现提供(实现接口)所请求的头部化类型为相关情况下,与选定简联的模板的实例作为调用方法getParadigmOfType的结果被返回。在头部服务的当前实现中,只有一个配置可以文件标记为已选择,但我们将其视为未来可能更改的实现细节。

家具化范式管理

管理器使用户能够在选定的配置文件中执行任务化范例实现的基本管理。用户可以通过表格Paradigm Active来初始化和关闭配置文件。HPC上式的范式管理器FSTRPC提供了离开斐济的可能性,该斐济在远程HPC上的作业中启动,在相关的家具化范中实现关闭时运行。该属性由用户在执行期间指定

玩具化示例提供者

家具化范例实现只需要实现一个或多个家具化范例等等作为注释插件:

@Plugin(type = ParallelizationParadigm.class)
public class MPIParadigmImpl implements MPIParadigm

初始化的设置需要在§§0§§§其他子类的实例中进行。Scijava-parallel提供了一个用于配置文件、创建将其存储在持久存储中以及包含设置的范式初始化的框架。该框架提供了前面的用户描述界面。

框架提供接口ParadigmManager,框架使用其实现来创建配置文件(方法createProfile及其)编辑方法(editProfile)。毛化模板实现由方法prepareParadigm初始化。毛化模板提供者实现接口ParadigmManager,其参数为@Plugin,类型为ParadigmManager

/media/software/paradigm-manager.png

Figure 3: ProfilesManager UML class diagram.

类§§0§§§支持常见的头发化范式初始化示例:启动外部软件 - 在现有实现的情况下始终是斐济 - 并使用如何访问软件的信息(主机名、端口号)来初始化头发化范式。它与包含类型§§1§§§其子类型(例如LocalImagejRunnerSettings)的对象的配置文件类型ParadigmProfileUsingRunner一起使用。 ParadigmManagerUsingRunner通过接口ServerRunner启动外部软件。 ParadigmManagerUsingRunner实现RunnerSettingsEditor的对象编辑设置。实现类应使用类型为RunnerSettingsEditor的注释@Plugin进行注释。它使 scijava-parallel 能够找到指定类型设置的编辑器。有相应的 RunnerSettings 现有实现的注册编辑器。

开发人员创建 ParadigmManagerUsingRunner 类的非抽象子类。孩子只需要实现两个抽象方法:getTypeOfRunnerinitParadigm。创建ServerRunner的新实现或重用现有的实现之一:LocalImagejRunner、HPCImageJRunner。

/media/software/paradigm-manager-using-runner.jpg

Figure 4: ParadigmManagerUsingRunner UML class diagram.

##安装

Scijava-parallel 可以从其更新站点 https://sites.imagej.net/Scijava-parallel/ 直接安装到斐济。我们还提供了修改了 Labkit 的版本,支持 scijava-parallel。此版本的 Labkit 有自己的更新站点 https://sites.imagej.net/Imglib2-labkit-cluster/。它只是演示 scijava-parallel,并不意味着作为生产软件。