Компиляция с mpicc (MPICH2) и pthread_barrier (-lpthread) - PullRequest
2 голосов
/ 03 июля 2010

У меня есть работающая реализация подпрограммы 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 соответствует тому, что я написал выше.

[Edit] Я запускаю это на Ubuntu 9.10 со следующим компилятором gcc / mpicc: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1. [/ Edit]

Кто-нибудь знает, что может быть не так и как я могу заставить его скомпилироваться?

Ура!

Ответы [ 2 ]

1 голос
/ 03 июля 2010

Это означает, что тип pthread_barrier_t не находится в области видимости. Вы #include 'd pthread.h?

1 голос
/ 03 июля 2010

pthread_barrier_t является частью опции ADVANCED REALTIME THREAD, поэтому она может быть недоступна в вашей системе.Кстати, если вы задаете такой конкретный вопрос, вы всегда должны упоминать ОС, номер версии и тому подобное.

...