sst dumpi跟踪格式的python绑定。
pydumpi的Python项目详细描述
sst-dumpi python绑定
sst-dumpi跟踪库的python绑定。
安装
pydumpi位于PyPi:
pip install pydumpi
注意:pypi包包含一个预先构建的共享库,这可能不是 在非常旧的系统上工作,并且仅限Linux。如果这对你不起作用 从源安装是您唯一的选择。
从源安装
克隆此存储库并在虚拟环境中安装带有pip的包,例如:
git clone http://github.com/justacid/pydumpi cd myproject source venv/bin/activate pip install ../pydumpi
如果找不到dumpi库,安装可能需要一些时间 在路径上,它将在安装期间下载和编译 过程。您还可以全局安装libundumpi,了解更多信息 有关如何全局安装的信息,请参阅 sst-dumpi repository。
用法示例
从dumpitrace继承并重写您感兴趣的回调。 每个mpi函数都有一个可用的回调。可以找到完整的列表 在dumpi/callbacks.py中。
frompydumpiimportDumpiTraceclassMyTrace(DumpiTrace):def__init__(self,file_name):super().__init__(file_name)self.message_count=0defon_send(self,data,thread,cpu_time,wall_time,perf_info):self.message_count+=1time_diff=wall_time.stop-wall_time.startprint(f"Time elapsed in 'MPI_Send': {time_diff.to_ms()} milliseconds.")defon_recv(self,data,thread,cpu_time,wall_time,perf_info):print(f"Message received on thread '{thread}' from thread '{data.source}'.")withMyTrace("path/to/some/trace.bin")astrace:trace.print_header()trace.read_stream()print(trace.message_count)
重要:因为C后端在回调返回后释放数据, 它仅在回调(包括墙和CPU时间)内有效。如果你 需要存储它执行深度复制,否则会得到垃圾值。
元数据
您可以通过打印头和 页脚。尤其是页脚打印了所有mpi函数的列表 在跟踪期间被调用-此信息有助于指导您决定 哪些回调需要重写以进行进一步分析。
withDumpiTrace("path/to/some/trace.bin")astrace:trace.print_header()trace.print_footer()
还有一个实用函数来读取文件夹中的所有二进制跟踪。这个 函数将在给定目录中搜索元文件,并执行一些基本的健全操作 检查并返回包含所有二进制跟踪的列表。
frompydumpi.utilimporttrace_files_from_dirforfnameintrace_files_from_dir("path/to/data_dir"):print(fname)