<HTML><BODY>Здравствуйте!<br>Спасибо большое за ответ!<br>Файлы .o и .e для STDOUT и STDERR, cгенерированные менеджером ресурсов Torque, для запусков тестовой задачи pool/4/mishutikova/W_444/W444.fdf с nodes=1:ppn=32 и OMP_NUM_THREADS=4 и OMP_NUM_THREADS=32, остались в pool/4/mishutikova<br>Сейчас запустила задачу с OMP_NUM_THREADS=1.<br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
Среда, 6 февраля 2019, 12:58 +03:00 от anikeev <anikeev@ut.mephi.ru>:<br>
<br>
<div id="">
<div class="js-helper js-readmsg-msg">
<style type="text/css"></style>
<div>
<base target="_self" href="https://e.mail.ru/">
<div id="style_15494470950000000938_BODY">On Wed, 2019-02-06 at 11:35 +0300, Мария Шутикова wrote:<br>
> Здравствуйте!<br>
Добрый день!<br>
<br>
> Подскажите, пожалуйста!<br>
> Я запускаю задачу с помощью скрипта, аналогичного тому, который Вы<br>
> мне подсказали, а именно:<br>
> <br>
> #!/bin/sh<br>
> <br>
> #PBS -l nodes=1:ppn=32,walltime=4320:00:00<br>
> <br>
> #print the time and date<br>
> date<br>
> <br>
> #run simulation<br>
> cd /mnt/pool/4/mishutikova/W_444<br>
> OMP_NUM_THREADS=8 /mnt/pool/4/mishutikova/siesta-4.1-b4/Obj/siesta <<br>
> W444.fdf | tee W444.out<br>
> <br>
> #print the time and date again<br>
> date<br>
> <br>
> Основная проблема в том, что задача считается где-то час, а потом<br>
> замирает, и все. В выходном файле от нее больше ничего не появляется,<br>
> при этом в файле ошибок ничего нет. А когда заходишь посмотреть<br>
> статус задачи, выясняется, что задачи уже нет, хотя время еще не<br>
> прошло. Со значениями nodes=1:ppn=1 и OMP_NUM_THREADS=1 такого вроде<br>
> бы пока не происходит...<br>
<br>
Для начала нужно посмотреть выходные файлы задачи. Имеются ввиду файлы<br>
.o и .e для STDOUT и STDERR, генерируемые менеджером ресурсов Torque, а<br>
не .out, генерируемый Вашей программой. У Вас остались эти файлы? Где<br>
можно их посмотреть (какая директория на кластере)? Прикладывать к<br>
письму их не надо - они могут быть большими.<br>
<br>
Параметр OMP_NUM_THREADS не имеет смысла указывать больше параметра<br>
ppn. Параметр ppn указывает, сколько потоков Вашей задаче будет<br>
выделено на узле. OMP_NUM_THREADS указывает, сколько из этих потоков Вы<br>
будете на самом деле использовать. Для OpenMP-задач параметр nodes<br>
всегда 1. Если Вы стараетесь подобрать максимальное допустимое число<br>
потоков не вызывающее переполнение памяти, всегда используйте ppn=32,<br>
чтобы получать полный вычислительный узел. Подбирайте параметр<br>
OMP_NUM_THREADS.<br>
<br>
> Читаю литературу об OpenMP и пробую разобраться. Но самостоятельно<br>
> понять что происходит и в какую сторону двигаться, чтобы подобрать<br>
> оптимальные ресурсы для вычислений что-то пока не вышло... В самом<br>
> входном файле к SIESTA ошибок нет. Я, конечно, буду разбираться<br>
> дальше, но, может быть, Вы подскажете что-то, ведь у Вас больше<br>
> опыта? В выходном файле выдает такие строчки:<br>
<br>
Вот здесь хорошие лекции по OpenMP:<br>
<br>
<a href="https://computing.llnl.gov/tutorials/openMP/" target="_blank">https://computing.llnl.gov/tutorials/openMP/</a><br>
<br>
Если речь идет об OpenMP, то строится диаграмма прироста<br>
производительности от количества потоков. Нужно подготовить тестовую<br>
задачу, запустить её с использованием (OMP_NUM_THREADS) 1, 2, 4, 8, 16,<br>
32 ядер и записать время исполнения задачи. Если программе перестаёт<br>
хватать оперативной памяти (ошибка OOM kill в .e файле), то, очевидно,<br>
больше ядер на одном узле использовать нельзя. Для успешных запусков<br>
строиться график времени исполнения от числа ядер. Падение времени<br>
будет медленнее линейной зависимости, то есть параллельные задачи<br>
потребляют больше процессорочасов, но считаются быстрее. Далее,<br>
принимается административное решение об оптимальном количестве потоков<br>
исходя из уравновешивания потерь процессорочасов на синхронизации<br>
параллельных задач и потерь человекочасов на ожидание окончания<br>
расчета. <br>
<br>
Ваша программа не использует MPI, но на всякий случай:<br>
<br>
Для MPI метод аналогичен, кроме того, что там есть два параметра<br>
оптимизации - количество использованных узлов и количество<br>
использованных потоков (MPI) на узле. Для уменьшения количества<br>
тестовых запусков можно шагать через степень: 1, 4, 16.<br>
<br>
Для Hybrid-MPI (MPI+OpenMP) практически всегда правильным решением<br>
будет использование одного MPI потока на узел, так что эта задача тоже<br>
двухпараметрическая: количество узлов и количество OpenMP потоков на<br>
узел.<br>
<br>
Иерархия Hybrid-MPI:<br>
<br>
task -> MPI node0 -> MPI node0 thread0 -> OpenMP thread 0.0.0<br>
-> OpenMP thread 0.0.1<br>
-> MPI node0 thread1 -> OpenMP thread 0.1.0<br>
-> OpenMP thread 0.1.1<br>
-> MPI node1 -> MPI node1 thread0 -> OpenMP thread 1.0.0<br>
-> OpenMP thread 1.0.1<br>
-> MPI node1 thread1 -> OpenMP thread 1.1.0<br>
-> OpenMP thread 1.1.1<br>
<br>
P.S. Пишите, пожалуйста, на официальные почтовые ящики. Для приватной<br>
переписки (письма видят только администраторы) можно писать на hpc-priv<br>
ate@ut.mephi.ru. Для публичной переписки можно писать на <a href="mailto:hpc@lists.ut.m">hpc@lists.ut.m</a><br>
ephi.ru. Письма, отправленные на личную почту могут теряться.<br>
<br>
> Siesta Version : v4.1-b4<br>
> Architecture : unknown<br>
> Compiler version: GNU Fortran (Debian 4.9.2-10+deb8u1) 4.9.2<br>
> Compiler flags : gfortran -O2 -fPIC -ftree-vectorize -fopenmp<br>
> PP flags : -DFC_HAVE_ABORT -DSIESTA__DIAG_2STAGE -DSIESTA__MRRR<br>
> Libraries : libsiestaLAPACK.a libsiestaBLAS.a -fopenmp<br>
> -L/opt/openblas/lib -lopenblas -LL/opt/openblas/lib -lopenblas<br>
> SERIAL version<br>
> * Running in serial mode<br>
> * Running 8 OpenMP threads.<br>
> * Running 8 processes.<br>
> * OpenMP version 201307<br>
> * OpenMP NOT bound (please bind threads!)<br>
> * OpenMP runtime schedule DYNAMIC, chunks 1<br>
> ** OpenMP runtime schedule DYNAMIC, chunks 16<br>
> <br>
> <br>
> Четверг, 15 ноября 2018, 20:15 +03:00 от anikeev <<a href="mailto:anikeev@ut.mephi.ru">anikeev@ut.mephi.ru</a><br>
> >:<br>
> <br>
> On Thu, 2018-11-15 at 14:29 +0300, anikeev wrote:<br>
> > On Tue, 2018-11-13 at 11:28 +0300, anikeev wrote:<br>
> > > On Mon, 2018-11-12 at 18:20 +0300, Мария Шутикова wrote:<br>
> > > > Здравствуйте!<br>
> > > <br>
> > > Добрый день!<br>
> > <br>
> > Здравствуйте!<br>
> > <br>
> > > > Для моей научно-исследовательской деятельности стала необходима<br>
> > > > программа квантово-механических расчетов<br>
> > > > SIESTA. https://launchpad.net/siesta <br>
> > > > Не могли бы Вы установить ее, если это возможно?<br>
> > > <br>
> > > Данная программа отсутствует в репозиториях Debian и Gentoo. Её<br>
> > > нужно<br>
> > > собирать из исходного кода. Попробуйте пока собрать её<br>
> > > самостоятельно.<br>
> > > Я постараюсь посмотреть её при возможности.<br>
> > <br>
> > Я подготовил версию Siesta. Для экономии оперативной памяти, она<br>
> > собрана с поддержкой OpenMP и без поддержки MPI (для использования<br>
> > любого числа ядер одной вычислительной ноды).<br>
> > <br>
> > Программа расположена в директории:<br>
> > <br>
> > /mnt/pool/4/anikeev/siesta-4.1-b4/<br>
> > <br>
> > Тестовая задача расположена в директории:<br>
> > <br>
> > /mnt/pool/4/anikeev/h2o<br>
> > <br>
> > Для использования Вам нужно скопировать программу в свою директорию<br>
> и<br>
> > исправить пути в скрипте запуска.<br>
> > <br>
> > Обратите внимание, что для использования OpenMP не нужно<br>
> пользоваться<br>
> > командой mpirun, но нужно задавать переменную окружения<br>
> > OMP_NUM_THREADS. Пример стартового скрипта:<br>
> > <br>
> > <a href="mailto:anikeev@master.cherenkov">anikeev@master.cherenkov</a> /mnt/pool/4/anikeev/h2o $ cat start.sh <br>
> > #!/bin/sh<br>
> > <br>
> > #PBS -N ExampleJob<br>
> > #PBS -l nodes=1:ppn=32,walltime=4320:00:00<br>
> > <br>
> > #print the time and date<br>
> > date<br>
> > <br>
> > #run simulation<br>
> > cd /mnt/pool/4/anikeev/h2o<br>
> > OMP_NUM_THREADS=32 /mnt/pool/4/anikeev/siesta-4.1-b4/Obj/siesta <<br>
> > h2o.fdf > h2o.out<br>
> > <br>
> > #print the time and date again<br>
> > date<br>
> P.S. Если Вам всё равно не будет хватать оперативной памяти,<br>
> попробуйте<br>
> запрашивать в скрипте PBS весь узел целиком, но запускать программу<br>
> не<br>
> на всех вычислительных ядрах. Например, так:<br>
> <br>
> #!/bin/sh<br>
> <br>
> #PBS -l nodes=1:ppn=32,walltime=4320:00:00<br>
> <br>
> #print the time and date<br>
> date<br>
> <br>
> #run simulation<br>
> cd /mnt/pool/4/anikeev/h2o<br>
> OMP_NUM_THREADS=8 /mnt/pool/4/anikeev/siesta-4.1-b4/Obj/siesta <<br>
> h2o.fdf | tee h2o.out<br>
> <br>
> #print the time and date again<br>
> date<br>
> <br>
> Допустимое количество ядер на ноде предстоит определить<br>
> экспериментальным путём.<br>
> <br>
> > > > _______________________________________________<br>
> > > > hpc mailing list<br>
> > > > <a href="mailto:hpc@lists.mephi.ru">hpc@lists.mephi.ru</a><br>
> > > > <a href="https://lists.mephi.ru/listinfo/hpc" target="_blank">https://lists.mephi.ru/listinfo/hpc</a><br>
> -- <br>
> С уважением,<br>
> инженер отдела Unix-технологий МИФИ,<br>
> Аникеев Артём.<br>
> Тел.: 8<br>
> (495) 788-56-99, доб. 8998<br>
> <br>
> <br>
-- <br>
С уважением,<br>
инженер отдела Unix-технологий МИФИ,<br>
Аникеев Артём.<br>
Тел.: 8<br>
(495) 788-56-99, доб. 8998<br>
</div>
<base target="_self" href="https://e.mail.ru/">
</div>
</div>
</div>
</blockquote>
<br>
<br>-- <br>Мария Шутикова<br></BODY></HTML>