2

我有一个 MPI 例程的功能实现,它工作正常。在使 MPI 和共享内存混合的过程中,我使用了 pthreads。这反过来证明了 pthread_barriers 的需要。

但是当我尝试使用 mpicc 编译器编译我的代码时,它会抱怨 pthread_barrier_t 和其他屏障命令。如果我删除这些,并保留其他线程部分,它编译得很好。

这是我插入的用于中断编译的代码行:

pthread_barrier_t* barrier;

对于编译,我使用:

mpicc -lm myprogram.c -o myprogram

编译器返回的错误是:

myprogram.c:34: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token

其中第 34 行对应于我上面写的内容。

[编辑] 我在 Ubuntu 9.10 上运行它,使用以下 gcc/mpicc 编译器:gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1。[/编辑]

有谁知道可能出了什么问题以及如何编译?

干杯!

4

2 回答 2

1

这意味着该pthread_barrier_t类型不在范围内。你有#includepthread.h

于 2010-07-03T10:50:32.820 回答
1

pthread_barrier_t是高级实时线程选项的一部分,因此它可能在您的系统上不可用。顺便说一句,如果你提出这样一个具体的问题,你应该总是提到操作系统、版本号和类似的东西。

于 2010-07-03T07:05:45.447 回答