我有一个运行Ubuntu 11.04和MPICH2 1.4的六节点集群。我正在尝试使用Mandelbrot集测试图形。据推测在其中一个MPICH2子目录中找到的pmandel可执行文件应该使用集群中的所有节点在屏幕上呈现Mandelbrot分形,到目前为止我发现的所有方向告诉我“使用pmandel exec”对于这个测试。没有exec - 只有pmandel.c,pmandel.h和pmandel.pd。我以为我应该编译pmandel.c来创建exec,但是当我尝试时会出现以下错误:
cs_lab@daedalus01:~/MPICH2/mpich2-1.4-source/src/mpe2/src/graphics/contrib/mandel$ mpic++ -c pmandel.c
In file included from pmandel.c:14:0:
pmandel.h:27:8: error: ‘MPE_XGraph’ does not name a type
pmandel.h:35:3: error: ‘MPE_Color’ does not name a type
pmandel.c:27:1: error: ‘MPE_XGraph’ does not name a type
pmandel.c:29:28: error: variable or field ‘DrawImage’ declared void
pmandel.c:29:28: error: ‘MPE_XGraph’ was not declared in this scope
pmandel.c:29:49: error: expected primary-expression before ‘*’ token
pmandel.c:29:50: error: expected primary-expression before ‘,’ token
pmandel.c:29:58: error: expected primary-expression before ‘*’ token
pmandel.c:29:60: error: expected primary-expression before ‘)’ token
pmandel.c:30:28: error: variable or field ‘ProcessArgsFromFile’ declared void
pmandel.c:30:28: error: ‘MPE_XGraph’ was not declared in this scope
pmandel.c:30:49: error: expected primary-expression before ‘*’ token
pmandel.c:30:50: error: expected primary-expression before ‘,’ token
pmandel.c:30:58: error: expected primary-expression before ‘*’ token
pmandel.c:30:59: error: expected primary-expression before ‘)’ token
pmandel.c:31:28: error: ‘MPE_XGraph’ was not declared in this scope
pmandel.c:31:46: error: expected primary-expression before ‘*’ token
pmandel.c:31:47: error: expected primary-expression before ‘)’ token
pmandel.c:31:47: error: initializer expression list treated as compound expression
pmandel.c:45:15: error: variable or field ‘UpdateDisplay’ declared void
pmandel.c:45:15: error: ‘MPE_XGraph’ was not declared in this scope
pmandel.c:45:33: error: ‘MPE_XGraph’ was not declared in this scope
pmandel.c:45:64: error: expected primary-expression before ‘*’ token
pmandel.c:45:65: error: ‘flags’ was not declared in this scope
它看起来像我的标准编译错误。但是为什么MPICH2会被错误传播的文件发布?我确定我做错了什么,但我无法弄清楚如何运行这个测试。任何帮助将不胜感激。
答案 0 :(得分:0)
如果您将MPICH2的副本配置为--enable-mpe
(或者更有可能,没有--disable-mpe
),则Makefile
中应该有src/mpe2/src/graphics/contrib/mandel
。尝试从该目录运行make
,看看是否会为您构建pmandel
。
尽管如此,当我运行该程序时,它最初工作,然后当我尝试通过拖动新框放大时进行segfaulted。因人而异。正如评论中提到的awoodland,这是贡献代码,所以MPICH2团队没有写它。 README中列出的作者似乎已从Argonne转移,因此您不太可能得到他的任何支持。
答案 1 :(得分:0)
由于配置问题,可能您的MPE标头为空。试试这个:
$ cat <YOUR MPICH DIRECTORY>/include/mpe.h
而且:
$ cat <YOUR MPICH DIRECTORY>/include/mpe_graphics.h
如果您看到任何警告消息,则应考虑再次从source进行编译和安装。