PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 21 окт 17 13:31

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: 31 май 12 16:14 
Не в сети

Зарегистрирован: 31 май 12 16:09
Сообщения: 2
Уважаемые коллеги! Помогите со следующим вопросом....

Долго и упорно переписывал большой проект с Delphi на С++
(использую QT, пока с компилятором MSVC++ под 64 бита), переписал, отладил...
Пришло время распараллеливания... Решил использовать OpenMP,
чтобы сильно не "курочить" программу - в ней десятки программных модулей, сотни глобальных переменных - писали разные люди (математики), собирали код лет 15...

И вот столкнулся со следующим - при распараллеливании самого "напряжённого" участка потребовалось некоторые глобальные переменные сделать как threadprivate, они через кучу ссылок (через разные модули), в h-нике объявлены как extern. Не заработало - начались гонки данных.

Так вот - в доках нарыл, что директиву threadprivate необходимо применять в каждом юните, где используются оные глобальные перменные, и получается, что компилятор ругается, если эта директива применяется в тех юнитах, в которых подключен h-ник, в котором объявлены (extern-ном) эти глобальные переменные.

Как быть?... Может, кто сталкивался с таким?...
Сразу скажу, что GCC подобный баг был исправлен в 2005 г., а вот MSVC.... (((


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

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


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

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


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

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