【发布时间】:2014-10-05 09:25:20
【问题描述】:
我有一个非常特殊的问题。我需要为我的学校项目审查 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
说实话,我真的不知道,我应该知道。我什至尝试将旧的编译器更改为 cc 到 gcc 等,但它似乎没有任何效果。我试图重写的最后一件事是变量 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
【问题讨论】:
-
哪个程序导致错误?源代码看起来如何?它的编译命令是什么样子的?你有哪个 MPI 实现?您的问题目前可能无法回答。
-
我的错误,现在我尝试改进一下,我添加了一个下载整个基准测试的链接(它是一个非常小的包)。我认为,唯一需要更改的是“MPI 链接器”CMPI_LIB 的变量,但我不知道应该分配哪个程序给它。该错误是由编译 is.c 创建的程序引起的,并且我使用嵌入式 Makefile 进行编译 - 我应该在此处发布所有代码,这样您就不必下载存档了吗?如果更好,请随时告诉我 :-) 我的 'mpicc' 版本是 cc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
-
我不会下载一些软件并为您调试(您至少应该说哪个基准测试失败),但也许有人会这样做。我认为您不太可能更改链接器,因为您遇到了运行时故障。 MPI 程序通常与
mpicc、mpif90等链接。 -
IS 基准测试失败,我在我的问题描述中写了它 - 如果您的意思更具体,对不起,老实说我从未使用过这样的旧代码(某些部分我认为是来自 80 年代)或使用 MPI,所以我真的很困惑。好的,我会尝试在其他地方寻找这个阴险的错误:-)
-
好的,您不能将导致错误的源代码粘贴到您的问题中吗?你有行号的回溯吗?
标签: c bash parallel-processing mpi benchmarking