我正在使用其他人的使用 PETSc 3.0.0-p9 的代码。
它们在计算结束时有一个向量,分布在许多不同的处理器中,我想将该向量输出到文件中。
不幸的是,他们这样做的方式似乎不起作用。有没有一种简单的方法可以将向量的(实部)写入 PETSc 中的文件?
当前完成的方法是将 PETScVector 写入 C++ STL 向量(在所有处理器上),然后将向量写入文件(在一个处理器上)。
这种方法不起作用,因为只有该处理器上的值被写入文件。
是否有将矢量输出到文件的“标准 PETSc”方式?
谢谢!
我正在使用其他人的使用 PETSc 3.0.0-p9 的代码。
它们在计算结束时有一个向量,分布在许多不同的处理器中,我想将该向量输出到文件中。
不幸的是,他们这样做的方式似乎不起作用。有没有一种简单的方法可以将向量的(实部)写入 PETSc 中的文件?
当前完成的方法是将 PETScVector 写入 C++ STL 向量(在所有处理器上),然后将向量写入文件(在一个处理器上)。
这种方法不起作用,因为只有该处理器上的值被写入文件。
是否有将矢量输出到文件的“标准 PETSc”方式?
谢谢!
通常你可以使用VecView()一切。您可能想要打开PetscViewer使用PetscViewerBinaryOpen,在这种情况下VecView()将有效地并行写入二进制文件。您可以使用 PETSc 程序VecLoad()、MATLAB/Octave PetscBinaryRead()(添加$PETSC_DIR/bin/matlab/到您的路径)或 Python(脚本)读取它中$PETSC_DIR/bin/pythonscripts/)。
如果您担心订购或其他问题,请澄清问题。
我使用命令“VecGather”将所有向量收集到根节点,然后在根节点上执行输出。
我认为另一种方法是将集群中每个节点的每个本地结果写入 NFS 共享系统。一些可视化软件如Visit可以支持并行文件格式。