将使用SLEPc获得的特征向量写入C文件

14ifxucb  于 2023-04-05  发布在  其他
关注(0)|答案(1)|浏览(100)

我最近开始使用SLEPc对大型稀疏矩阵进行对角化,充分利用了MPI的优势。一切都很好,除了在最后我想把特征向量写到文件中。我这样做:

PetscViewerASCIIOpen(PETSC_COMM_WORLD, "./data/eigvecs.txt", &viewer);
PetscViewerPushFormat(viewer, PETSC_VIEWER_ASCII_PYTHON);
EPSVectorsView(eps, viewer);

我使用mpiexec -n 3 ./app运行代码。生成的文件eigvecs.txt看起来像这样:

Vec Object: Xr0_EPS_0x84000004_0 3 MPI processes
 type: mpi
Process [0]
-0.909229
0.415619
Process [1]
-0.00206267
0.00410161
Process [2]
0.0145993
0.01813
Vec Object: Xi0_EPS_0x84000004_0 3 MPI processes
 type: mpi
Process [0]
0.
0.
Process [1]
0.
0.
Process [2]
0.
0.

因此,每个特征向量的分量被并行打印,并且不同的特征向量被一串0分开,也是并行打印的。
我的问题:有没有更好的方法来做到这一点?因为稍后我想在pythonjulia中读取这个文件并做一些计算。如果没有,在pythonjulia中读取这个文件的最佳方法是什么?
谢谢!

rnmwe5a2

rnmwe5a21#

与其转储到ascii并在输入时解析,不如使用PETSCVIEWERHDF5转储hdf5文件,并使用python的hdf5模块读取文件。这样会更快,而且不会产生转换损失。

相关问题