使用 Mandelbrot 集测试 Linux 集群时出现问题
我有一个运行 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 发布时会带有一个充满错误的文件呢?我确信我做错了什么,但我只是不知道如何运行这个测试。任何帮助将不胜感激。
I have a six-node cluster running Ubuntu 11.04 and MPICH2 1.4. I'm trying to test the graphics using the Mandelbrot set. The pmandel executable that is supposedly found in one of the MPICH2 subdirectories is supposed to render the Mandelbrot fractal on the screen using all the nodes in the cluster, and all the directions I've found so far tell me to "use the pmandel exec" for this test. There is no exec - there is only pmandel.c, pmandel.h, and pmandel.pd. I thought I should compile pmandel.c to create the exec, but I get the following errors when I try:
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
It just looks like standard compilation errors to me. But why would MPICH2 be released with an error-ridden file? I'm sure I'm doing something wrong, but I just can't figure out how to run this test. Any help would be greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可能由于配置问题,您的 MPE 标头为空。试试这个:
还有这个:
如果您看到任何警告消息,您应该考虑从 来源。
Maybe your MPE header is empty due to configuration issues. Try this:
And this:
If you see any warning message, you should consider compiling and installing it again from source.
如果您使用
--enable-mpe
配置 MPICH2 副本(或者更有可能,不使用--disable-mpe
),那么应该有一个Makefile
在src/mpe2/src/graphics/contrib/mandel
中。尝试从该目录运行make
并查看是否会为您构建pmandel
。话虽如此,当我运行该程序时,它最初可以工作,然后当我尝试通过拖动新框来放大时出现段错误。 YMMV。正如 awoodland 在评论中提到的,这是贡献代码,因此 MPICH2 团队没有编写它。自述文件中列出的作者似乎已从阿贡离职,因此您不太可能从他那里获得任何支持。
If you configured your copy of MPICH2 with
--enable-mpe
(or, more likely, without--disable-mpe
), then there should be aMakefile
insrc/mpe2/src/graphics/contrib/mandel
. Try runningmake
from that directory and see if that will buildpmandel
for you.With all that said, when I ran the program it worked initially and then segfaulted when I attempted to zoom in by dragging a new box. YMMV. As awoodland mentioned in the comments, this is contrib code so the MPICH2 team didn't write it. The author listed in the README appears to have moved on from Argonne, so you are unlikely to receive any support from him.