c - Nasa paralell 基准测试 - MPI 错误

标签 c bash parallel-processing mpi benchmarking

我有一个非常特殊的问题。我需要为我的学校项目审查 NASA Parallel Benchmarks,但我发现这是一个非常有问题的任务 :-) 起初,我尝试使用 IS(整数排序),但代码无法编译,并且我发现,我需要重写 make.def 文件。所以我为 mpi.h 重写了它的变量并编译了它,但程序一直提醒我:

Fatal error in PMPI_Comm_rank: Invalid communicator, error stack:
PMPI_Comm_rank(108): MPI_Comm_rank(comm=0x0, rank=0x6084e8) failed
PMPI_Comm_rank(66).: Invalid communicator

老实说,我真的不知道,我应该知道吗。我什至尝试过更改旧的编译器,例如 ccgcc 等,但它似乎没有任何效果。我试图重写的最后一件事是变量 CMPI_LIB,但我不知道如何正确地做它。

非常感谢您的所有回复;-) 很抱歉我的英语不好,我不是母语人士。


整个基准测试在这里下载(cca 600kB):uloz.to/xTSEzTX8/npb3-3-1-zip

我正在尝试编译和启动的文件 is.c:hostcode.sourceforge.net/view/2436

生成文件:hostcode.sourceforge.net/view/2437

文件 make.common - 负责编译具有特殊功能的文件等:hostcode.sourceforge.net/view/2438

我的 make.def 在这里:#veeylg84-46196 - BASH - Sourcecode

我的“基准文件夹”中的文件结构:http://www.sourcepod.com/sozaoh48-46200

最佳答案

PMPI_Comm_rank(108): MPI_Comm_rank(comm=0x0, rank=0x6084e8) failed 消息说明了很多。您的 MPI_COMM_WORLD 常量是 0,这与基于 MPICH 的实现不同(从错误消息的格式可以猜到)。它是 MPICH 中的编译时常量 (#define MPI_COMM_WORLD ((MPI_Comm)0x44000000)) 和 Open MPI 中的运行时常量引用。此类错误的第一个原因是混合 MPI 实现,即从一个实现中包含 mpi.h 并链接到另一个实现的库。

从您的 make.def 可以明显看出,您正在包含来自虚拟 MPI 实现的 mpi.h 并链接到真实的 MPI 库。这根本行不通。由于 mpicc 负责将正确的包含路径和库选项传递给后端编译器,因此您不必显式设置 CMPI_LIBCMPI_INC而应该让它们。这些保留用于 MPI 实现不提供编译器包装器(mpiccmpif90 等)并且必须显式指定所有选项的情况,就是这种情况与例如MS-MPI.

关于c - Nasa paralell 基准测试 - MPI 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26201329/

相关文章:

c - 允许用户在文件中搜索单词的程序

python - 同时运行多个 python 文件并在一个完成时终止所有文件

bash - Bash命令替换为阵列

c++ - 使用缓存内存。映射技术

我们可以在不知道明文大小的情况下使用 C 中的 OpenSSL 解密(对称加密/解密)消息吗?

c - OpenMP 矩阵乘法关键部分

c++ - 在 C++ 中写入相同值的竞争条件?

linux - 如何在运行多个命令的同时并行运行 ssh 连接 Linux

c - Linux RPC 调用很慢

bash - fish shell : Weird exit command behaviour from terminal