0

我正在尝试编译:mpicc -o laplace laplace_mpi.c -L。-lpardiso600-GNU720-X86-64 -llapack -lrefblas -lgfortran -fopenmp -lpthread -ldl -lstdc++ -lm 适用于 gcc 而不是 mpicc 但我得到:/tmp/ccu1hut5.o: In function mpipardiso_driver': laplace_mpi.c:(.text+0x1250): undefined reference to pardiso_mpi_init_c_' 有谁知道解决方案?谢谢,约翰

4

1 回答 1

0

我只能做出贡献,显然较新的 libpardiso 库似乎不再导出这些符号(至少nm -gD不显示它们) - 所以我预计链接器错误..

遗憾的是,我无法测试 Pardiso 4.1(显然是将 MPI 组件引入 Pardiso 的版本),因为旧的二进制文件不可用于许可/下载。

另外 - 我也不能用 gcc 而不是 mpicc 编译上面的行 - 因为它对 mpi 有未解决的依赖关系。我认为您的意思是您能够从 Pardiso 示例中编译 laplace.c 示例?这应该可以工作,因为它不使用任何 pardiso_mpi 符号。请注意,mpicc 只是一个包装器,并且(至少在我的机器上)仍会调用 gcc(请参阅 参考资料mpicc --showme)。

我会假设 Pardiso 从他们的库中删除了 mpi 符号。这意味着您的问题无法解决,并且 Pardiso 网页上的示例无法使用当前的 Pardiso 可执行文件进行编译。

我希望这至少能让您了解它为什么不起作用。我建议联系 pardiso 支持并询问 pardiso 的 mpi 版本。

于 2021-05-28T08:48:21.197 回答