[mephi-hpc] openmp gfortran

Philipp Korneev korneev at theor.mephi.ru
Fri Nov 18 17:44:06 MSK 2022


Спасибо большое Артём, действительно, это я недоглядел.
с уважением,
фк

Le ven. 18 nov. 2022 à 16:41, anikeev <anikeev at ut.mephi.ru> a écrit :

> On Fri, 2022-11-18 at 15:45 +0300, Philipp Korneev wrote:
> > Спасибо, Артём, использую Ваш скрипт, но получаю теперь только
> > Hello from process:            0
> >
> > Директория
> > /mnt/pool/5/phkorneev/ANRO/hello/
> >
> > Вероятно, я что-то неправильно компилирую, потому что с C++ всё
> > работает (/mnt/pool/5/phkorneev/ANRO/hello_c).
> > Не могли бы Вы посмотреть?
>
> Проблема в исходном коде - в Fortran нельзя использовать пробелы перед
> прагмами:
>
> phkorneev at master.cherenkov /mnt/pool/5/phkorneev/ANRO/hello $ cat new.f
>         PROGRAM Parallel_Hello_World
>
>         INTEGER OMP_GET_THREAD_NUM
>
> !$OMP PARALLEL
>
>             PRINT *, 'Hello from process: ', OMP_GET_THREAD_NUM()
>
> !$OMP END PARALLEL
>
>         END
> phkorneev at master.cherenkov /mnt/pool/5/phkorneev/ANRO/hello $ gfortran
> new.f -fopenmp
> phkorneev at master.cherenkov /mnt/pool/5/phkorneev/ANRO/hello $
> OMP_NUM_THREADS=4 ./a.out
>  Hello from process:            0
>  Hello from process:            3
>  Hello from process:            2
>  Hello from process:            1
>
> > Спасибо!
> > с уважением,
> > фк
> >
> >
> > Le ven. 18 nov. 2022 à 14:02, anikeev <anikeev at ut.mephi.ru> a écrit :
> > > mpOn Fri, 2022-11-18 at 13:02 +0300, Philipp Korneev wrote:
> > > > Артём, спасибо за ответ,
> > > > мой скрипт task_hello выглядит так:
> > > > > #!/bin/bash
> > > > > #SBATCH --job-name=OMP_hello
> > > > > #SBATCH --output=slurm.out
> > > > > #SBATCH --error=slurm.err
> > > > > #SBATCH --nodes=1
> > > > > #SBATCH --ntasks-per-node=4
> > > > >  export OMP_NUM_THREADS=4
> > > > >  srun --mpi=pmi2 ./hello
> > > > >
> > > >
> > > > Скажите пожалуйста, в каком месте и каким образом можно по-
> > > другому
> > > > выполнить export OMP_NUM_THREADS=4 внутри скрипта task_hello?
> > > > Спасибо
> > > > С уважением,
> > > > фк
> > >
> > > В Вашем оригинальном письме не был указан путь до файла. В таком
> > > файле
> > > действительно расставляются переменные внутри. Для него не нужно
> > > выполнять export пред sbatch на управляющем узле.
> > >
> > > В этом скрипте другая проблема, котора тоже есть в руководстве.
> > > Утилита
> > > srun (mpirun, mpiexec) и переменные tasks... (--ntasks-per-node,
> > > etc.)
> > > нужны для MPI, не для OpenMP. Скрипт для задачи, использующей
> > > только
> > > OpenMP, должен быть таким:
> > >
> > > #!/bin/bash
> > > #SBATCH --job-name=OMP_hello
> > > #SBATCH --output=slurm.out
> > > #SBATCH --error=slurm.err
> > > #SBATCH --nodes=1
> > > #SBATCH --ntasks-per-node=1
> > > #SBATCH --cpus-per-task=4
> > > export OMP_NUM_THREADS=4
> > > ./hello
> > >
> > > Т.е. в оригинальном скрипте Вы запустили 4 экземпляра  ./a.out, но
> > > зарезервировали для каждого из них только по одному потоку.
> > >
> > > P.S. Если у Вас еще есть вопросы, укажите, пожалуйста, в какой
> > > диретории Вы работаете. Трудно давать советы по файлам, не видя их
> > > содержание.
> > >
> > > P.P.S Чтобы не случайно не задать разные значения в --cpus-per-task
> > > и
> > > OMP_NUM_THREAD можно использовать прием, предложенный в руководстве
> > > пользователя:
> > >
> > > ...
> > > #SBATCH --cpus-per-task=4
> > > export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
> > >
> > > Дедупликация всегда желательна - и для экономии врмемени, и для
> > > избежания ошибок.
> > >
> > > > Le ven. 18 nov. 2022 à 12:05, anikeev <anikeev at ut.mephi.ru> a
> > > écrit :
> > > > > On Fri, 2022-11-18 at 11:55 +0300, Philipp Korneev wrote:
> > > > > > Добрый день, Артём, подскажите пожалуйста, что я делаю
> > > > > неправильно
> > > > > > (на cherenkov). Файлы внизу.
> > > > >
> > > > > Здравствуйте!
> > > > >
> > > > > > Хочу скомпилировать и запустить с OpenMP программу на
> > > фортране.
> > > > > > Делаю:
> > > > > > 1. $ export OMP_NUM_THREADS=4
> > > > > > 2. $ gfortran hello.f -o hello -fopenmp
> > > > > > 3. $ sbatch task_hello
> > > > > >
> > > > > > получаю
> > > > > >  Hello from process:            0
> > > > > >  Hello from process:            0
> > > > > >  Hello from process:            0
> > > > > >  Hello from process:            0
> > > > > >
> > > > > > хотя ожидал 0,1,2,3.
> > > > >
> > > > > Экземпляр интерпретатора командной строки bash, в котором Вы
> > > > > работаете
> > > > > на головном узле, и экземпляр bash, который Вы запускаете
> > > > > (#!/bin/bash)
> > > > > внутри скрипта task_hello на вычислительно узле - это разные
> > > > > процессы,
> > > > > у них разные переменные окруженися. Вам нужно выполнять export
> > > > > OMP_NUM_THREADS=4 внутри скрипта task_hello. Эта особенность
> > > > > описана в
> > > > > руководстве пользователя.
> > > > >
> > > > > > Спасибо большое!
> > > > > > с уважением,
> > > > > > фк
> > > > > > ___________________________________
> > > > > > Файл task_hello:
> > > > > > > #!/bin/bash
> > > > > > > #SBATCH --job-name=OMP_hello
> > > > > > > #SBATCH --output=slurm.out
> > > > > > > #SBATCH --error=slurm.err
> > > > > > > #SBATCH --nodes=1
> > > > > > > #SBATCH --ntasks-per-node=4
> > > > > > >
> > > > > > >
> > > > > > > export OMP_NUM_THREADS=4
> > > > > > > srun --mpi=pmi2 ./hello
> > > > > > >
> > > > > >
> > > > > >
> > > > > > Файл hello.f:
> > > > > > >       PROGRAM Parallel_Hello_World
> > > > > > >       USE OMP_LIB
> > > > > > >       !$OMP PARALLEL
> > > > > > >       PRINT *, 'Hello from process: ', OMP_GET_THREAD_NUM()
> > > > > > >       !$OMP END PARALLEL
> > > > > > >       END
> > > > > > >
> > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > hpc mailing list
> > > > > > hpc at lists.mephi.ru
> > > > > > https://lists.mephi.ru/listinfo/hpc
> > > > >
> > > > > _______________________________________________
> > > > > hpc mailing list
> > > > > hpc at lists.mephi.ru
> > > > > https://lists.mephi.ru/listinfo/hpc
> > >
> > > _______________________________________________
> > > hpc mailing list
> > > hpc at lists.mephi.ru
> > > https://lists.mephi.ru/listinfo/hpc
>
> --
> С уважением,
> ведущий инженер отдела UNIX-технологий НИЯУ МИФИ,
> к.ф.-м.н. Аникеев Артем.
> email: aaanikeyev at mephi.ru, anikeev at ut.mephi.ru
>
> Best regards,
> MEPhI UNIX-technology department lead engineer,
> Artem Anikeev, Ph.D.
> e-mail: aaanikeyev at mephi.ru, anikeev at ut.mephi.ru
>
>
>
>
> _______________________________________________
> hpc mailing list
> hpc at lists.mephi.ru
> https://lists.mephi.ru/listinfo/hpc
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mephi.ru/pipermail/hpc/attachments/20221118/84a21db7/attachment-0001.htm>


More information about the hpc mailing list