LINUX.ORG.RU

не работает openMP


0

0

Написал простенькую програмку с распараллеливанием
собрал откомпилил,
но распараллеливания нет.
Программка выглядит так:
--------------------------------
#include <iostream>
#include <omp.h>
int main(int argc, char* argv[])
{
#pragma omp parallel num_threads(4)
{
std::cout << «процесс №» << omp_get_thread_num() << " Hello World!!!\n";
}
return 0;
}
-------------------------------
Makefile:
-------------------------------

CC = g++-4.3
CXXFLAGS = -fopenmp

MPI_test : main.o
$(CC) $(CXXFLAGS) -o MPI_test main.o

main.o: main.cpp
$(CC) -c main.cpp
-------------------------------
Программа компилируется без ошибок (естественно) но выводит одно
сообщение только от главного процесса:
-------------------------------
процесс №0 Hello World!!!
-------------------------------
Использую Kubuntu 9.04 и gcc 4.3.3

Судя по описаниям работы с openMP выложенным в интернете моя программа
должна выдать результат типа:
-------------------------------
процесс №0 Hello World!!!
процесс №1 Hello World!!!
процесс №2 Hello World!!!
процесс №3 Hello World!!!
-------------------------------
ну или наподобие того (может в другом порядке может вперемешку).
Подскажите почему не происходит распараллеливание?

Ты передаешь флаг -fopenmp во время компоновки, а надо во время компиляции. Поправь в Makefile

$(CC) -c main.cpp

на

$(CXX) $(CXXFLAGS) -c main.cpp

P. S. CC — это C Compiler, компилятор C++ традиционно называют CXX

linuxfan
()

>процесс №процесс №01 Hello World!!!

Hello World!!!

процесс №2 Hello World!!!

процесс №3 Hello World!!!

УМВР

Elverion
()

Проблема в Makefile:

$make
g++-4.3 -c main.cpp <----- вот тут тебе собирается объектник без поддержки openmp
g++-4.3 -fopenmp -o MPI_test main.o

tim239 ★★
()

Смущают еще слова «MPI» и «процесс». В OpenMP одно адресное пространство, там потоки.

tim239 ★★
()
Ответ на: комментарий от tim239

это я просто курочил тестовый мэйкфайл который писал для boost MPI

minipooh
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.