我知道编辑这个网站吗?

OpenMPI 插件扩展

Please Note: This version of the documentation is outdated. We recommend reading the guide instead. It contains current information on new features.

一般信息

动机

OpenMPI 尽管相对较老,但仍然是高性能计算 (HPC) 中使用的大规模硬件机器上而开发的真正的内部硬件插件。截至今天,斐济通过 CLIJ 支持 GPU 疯狂,并允许通过 Automated_workflow_for_parallel_Multiview_Reconstruction 执行自动化 HPC 工作流程。然而,仍然没有专门部署在 HPC 负载或超级计算机等大规模硬件机器上而开发的真正的内部硬件插件。这是斐济的初步 OpenMPI 框架,安装 ImageJ中包含最常见的图像处理操作进行模型工具实现。

###扩展说明

这提出了一组适用于本文提出的 OpenMPI 包装器的 Ops,共同组成了一个针对任何现有 ImageJ2 代码中无缝使用的解决方案的设计。此外,框架会自动初始化并释放与 OpenMPI 环境的连接,从而为 Ops 底层的最彻底的操作提供 OpenMPI 实现。该包包含基本图像处理功能以及数学基本、逻辑和统计操作的实际实现。

安装

待定

如何使用

为了证明这种方法的便利性,我们准备了一个棘手的例子。为了方便读者,我们使用了Python,但是可以从斐济支持的任何其他脚本语言调用插件。

kernel = ops.run("create.img", [3, 3], FloatType())
for p in kernel:
 p.set(1.0/kernel.size())

def fn():
 output = ops.create().img(input)
 ops.filter().convolve(output, Views.extendMirrorSingle(input), kernel)
 return output

input = scifio.datasetIO().open(input_path)
output = Measure.benchmark(fn, rounds)
scifio.datasetIO().save(output, output_path)

该清单显示了 OpenMPI 实现,其中初始化了 3×3 模糊内核(第 1-3 行),在第 5-8 行定义了筏形的处理函数(它重用了 ImageJ2 中现有的筏形实现),最后在基准模式下执行以测量执行时间(变量轮数定义了重复次数)。

含义是,只要数据以 IterableInterval 的形式提供,使用 OpenMPI 扩展就不会添加任何额外的层。

调试

控制台上的调试打印输出显示分配节点和数据集划分。以下列表显示了划分为6个节点的数据集。 Fri Jun 19 08:36:49 2020[1,2]:Chunk{data=test.tif, offset=13334, len=6667, chunks=1} Fri Jun 19 08:36:49 2020[1,0]:Chunk{data=test.tif, offset=0, len=6667, chunks=1} Fri Jun 19 08:36:49 2020[1,5]:Chunk{data=test.tif, offset=33335, len=6665, chunks=1} Fri Jun 19 08:36:49 2020[1,1]:Chunk{data=test.tif, offset=6667, len=6667, chunks=1} Fri Jun 19 08:36:49 2020[1,4]:Chunk{data=test.tif, offset=26668, len=6667, chunks=1} Fri Jun 19 08:36:49 2020[1,3]:Chunk{data=test.tif, offset=20001, len=6667, chunks=1}