[mephi-hpc] openmp gfortran

anikeev anikeev at ut.mephi.ru
Fri Nov 18 14:01:56 MSK 2022


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

-- 
С уважением,
ведущий инженер отдела 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






More information about the hpc mailing list