2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Проблема запуска многопоточного приложения на двухядернике
Сообщение08.04.2008, 11:40 
Проблема такая: перешел я с Builder 5 на Builder 6. Зачем - отдельный вопрос, как говорится - все работало - не трогай, а я тронул - ну и получил несколько приколов.

Никак не могу отловить такой глюк: после пересборки проекта под Builder 6, выполняющегося в 2 потока, активно юзающего com-port и компонент TImage, и многократном запуске его (проекта) на компьютере на базе Intel Pentium M, проблем не было. Ну, думаю, все хорошо - засад не ожидал.

Запуски же на компьетере с Core2Duo приводят к вылетам программы в случайном месте после 1 сек... 10 мин работы!

Пробовал привязывать приложение строго к одному ядру - не помогает.

Глюки стабильно не проявлялись на одноядерном процессоре, и стабильно проявляются на многоядерном.

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

 
 
 
 
Сообщение08.04.2008, 12:10 
Может быть у потоков есть общие структуры данных к которым они могут обращаются одновременно и отсутствуют методы синхронизации доступа к ним?

 
 
 
 
Сообщение08.04.2008, 14:46 
Все возможно, буду искать, спасибо.

 
 
 
 
Сообщение09.04.2008, 08:27 
Аватара пользователя
:evil:
Не наблюдал (я и процессоров то многоядерных пока не видел).

Не обидитесь, если выскажу несколько общих соображений?

1) То, что Вы привязали приложение к одному ядру, не связывает ось: в частности, ядро может продолжать фурычить, а драйвера — обрабатывать прерывания параллельно с приложением.

2) Из Вашего сообщения не ясно, были ли те же проблемы на многоядерном процессоре в builder'е 5.

3) Одна из особенностей многоядерного исполнения — это соревнования и блокировки, остававшиеся незамеченными при одном ядре. Я бы это исключил (так же как и исправляемую без синхронизации память), поскольку при связывании на одном ядре всё по-прежнему плохо.

4) Ещё один источник проблем — это изменение последовательности событий (сообщений) и изменение кванта таймера в многоядерном случае. Если программа не выписана очень аккуратно (включая библиотеку builder'а), то проблемы очень даже возможны.

 
 
 
 
Сообщение10.04.2008, 15:44 
незваный гость писал(а):
Не обидитесь, если выскажу несколько общих соображений?

Конечно нет!

незваный гость писал(а):
Из Вашего сообщения не ясно, были ли те же проблемы на многоядерном процессоре в builder'е 5.

Хех... я допустил ошибку: изменил две вещи сразу... Дело в том, что старый комп вышел из строя, а на новом я сразу поставил Builder 6 (давно собирался). Однако, взяв у коллеги комп на базе старенького Pentium M (мой старый процессор тоже был из этого семейства), и запустив на нем бинарник (без перекомпиляции), все работало стабильно часами.

незваный гость писал(а):
Ещё один источник проблем — это изменение последовательности событий (сообщений) и изменение кванта таймера в многоядерном случае. Если программа не выписана очень аккуратно (включая библиотеку builder'а), то проблемы очень даже возможны.

Это здравое предположение...

В общем, я пока ковыряюсь в программе, благо сам ее писал полностью, и имею доступ ко всему коду, кроме, конечно, библиотечных функций. Ни с того ни с сего сбои стали происходить значительно реже (работает минуты и даже по пол часа)...

Если найду, в чем была зачада - обязательно напишу.

Меня удивляет такое соображение: ни в одной сторонней программе я не встречал (и даже не слышал никогда) никаких проблем в связи с переходом на многоядерность. И тут хоп - в своей собственной четко проявился подобный глюк...

Offtop:
незваный гость писал(а):
Не наблюдал (я и процессоров то многоядерных пока не видел).

Вы знаете, Core2Duo действительно очень быстрые процессоры. Настолько, что я прошлым летом заморочился, прочитал все по разгону, купил Quad (он тогда удачно подешевел до 266$), и собрал дома конфетку 4 ядра по 3,5 Ггц. Мегадоволен остался. В общем, могу только порекомендовать это семейство процессоров Intel, оно вышло действительно удачным.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group