在 PETSc 中输出分布式向量

计算科学 并行计算 图书馆 宠物 io
2021-12-22 13:51:25

我正在使用其他人的使用 PETSc 3.0.0-p9 的代码。

它们在计算结束时有一个向量,分布在许多不同的处理器中,我想将该向量输出到文件中。

不幸的是,他们这样做的方式似乎不起作用。有没有一种简单的方法可以将向量的(实部)写入 PETSc 中的文件?

当前完成的方法是将 PETScVector 写入 C++ STL 向量(在所有处理器上),然后将向量写入文件(在一个处理器上)。

这种方法不起作用,因为只有该处理器上的值被写入文件。

是否有将矢量输出到文件的“标准 PETSc”方式?

谢谢!

2个回答

通常你可以使用VecView()一切。您可能想要打开PetscViewer使用PetscViewerBinaryOpen,在这种情况下VecView()将有效地并行写入二进制文件。您可以使用 PETSc 程序VecLoad()、MATLAB/Octave PetscBinaryRead()(添加$PETSC_DIR/bin/matlab/到您的路径)或 Python(脚本)读取它$PETSC_DIR/bin/pythonscripts/)。

如果您担心订购或其他问题,请澄清问题。

我使用命令“VecGather”将所有向量收集到根节点,然后在根节点上执行输出。

我认为另一种方法是将集群中每个节点的每个本地结果写入 NFS 共享系统。一些可视化软件如Visit可以支持并行文件格式。