Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
зависание задачи (Intel Fortran)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
Semyon
n00b
n00b


Joined: 27 Mar 2005
Posts: 14

PostPosted: Thu Jan 29, 2009 7:34 pm    Post subject: зависание задачи (Intel Fortran) Reply with quote

Здравствуйте!

Столкнулись с такой проблемой. Есть некоторая программа, которая занимается численным счетом.
Она намертво вешает компьютер в некоторый момент. Намертво - черный экран, никакой реакции клавиатуру,
мышку, компьютер отключается от сети, в логах никакого намека на зависание.

Система
$ 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
View user's profile Send private message
ArtSh
Apprentice
Apprentice


Joined: 05 Aug 2006
Posts: 178
Location: Казань, Россия

PostPosted: Thu Jan 29, 2009 9:09 pm    Post subject: Reply with quote

Использование высоких степеней оптимизации в численных расчётах чревато ошибками ;) поэтому лучше всего оптимизацию лучше всего выполнять в ручную, причём на уровне алгоритма, а оптимизацию на уровне компилятора выключить. Это общее замечание.

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

Выяснить то место на котором происходит зависание очень проблематично, но можно привлечь профилирование и после довольно долгого зависания выяснить какая функция выполнялась дольше всего. Самое непонятное, что означает что компьютер зависает на мертво? Если он не реагирует на магические последовательности, то значит ошибка произошла на уровне ядра (или оборудования). Проверить оборудование можно с помощью специальных тестов (самый простой из них — memtest на три-четыре часа). Другие варианты неработоспособности — недостаточное охлаждение, или переключение процессора в энергосберегающий режим. Ядро при своей смерти обычно оставляет в консоли некоторые сообщения, да и лампочки на клавиатуре моргают...

P.S. возможно для наилучшего счёта Вам нужно подправить конфиг ядра и некоторых служб (например файловые системы)...
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
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