Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск нескольких копий приложения в цикле(OpenMP) 
:(
    Опции темы
LEXX413
Дата 10.7.2012, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.7.2012

Репутация: нет
Всего: нет



Всем привет. Есть такая проблема. Имеется программа А, в цикле из программы А вызывается другая программа В (в консольном режиме) и уже программа В выполняет обработку файлов, пишет данные в xml файлы и тд. Обработка в программе B  идет не то, что долго, но учитывая то, что цикл состоит из большого числа итераций и имеется многоядерный процессор, который практически всегда простаивает(загруженность очень маленькая) было решено распараллелить цикл с помощью OpenMP. Возникла такая проблема, что при большом числе потоков >4, программа B не пишет логов, ничего не делает, данных на выходе нет. В чем дело не понятно. То ли жесткий диск не успевает(хотя сомневаюсь в этом, смотрел загрузку запись и чтение, есть еще запас), то ли несколько копий программы B сами себя блокируют(вот к этому варианту склоняюсь больше). Что интересно, это то, что на 4 ядерной машине все работает нормально, на 8 ядерной уже ничего не пашет. Копии программы B висят в диспетчере задач, мало едят оперативы и собственно ничего не происходит. Если на 8 ядернйо машине сделать 2 потока, то все тоже работает, при 4 и даже 3 потоках уже не пашет, хотя на 4 ядерной машине работает. 
Я пробовал программу B размножить и для каждого потока указывал свою папку с копией программы B, все-равно, то же самое, файлов на выходе нет, лог пустой.

Вообще никто не сталкивался с запуском нескольких копий одной и той же программы в параллельном режиме? Может это вообще нельзя делать или зависит все от написания программы и зависимости ее самой от своего запуска что ли...

PM MAIL   Вверх
borisbn
Дата 10.7.2012, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(LEXX413 @  10.7.2012,  14:29 Найти цитируемый пост)
Может это вообще нельзя делать

Точно можно. Я делал. Никаких проблем не было. Возможно проблема в том, что программа В (в Вашей же терминологии) использует одинаковые ресурсы - например создаёт сокет или открывает на запись какой-нибудь файл не в своём каталоге, а где-нибудь в Temp...
Кстати, Вы не указали ОС, а это, скорее всего, имеет значение


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
LEXX413
Дата 11.7.2012, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.7.2012

Репутация: нет
Всего: нет



ОС WIN7 и Win server 2003(на сервере работает намного нестабильнее), сейчас удалось вызвать ошибку и отладиться в студии(10). Думаю понял в чем причина данного поведения. Дело в том, что программа B предназначена не только для обработки файлов в консольном режиме, у нее так же есть GUI режим, программа очень большая и когда она разрабатывалась, сделали так, что некоторые вещи в консольном режиме похоже зависят от GUI, создаются объекты окон, кнопок и тп. Собственно отладчик вывалился в деструкторе на удалении этих объектов, прийдется по ходу все переписывать и делать так, чтобы от GUI консоль никак не зависила, а еще лучше весь код консоли из программы B вынести в программу А...

Это сообщение отредактировал(а) LEXX413 - 11.7.2012, 11:08
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0764 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.