这是 tricensus-mpi 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
tricensus-mpi - 在使用 MPI 的多台机器之间分配三角普查
概要
三人口普查-mpi [ -D, --深度=各级 [ -X, --试运行 [ - 2, --dim2 [ -o, --可定向 |
-n, --不可定向 [ -F, - 有限 | -d, - 理想的 [ -米, --最小 | -M, --minprime |
-N, --minprimep2 | -H, --minhyp [ -是的, --签名 ] 成对文件 输出文件前缀
商品描述
允许多个进程,可能运行在不同机器的集群上,
合作形成 3 流形或 2 流形三角剖分的普查。 协调
是通过 MPI(消息传递接口)完成的,整个人口普查作为一个
单个 MPI 作业。 该程序非常适合高性能集群。
默认行为是枚举 3 流形三角剖分。 如果你想枚举
2-流形三角剖分,你必须通过 --dim2.
为了准备在多个过程或机器之间分配的普查,普查
必须分成更小的部分。 跑步 人口普查 带选项 --genpairs (是的
非常快)将创建一个面部配对列表,必须对每个配对进行分析,以便
完成人口普查。
面部配对的完整列表应存储在单个文件中,该文件通过
命令行为 成对文件. 该文件每行必须包含一个面部配对,并且每个
这些人脸配对必须采用规范形式(即,必须是
它的同构类)。 生成的人脸配对 人口普查 --genpairs 旨在
保证满足这些条件。
这个 三人口普查-mpi 实用程序有两种操作模式:默认模式和子搜索模式。
这些将在下面的操作模式下单独解释。
在这两种模式下,一个 MPI 进程充当控制器,其余进程都充当
作为奴隶。 控制器从以下位置读取人脸配对列表 成对文件, 构造一个
基于这些的一系列任务,并将这些任务输出给从站进行处理。
每个从站一次处理一个任务,当它完成时向控制器请求一个新任务。
完成了上一个。
在每个任务结束时,如果发现任何三角剖分,那么负责的从站将
将这些三角剖分保存到输出文件中。 输出文件将具有表单的名称
输出文件前缀_p.rga 在默认模式或 输出文件前缀_p-s.rga 在子搜索模式下。
服务 输出文件前缀 在命令行上传递, p 是人脸配对的数量
正在处理,以及 s 是该人脸配对中子搜索的数量(两个人脸
配对和子搜索从 1 向上编号)。 如果没有找到三角剖分
那么从站将根本不会写入任何输出文件。
控制器和从进程都采取相同的 三人口普查-mpi 选项(不包括 MPI-
特定选项,通常由 MPI 包装程序提供,例如 米匹伦 or
执行)。 进程的不同角色完全由它们的 MPI 进程决定
等级(控制器始终是等级为 0 的进程)。 因此应该可以
通过运行单个命令启动所有 MPI 进程,如示例中所示
联络一位教师
随着人口普查的进行,控制器会保留每个奴隶活动的详细日志,
包括每个从任务花费了多长时间以及找到了多少三角剖分。
此日志写入文件 输出文件前缀.log. 实用程序 tricensus-mpi-状态
可以解析此日志并生成更短的人类可读摘要。
重要提示: 这是 高度 建议 你使用 --签名 选项。 这将保持
输出文件小,将显着减少内存占用
三人口普查-mpi 本身。
模式 OF 项目运营
如上所述,有两种基本的操作模式。 这些是默认模式(使用
,尤其是 - 深度 未通过)和子搜索模式(在 - 深度 已通过)。
· 在 默认 模式,控制器只需读取面部配对列表并给出每个
配对到一个从属进行处理,一个接一个。
· 在 子搜索 模式,更多的工作被推送到控制器,从属任务被
更短。 在这里,控制器一次读取一个人脸配对并开始处理
那张脸配对。 参数中提供了固定深度 - 深度; 每次
在搜索树中达到深度,从该点开始的子搜索作为任务给出
到下一个空闲的奴隶。 同时控制器回溯(好像子搜索
已经完成)并继续,当给定的深度为
再次到达,依此类推。
这些模式可以被可视化如下。 对于每个人脸配对,考虑相应的
递归搜索作为一个大的搜索树。 在默认模式下,整个树在
一次作为单个从任务。 在子搜索模式下,每个以给定深度为根的子树是
作为单独的从任务处理(以及根和给定的
深度由控制器完成)。
不同操作模式之间的主要区别是从站的长度
任务,可以产生多种效果。
· 在默认模式下,从任务很长。 这意味着并行化可以
在人口普查结束时变得非常贫穷,一些奴隶长期闲置
他们等待剩余的奴隶完成的时间。
· 随着深度的增加,我们转向子搜索模式,从任务变得更短,
从站的完成时间将更接近(从而避免空闲从站
上面描述的效率低下)。 此外,通过更精细的子搜索,进度
存储在日志中的信息会更详细,可以更好地了解多长时间
人口普查必须进行。 另一方面,更多的工作被推到了单进程
控制器(如果深度太大,可能会遇到瓶颈,奴隶现在闲置
当他们等待新任务时)。 此外,MPI 开销更大,而且数量
输出文件可能会变得非常大。
最后,实验是决定是否在子搜索模式下运行的最佳方式,
在什么深度。 请注意该选项 --试运行,它可以快速概述
搜索空间(特别是,显示每张脸需要多少子搜索
在任何给定深度配对)。
配置
接受的人口普查选项 三人口普查-mpi 与以下选项相同 人口普查
查看 人口普查 详情参考。
一些选项来自 人口普查 此处不可用(例如,四面体和边界
选项),因为这些必须在生成初始人脸列表时提前提供
配对。
有特定于的新选项 三人口普查-mpi,如下所示。
-D, --深度=各级
表示应该使用子搜索模式(而不是默认模式)。 这
论点 各级 指定搜索树处理应该通过的深度
从控制器到一个新的从任务。
给定的深度必须严格为正(以零深度运行相当于
在默认模式下运行)。
有关更多信息和提示,请参阅上面的操作模式部分
关于选择一个好的价值 各级.
-X, --试运行
指定应执行快速试运行,而不是全面普查。
在试运行中,每次从站接受任务时,它会立即将其标记为
完成,没有找到三角剖分。 控制器的行为保持不变
不变。
结果将是空的人口普查。 空运行的好处是它的日志文件
产生,这将精确地显示如何将人脸配对划分为
实际人口普查中的子搜索。 特别是,日志文件将显示有多少
子搜索每个人脸配对产生的(实用程序 tricensus-mpi-状态 可以帮助
从日志中提取此信息)。
在较小的子搜索深度下,试运行应该非常快。 随着深度
然而,由于额外的工作,空运行将变得更慢
控制器。
此选项仅在子搜索模式下有用(它可以在默认模式下使用,但
结果无趣)。 请参阅上面的操作模式部分
更多详细信息。
示例
假设我们希望形成所有 6-四面体封闭不可定向的普查
三角剖分,针对素数最小 P2 不可约三角剖分进行了优化(因此一些非
素数、非最小或非 P2 不可约三角剖分可以省略)。
我们开始使用 人口普查 生成完整的人脸配对列表。
例子$ 人口普查 --genpairs -t 6 -i > 6.对
人脸配对总数:97
例子$
我们现在使用 三人口普查-mpi 进行分布式人口普查。 一个包装程序,例如 米匹伦
or 执行 通常可用于启动 MPI 进程,尽管这取决于您
具体的 MPI 实现。 以下命令在 10 上运行分布式人口普查
处理器使用 MPI 的 MPICH 实现。
例子$ 米匹伦 -例如 10 /usr/bin/tricensus-mpi -nf 6.对 6-无
例子$
当前处理状态保存在控制器日志中 6-nor.log。 你可以看
这个日志的帮助 tricensus-mpi-状态.
例子$ tricensus-mpi-状态 6-nor.log
配对 1:完成,找到 0 个
...
配对 85:完成,找到 0 个
配对 86:完成,找到 7 个
配对87:跑步
配对88:跑步
仍在运行,已找到 15 个,最后一次活动:10 年 05 月 57 日星期三 34:2009:XNUMX
例子$
人口普查完成后,生成的三角测量结果将保存在文件中,例如
6-nor_8.rga, 6-nor_86.rga 等等。
苹果系统 X AND 视窗 USERS
此实用程序未随拖放应用程序包一起提供 MacOS X 或与
Windows 安装程序。
使用 onworks.net 服务在线使用 tricensus-mpi