PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 19 сен 19 15:49

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: OpenMP и cmake
СообщениеДобавлено: 4 дек 10 14:39 
Не в сети

Зарегистрирован: 4 дек 10 13:59
Сообщения: 1
Здравствуйте. Решил попробывать разпараллелить свой проект. Для конфигурирования используется cmake. Для компиляции gcc и g++ под Ubuntu. В cmake добавил опцию -fopenmp -o mm_openmp. Инклуды в коде есть. Компиляция идет нормально, но при линковке возникают ошибки:
Код:
Linking CXX executable worldserver
../game/libgame.a(World.cpp.o): In function `World::SetInitialWorldSettings()':
/home/wow/Kseniya/src/server/game/World/World.cpp:1798: undefined reference to `omp_set_dynamic'
/home/wow/Kseniya/src/server/game/World/World.cpp:1803: undefined reference to `omp_set_num_threads'
/home/wow/Kseniya/src/server/game/World/World.cpp:1807: undefined reference to `omp_get_thread_num'
../game/libgame.a(BattlegroundWS.cpp.o): In function `BattlegroundWS::StartingEventCloseDoors()':
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:180: undefined reference to `omp_set_dynamic'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:181: undefined reference to `omp_set_num_threads'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:187: undefined reference to `GOMP_parallel_start'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:187: undefined reference to `GOMP_parallel_end'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:196: undefined reference to `GOMP_parallel_start'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:196: undefined reference to `GOMP_parallel_end'
../game/libgame.a(BattlegroundWS.cpp.o): In function `BattlegroundWS::StartingEventOpenDoors()':
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:210: undefined reference to `GOMP_parallel_start'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:210: undefined reference to `GOMP_parallel_end'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:216: undefined reference to `GOMP_parallel_start'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:216: undefined reference to `GOMP_parallel_end'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:227: undefined reference to `GOMP_parallel_start'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:227: undefined reference to `GOMP_parallel_end'
../game/libgame.a(BattlegroundWS.cpp.o): In function `_ZN14BattlegroundWS22StartingEventOpenDoorsEv.omp_fn.0':
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:211: undefined reference to `omp_get_num_threads'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:211: undefined reference to `omp_get_thread_num'
../game/libgame.a(BattlegroundWS.cpp.o): In function `_ZN14BattlegroundWS22StartingEventOpenDoorsEv.omp_fn.1':
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:217: undefined reference to `omp_get_num_threads'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:217: undefined reference to `omp_get_thread_num'
../game/libgame.a(BattlegroundWS.cpp.o): In function `_ZN14BattlegroundWS22StartingEventOpenDoorsEv.omp_fn.2':
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:228: undefined reference to `omp_get_num_threads'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:228: undefined reference to `omp_get_thread_num'
../game/libgame.a(BattlegroundWS.cpp.o): In function `_ZN14BattlegroundWS23StartingEventCloseDoorsEv.omp_fn.3':
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:188: undefined reference to `omp_get_num_threads'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:188: undefined reference to `omp_get_thread_num'
../game/libgame.a(BattlegroundWS.cpp.o): In function `_ZN14BattlegroundWS23StartingEventCloseDoorsEv.omp_fn.4':
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:197: undefined reference to `omp_get_num_threads'
/home/wow/Kseniya/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp:197: undefined reference to `omp_get_thread_num'
collect2: ld returned 1 exit status
make[2]: *** [src/server/worldserver/worldserver] Ошибка 1
make[1]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/all] Ошибка 2
make: *** [all] Ошибка 2


Код:
root@mynet:/home/wow/Kseniya/build# gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



Кусок кода где ошибки:
Код:
void BattlegroundWS::StartingEventOpenDoors()
{
    uint32 i, start, end;
    start = BG_WS_OBJECT_DOOR_A_1;
    end = BG_WS_OBJECT_DOOR_A_4;

    #pragma omp parallel for shared(start, end) private(i)
    for (i = start; i <= end; ++i)
        DoorOpen(i);

    start = BG_WS_OBJECT_DOOR_H_1;
    end = BG_WS_OBJECT_DOOR_H_2;
    #pragma omp parallel for shared(start, end) private(i)
    for (i = BG_WS_OBJECT_DOOR_H_1; i <= BG_WS_OBJECT_DOOR_H_2; ++i)
        DoorOpen(i);

    SpawnBGObject(BG_WS_OBJECT_DOOR_A_5, RESPAWN_ONE_DAY);
    SpawnBGObject(BG_WS_OBJECT_DOOR_A_6, RESPAWN_ONE_DAY);
    SpawnBGObject(BG_WS_OBJECT_DOOR_H_3, RESPAWN_ONE_DAY);
    SpawnBGObject(BG_WS_OBJECT_DOOR_H_4, RESPAWN_ONE_DAY);
   
    start = BG_WS_OBJECT_A_FLAG;
    end = BG_WS_OBJECT_BERSERKBUFF_2;
    #pragma omp parallel for shared(start, end) private(i)
    for (i = start; i <= end; ++i)
        SpawnBGObject(i, RESPAWN_IMMEDIATELY);

    // players joining later are not egible
    StartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, WS_EVENT_START_BATTLE);
}

Код:
    sLog.outString("OpenMP: Starting using OpenMP system.");
    if(getConfig(CONFIG_OPENMP_ISDYNAMIC))
    {
        omp_set_dynamic(1);
        sLog.outString("OpenMP: Using autodetect num threads.");
    }
    else
    {
        omp_set_num_threads(getConfig(CONFIG_OPENMP_THREADS));
        sLog.outString("OpenMP: Using basic num threads.");
    }
   
    sLog.outString("OpenMP: Using %d threads.", omp_get_thread_num());


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenMP и cmake
СообщениеДобавлено: 7 дек 10 20:45 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
sudo apt-get install libgomp1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OpenMP и cmake
СообщениеДобавлено: 30 мар 15 16:21 
Не в сети

Зарегистрирован: 30 мар 15 16:17
Сообщения: 1
С асинхронным программированием, все гораздо ближе к реальности и практичнее. Более того, оно практически используется, правда более известно под термином - событийноуправляемое программирование. Одна из областей его применения - распределенные системы сбора и обработки информации (они же сенсорные сети) - это и сетевые протоколы, и приложения, работающие поверх протоколов. Не суперкомпьютерные вычисления, конечно, но параллелизма хоть отбавляй. Весьма элегантно описывается в терминах конечных автоматов (state machines) в совокупности с диаграммами последовательностей.

_________________
Play Online solitaire Game visit soliaire for more details.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB