On Sat, May 25, 2024 at 9:49 AM Hongyi Zhao <hongyi.z...@gmail.com> wrote:
>
> On Sat, May 25, 2024 at 7:50 AM Hongyi Zhao <hongyi.z...@gmail.com> wrote:
> >
> > On Sat, May 25, 2024 at 12:02 AM Hermann Schwärzler via slurm-users
> > <slurm-users@lists.schedmd.com> wrote:
> > >
> > > Hi Zhao,
> > >
> > > my guess is that in your faster case you are using hyperthreading
> > > whereas in the Slurm case you don't.
> > >
> > > Can you check what performance you get when you add
> > >
> > > #SBATCH --hint=multithread
> > >
> > > to you slurm script?
> >
> > I tried to add the above instructions to the slurm script, and only
> > found that the job will stuck there forever. Here are the results 10
> > minutes after the job was submitted:
> >
> >
> > werner@x13dai-t:~/Public/hpc/servers/benchmark/Cr72_3x3x3K_350eV_10DAV$
> > cat sub.sh.o6
> > #######################################################
> > date                    = 2024年 05月 25日 星期六 07:31:31 CST
> > hostname                = x13dai-t
> > pwd                     =
> > /home/werner/Public/hpc/servers/benchmark/Cr72_3x3x3K_350eV_10DAV
> > sbatch                  = /usr/bin/sbatch
> >
> > WORK_DIR                =
> > SLURM_SUBMIT_DIR        =
> > /home/werner/Public/hpc/servers/benchmark/Cr72_3x3x3K_350eV_10DAV
> > SLURM_JOB_NUM_NODES     = 1
> > SLURM_NTASKS            = 36
> > SLURM_NTASKS_PER_NODE   =
> > SLURM_CPUS_PER_TASK     =
> > SLURM_JOBID             = 6
> > SLURM_JOB_NODELIST      = localhost
> > SLURM_NNODES            = 1
> > SLURMTMPDIR             =
> > #######################################################
> >
> >  running   36 mpi-ranks, on    1 nodes
> >  distrk:  each k-point on   36 cores,    1 groups
> >  distr:  one band on    4 cores,    9 groups
> >  vasp.6.4.3 19Mar24 (build May 17 2024 09:27:19) complex
> >
> >  POSCAR found type information on POSCAR Cr
> >  POSCAR found :  1 types and      72 ions
> >  Reading from existing POTCAR
> >  scaLAPACK will be used
> >  Reading from existing POTCAR
> >  
> > -----------------------------------------------------------------------------
> > |                                                                           
> >   |
> > |               ----> ADVICE to this user running VASP <----                
> >   |
> > |                                                                           
> >   |
> > |     You have a (more or less) 'large supercell' and for larger cells it   
> >   |
> > |     might be more efficient to use real-space projection operators.       
> >   |
> > |     Therefore, try LREAL= Auto in the INCAR file.                         
> >   |
> > |     Mind: For very accurate calculation, you might also keep the          
> >   |
> > |     reciprocal projection scheme (i.e. LREAL=.FALSE.).                    
> >   |
> > |                                                                           
> >   |
> >  
> > -----------------------------------------------------------------------------
> >
> >  LDA part: xc-table for (Slater+PW92), standard interpolation
> >  POSCAR, INCAR and KPOINTS ok, starting setup
> >  FFT: planning ... GRIDC
> >  FFT: planning ... GRID_SOFT
> >  FFT: planning ... GRID
> >  WAVECAR not read
>
> Ultimately, I found that the cause of the problem was that
> hyper-threading was enabled by default in the BIOS. If I disable
> hyper-threading, I observed that the computational efficiency is
> consistent between using slurm and using mpirun directly. Therefore,
> it appears that hyper-threading should not be enabled in the BIOS when
> using slurm.

Regarding the reason, I think the description here [1] is reasonable:

It is recommended to disable processor hyper-threading. In
applications that are compute-intensive rather than I/O-intensive,
enabling HyperThreading is likely to decrease the overall performance
of the server. Intuitively, the physical memory available per core is
reduced after hyper-threading is enabled.

[1] 
https://gist.github.com/weijianwen/acee3cd49825da8c8dfb4a99365b54c8#%E5%85%B3%E9%97%AD%E5%A4%84%E7%90%86%E5%99%A8%E8%B6%85%E7%BA%BF%E7%A8%8B

Regards,
Zhao

> >
> > > Another difference between the two might be
> > > a) the communication channel/interface that is used.
> >
> > I tried to use `mpirun', `mpiexec', and `srun --mpi pmi2', and they
> > all have similar behaviors as described above.
> >
> > > b) the number of nodes involved: when using mpirun you might run things
> > > on more than one node.
> >
> > This is a single-node cluster with two sockets.
> >
> > > Regards,
> > > Hermann
> >
> > Regards,
> > Zhao
> >
> > > On 5/24/24 15:32, Hongyi Zhao via slurm-users wrote:
> > > > Dear Slurm Users,
> > > >
> > > > I am experiencing a significant performance discrepancy when running
> > > > the same VASP job through the Slurm scheduler compared to running it
> > > > directly with mpirun. I am hoping for some insights or advice on how
> > > > to resolve this issue.
> > > >
> > > > System Information:
> > > >
> > > > Slurm Version: 21.08.5
> > > > OS: Ubuntu 22.04.4 LTS (Jammy)
> > > >
> > > >
> > > > Job Submission Script:
> > > >
> > > > #!/usr/bin/env bash
> > > > #SBATCH -N 1
> > > > #SBATCH -D .
> > > > #SBATCH --output=%j.out
> > > > #SBATCH --error=%j.err
> > > > ##SBATCH --time=2-00:00:00
> > > > #SBATCH --ntasks=36
> > > > #SBATCH --mem=64G
> > > >
> > > > echo '#######################################################'
> > > > echo "date                    = $(date)"
> > > > echo "hostname                = $(hostname -s)"
> > > > echo "pwd                     = $(pwd)"
> > > > echo "sbatch                  = $(which sbatch | xargs realpath -e)"
> > > > echo ""
> > > > echo "WORK_DIR                = $WORK_DIR"
> > > > echo "SLURM_SUBMIT_DIR        = $SLURM_SUBMIT_DIR"
> > > > echo "SLURM_JOB_NUM_NODES     = $SLURM_JOB_NUM_NODES"
> > > > echo "SLURM_NTASKS            = $SLURM_NTASKS"
> > > > echo "SLURM_NTASKS_PER_NODE   = $SLURM_NTASKS_PER_NODE"
> > > > echo "SLURM_CPUS_PER_TASK     = $SLURM_CPUS_PER_TASK"
> > > > echo "SLURM_JOBID             = $SLURM_JOBID"
> > > > echo "SLURM_JOB_NODELIST      = $SLURM_JOB_NODELIST"
> > > > echo "SLURM_NNODES            = $SLURM_NNODES"
> > > > echo "SLURMTMPDIR             = $SLURMTMPDIR"
> > > > echo '#######################################################'
> > > > echo ""
> > > >
> > > > module purge > /dev/null 2>&1
> > > > module load vasp
> > > > ulimit -s unlimited
> > > > mpirun vasp_std
> > > >
> > > >
> > > > Performance Observation:
> > > >
> > > > When running the job through Slurm:
> > > >
> > > > werner@x13dai-t:~/Public/hpc/servers/benchmark/Cr72_3x3x3K_350eV_10DAV$
> > > > grep LOOP OUTCAR
> > > >        LOOP:  cpu time     14.4893: real time     14.5049
> > > >        LOOP:  cpu time     14.3538: real time     14.3621
> > > >        LOOP:  cpu time     14.3870: real time     14.3568
> > > >        LOOP:  cpu time     15.9722: real time     15.9018
> > > >        LOOP:  cpu time     16.4527: real time     16.4370
> > > >        LOOP:  cpu time     16.7918: real time     16.7781
> > > >        LOOP:  cpu time     16.9797: real time     16.9961
> > > >        LOOP:  cpu time     15.9762: real time     16.0124
> > > >        LOOP:  cpu time     16.8835: real time     16.9008
> > > >        LOOP:  cpu time     15.2828: real time     15.2921
> > > >       LOOP+:  cpu time    176.0917: real time    176.0755
> > > >
> > > > When running the job directly with mpirun:
> > > >
> > > >
> > > > werner@x13dai-t:~/Public/hpc/servers/benchmark/Cr72_3x3x3K_350eV_10DAV$
> > > > mpirun -n 36 vasp_std
> > > > werner@x13dai-t:~/Public/hpc/servers/benchmark/Cr72_3x3x3K_350eV_10DAV$
> > > > grep LOOP OUTCAR
> > > >        LOOP:  cpu time      9.0072: real time      9.0074
> > > >        LOOP:  cpu time      9.0515: real time      9.0524
> > > >        LOOP:  cpu time      9.1896: real time      9.1907
> > > >        LOOP:  cpu time     10.1467: real time     10.1479
> > > >        LOOP:  cpu time     10.2691: real time     10.2705
> > > >        LOOP:  cpu time     10.4330: real time     10.4340
> > > >        LOOP:  cpu time     10.9049: real time     10.9055
> > > >        LOOP:  cpu time      9.9718: real time      9.9714
> > > >        LOOP:  cpu time     10.4511: real time     10.4470
> > > >        LOOP:  cpu time      9.4621: real time      9.4584
> > > >       LOOP+:  cpu time    110.0790: real time    110.0739
> > > >
> > > >
> > > > Could you provide any insights or suggestions on what might be causing
> > > > this performance issue? Are there any specific configurations or
> > > > settings in Slurm that I should check or adjust to align the
> > > > performance more closely with the direct mpirun execution?
> > > >
> > > > Thank you for your time and assistance.
> > > >
> > > > Best regards,
> > > > Zhao
> > >
> > > --
> > > slurm-users mailing list -- slurm-users@lists.schedmd.com
> > > To unsubscribe send an email to slurm-users-le...@lists.schedmd.com

-- 
slurm-users mailing list -- slurm-users@lists.schedmd.com
To unsubscribe send an email to slurm-users-le...@lists.schedmd.com

Reply via email to