View previous topic :: View next topic |
Author |
Message |
Semyon n00b
Joined: 27 Mar 2005 Posts: 14
|
Posted: Thu Jan 29, 2009 7:34 pm Post subject: зависание задачи (Intel Fortran) |
|
|
Здравствуйте!
Столкнулись с такой проблемой. Есть некоторая программа, которая занимается численным счетом.
Она намертво вешает компьютер в некоторый момент. Намертво - черный экран, никакой реакции клавиатуру,
мышку, компьютер отключается от сети, в логах никакого намека на зависание.
Система
$ uname -a
Linux gray 2.6.28-gentoo-r1 #2 SMP Mon Jan 26 14:38:12 MSK 2009 x86_64 Intel(R) Core(TM)2 Quad CPU Q9450 @ 2.66GHz GenuineIntel GNU/Linux
При этом зависание происходит не всегда. Опишу полную картину. Пользуемся Intel Fortran компилятором
Если использовать ifort 10, то при опциях
FFLAGS = -c -save -zero -fpe0 -no-ftz -check bounds -g -traceback
все считается, но медленно
при опциях (ifort 10)
FFLAGS = -c -save -zero -O3
счет практически сразу вылетает с segmentaion fault
А при использовании ifort 11 и
FFLAGS = -c -save -zero -O3
через пару часов компьютер зависает намертво.
Также компьютер зависает на gfortran'e (через некоторое время)
с опциями
FFLAGS = -c -O2 -fno-automatic -Wall
Посдкажите - отчего такое может быть: проблемы с программой/с железом?
Как можно проверить железо? И как можно определить место (команду) на котором зависает намертво? |
|
Back to top |
|
|
ArtSh Apprentice
Joined: 05 Aug 2006 Posts: 178 Location: Казань, Россия
|
Posted: Thu Jan 29, 2009 9:09 pm Post subject: |
|
|
Использование высоких степеней оптимизации в численных расчётах чревато ошибками поэтому лучше всего оптимизацию лучше всего выполнять в ручную, причём на уровне алгоритма, а оптимизацию на уровне компилятора выключить. Это общее замечание.
Самый хороший метод разобраться что не так — выяснить почему программа вылетает. Скорее всего Вы обнаружили очень тонкую ошибку в программе (например при определённых условиях выход за границы массива, или переполнение переменной или ещё чего-нибудь подобное, или баг компилятора), именно на это указывает некорректное поведение программы при разных уровнях оптимизации. Самый простой шаг, который можно порекомендовать — попробовать больше разных компиляторов (или разные версии).
Выяснить то место на котором происходит зависание очень проблематично, но можно привлечь профилирование и после довольно долгого зависания выяснить какая функция выполнялась дольше всего. Самое непонятное, что означает что компьютер зависает на мертво? Если он не реагирует на магические последовательности, то значит ошибка произошла на уровне ядра (или оборудования). Проверить оборудование можно с помощью специальных тестов (самый простой из них — memtest на три-четыре часа). Другие варианты неработоспособности — недостаточное охлаждение, или переключение процессора в энергосберегающий режим. Ядро при своей смерти обычно оставляет в консоли некоторые сообщения, да и лампочки на клавиатуре моргают...
P.S. возможно для наилучшего счёта Вам нужно подправить конфиг ядра и некоторых служб (например файловые системы)... |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|