<div dir="ltr">Спасибо, Артём, использую Ваш скрипт, но получаю теперь только <div>Hello from process: 0<div><br></div><div>Директория </div><div>/mnt/pool/5/phkorneev/ANRO/hello/</div><div><br></div><div>Вероятно, я что-то неправильно компилирую, потому что с C++ всё работает (/mnt/pool/5/phkorneev/ANRO/hello_c).</div><div>Не могли бы Вы посмотреть?</div><div><br></div><div>Спасибо!</div><div>с уважением,</div><div>фк <br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le ven. 18 nov. 2022 à 14:02, anikeev <<a href="mailto:anikeev@ut.mephi.ru">anikeev@ut.mephi.ru</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">mpOn Fri, 2022-11-18 at 13:02 +0300, Philipp Korneev wrote:<br>
> Артём, спасибо за ответ,<br>
> мой скрипт task_hello выглядит так:<br>
> > #!/bin/bash<br>
> > #SBATCH --job-name=OMP_hello<br>
> > #SBATCH --output=slurm.out<br>
> > #SBATCH --error=slurm.err<br>
> > #SBATCH --nodes=1<br>
> > #SBATCH --ntasks-per-node=4<br>
> > export OMP_NUM_THREADS=4<br>
> > srun --mpi=pmi2 ./hello<br>
> > <br>
> <br>
> Скажите пожалуйста, в каком месте и каким образом можно по-другому<br>
> выполнить export OMP_NUM_THREADS=4 внутри скрипта task_hello?<br>
> Спасибо<br>
> С уважением,<br>
> фк<br>
<br>
В Вашем оригинальном письме не был указан путь до файла. В таком файле<br>
действительно расставляются переменные внутри. Для него не нужно<br>
выполнять export пред sbatch на управляющем узле.<br>
<br>
В этом скрипте другая проблема, котора тоже есть в руководстве. Утилита<br>
srun (mpirun, mpiexec) и переменные tasks... (--ntasks-per-node, etc.)<br>
нужны для MPI, не для OpenMP. Скрипт для задачи, использующей только<br>
OpenMP, должен быть таким:<br>
<br>
#!/bin/bash<br>
#SBATCH --job-name=OMP_hello<br>
#SBATCH --output=slurm.out<br>
#SBATCH --error=slurm.err<br>
#SBATCH --nodes=1<br>
#SBATCH --ntasks-per-node=1<br>
#SBATCH --cpus-per-task=4<br>
export OMP_NUM_THREADS=4<br>
./hello<br>
<br>
Т.е. в оригинальном скрипте Вы запустили 4 экземпляра ./a.out, но<br>
зарезервировали для каждого из них только по одному потоку.<br>
<br>
P.S. Если у Вас еще есть вопросы, укажите, пожалуйста, в какой<br>
диретории Вы работаете. Трудно давать советы по файлам, не видя их<br>
содержание.<br>
<br>
P.P.S Чтобы не случайно не задать разные значения в --cpus-per-task и<br>
OMP_NUM_THREAD можно использовать прием, предложенный в руководстве<br>
пользователя:<br>
<br>
...<br>
#SBATCH --cpus-per-task=4<br>
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK<br>
<br>
Дедупликация всегда желательна - и для экономии врмемени, и для<br>
избежания ошибок.<br>
<br>
> Le ven. 18 nov. 2022 à 12:05, anikeev <<a href="mailto:anikeev@ut.mephi.ru" target="_blank">anikeev@ut.mephi.ru</a>> a écrit :<br>
> > On Fri, 2022-11-18 at 11:55 +0300, Philipp Korneev wrote:<br>
> > > Добрый день, Артём, подскажите пожалуйста, что я делаю<br>
> > неправильно<br>
> > > (на cherenkov). Файлы внизу.<br>
> > <br>
> > Здравствуйте!<br>
> > <br>
> > > Хочу скомпилировать и запустить с OpenMP программу на фортране.<br>
> > > Делаю:<br>
> > > 1. $ export OMP_NUM_THREADS=4<br>
> > > 2. $ gfortran hello.f -o hello -fopenmp<br>
> > > 3. $ sbatch task_hello<br>
> > > <br>
> > > получаю<br>
> > > Hello from process: 0<br>
> > > Hello from process: 0<br>
> > > Hello from process: 0<br>
> > > Hello from process: 0<br>
> > > <br>
> > > хотя ожидал 0,1,2,3.<br>
> > <br>
> > Экземпляр интерпретатора командной строки bash, в котором Вы<br>
> > работаете<br>
> > на головном узле, и экземпляр bash, который Вы запускаете<br>
> > (#!/bin/bash)<br>
> > внутри скрипта task_hello на вычислительно узле - это разные<br>
> > процессы,<br>
> > у них разные переменные окруженися. Вам нужно выполнять export<br>
> > OMP_NUM_THREADS=4 внутри скрипта task_hello. Эта особенность<br>
> > описана в<br>
> > руководстве пользователя.<br>
> > <br>
> > > Спасибо большое!<br>
> > > с уважением,<br>
> > > фк<br>
> > > ___________________________________<br>
> > > Файл task_hello:<br>
> > > > #!/bin/bash<br>
> > > > #SBATCH --job-name=OMP_hello<br>
> > > > #SBATCH --output=slurm.out<br>
> > > > #SBATCH --error=slurm.err<br>
> > > > #SBATCH --nodes=1<br>
> > > > #SBATCH --ntasks-per-node=4<br>
> > > > <br>
> > > > <br>
> > > > export OMP_NUM_THREADS=4<br>
> > > > srun --mpi=pmi2 ./hello<br>
> > > > <br>
> > > <br>
> > > <br>
> > > Файл hello.f:<br>
> > > > PROGRAM Parallel_Hello_World<br>
> > > > USE OMP_LIB<br>
> > > > !$OMP PARALLEL<br>
> > > > PRINT *, 'Hello from process: ', OMP_GET_THREAD_NUM()<br>
> > > > !$OMP END PARALLEL<br>
> > > > END<br>
> > > > <br>
> > > <br>
> > > <br>
> > > _______________________________________________<br>
> > > hpc mailing list<br>
> > > <a href="mailto:hpc@lists.mephi.ru" target="_blank">hpc@lists.mephi.ru</a><br>
> > > <a href="https://lists.mephi.ru/listinfo/hpc" rel="noreferrer" target="_blank">https://lists.mephi.ru/listinfo/hpc</a><br>
> > <br>
> > _______________________________________________<br>
> > hpc mailing list<br>
> > <a href="mailto:hpc@lists.mephi.ru" target="_blank">hpc@lists.mephi.ru</a><br>
> > <a href="https://lists.mephi.ru/listinfo/hpc" rel="noreferrer" target="_blank">https://lists.mephi.ru/listinfo/hpc</a><br>
<br>
-- <br>
С уважением,<br>
ведущий инженер отдела UNIX-технологий НИЯУ МИФИ,<br>
к.ф.-м.н. Аникеев Артем.<br>
email: <a href="mailto:aaanikeyev@mephi.ru" target="_blank">aaanikeyev@mephi.ru</a>, <a href="mailto:anikeev@ut.mephi.ru" target="_blank">anikeev@ut.mephi.ru</a><br>
<br>
Best regards,<br>
MEPhI UNIX-technology department lead engineer,<br>
Artem Anikeev, Ph.D.<br>
e-mail: <a href="mailto:aaanikeyev@mephi.ru" target="_blank">aaanikeyev@mephi.ru</a>, <a href="mailto:anikeev@ut.mephi.ru" target="_blank">anikeev@ut.mephi.ru</a><br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
hpc mailing list<br>
<a href="mailto:hpc@lists.mephi.ru" target="_blank">hpc@lists.mephi.ru</a><br>
<a href="https://lists.mephi.ru/listinfo/hpc" rel="noreferrer" target="_blank">https://lists.mephi.ru/listinfo/hpc</a><br>
</blockquote></div>