Re: CPU multinode NAMD 2.14 execution

From: Josh Vermaas (vermaasj_at_msu.edu)
Date: Mon Sep 19 2022 - 12:15:03 CDT

Ok, now you are still running everything independently. May I ask the
provenance of your namd2 binary? I had assumed you had compiled it with
an SMP backend of some sort, and that srun could integrate with it
without fuss, but those assumptions appear to be wrong. What happens if
you run it without srun? Is it perchance a multicore binary that doesn't
have a network backend at all?

-Josh

On 9/19/22 1:01 PM, Antonio Frances Monerris wrote:
> Hi again,
>
> I shave switched off the WrapAll keyword and the previous error disappeared. Now it runs. Thanks again.
>
> However, I have the same problem as in my first e-mail. The output is duplicated 10 times, and the simulation does not scale with the 10 nodes (350 CPUs). As an example, the last run prints (grep 'TIMING'):
>
> Info: TIMING OUTPUT STEPS 5000
> Info: TIMING OUTPUT STEPS 5000
> Info: TIMING OUTPUT STEPS 5000
> Info: TIMING OUTPUT STEPS 5000
> Info: TIMING OUTPUT STEPS 5000
> Info: TIMING OUTPUT STEPS 5000
> Info: TIMING OUTPUT STEPS 5000
> Info: TIMING OUTPUT STEPS 5000
> Info: TIMING OUTPUT STEPS 5000
> Info: TIMING OUTPUT STEPS 5000
> TIMING: 5000 CPU: 44.0553, 0.00879996/step Wall: 44.2653, 0.00882537/step, 12.2452 hours remaining, 2751.125000 MB of memory in use.
> TIMING: 5000 CPU: 44.0696, 0.0088029/step Wall: 44.2777, 0.00882837/step, 12.2494 hours remaining, 2751.132812 MB of memory in use.
> TIMING: 5000 CPU: 44.2329, 0.00883592/step Wall: 44.4758, 0.00886738/step, 12.3035 hours remaining, 2750.722656 MB of memory in use.
> TIMING: 5000 CPU: 44.3876, 0.00886676/step Wall: 44.5966, 0.00889215/step, 12.3379 hours remaining, 2750.808594 MB of memory in use.
> TIMING: 5000 CPU: 44.328, 0.00885449/step Wall: 44.5477, 0.0088825/step, 12.3245 hours remaining, 2750.964844 MB of memory in use.
> TIMING: 5000 CPU: 44.4358, 0.00887585/step Wall: 44.6728, 0.00890592/step, 12.357 hours remaining, 2750.988281 MB of memory in use.
> TIMING: 5000 CPU: 44.2537, 0.00884002/step Wall: 44.6252, 0.0088942/step, 12.3407 hours remaining, 2751.031250 MB of memory in use.
> TIMING: 5000 CPU: 44.1891, 0.00882729/step Wall: 44.4073, 0.00885374/step, 12.2846 hours remaining, 2751.082031 MB of memory in use.
> TIMING: 5000 CPU: 44.4215, 0.00887328/step Wall: 44.6482, 0.00890316/step, 12.3531 hours remaining, 2751.105469 MB of memory in use.
> TIMING: 5000 CPU: 44.3274, 0.00885476/step Wall: 44.5483, 0.00888286/step, 12.325 hours remaining, 2750.656250 MB of memory in use.
>
> This is the timing for the first 5000 steps printed 10 times, I assume computed in each 10 nodes. I am pursuing just one output ~10 times faster.
>
> Here the configuration file:
>
> ###
> coordinates ./complex.pdb
> parmFile ./complex.parm7
> amber on
> exclude scaled1-4
> 1-4scaling 0.83333333
> switching on
> switchdist 8.0
> cutoff 9.0
> pairlistdist 11.0
> bincoordinates ./eq.coor
> binvelocities ./eq.vel
> ExtendedSystem ./eq.xsc
> binaryoutput yes
> binaryrestart yes
> outputname output/abf_1
> dcdUnitCell yes
> outputenergies 5000
> outputtiming 5000
> outputpressure 5000
> restartfreq 5000
> XSTFreq 5000
> dcdFreq 5000
> hgroupcutoff 2.8
> wrapAll off
> wrapWater on
> langevin on
> langevinDamping 1
> langevinTemp 310.15
> langevinHydrogen no
> langevinpiston on
> langevinpistontarget 1.01325
> langevinpistonperiod 200
> langevinpistondecay 100
> langevinpistontemp 310.15
> usegrouppressure yes
> PME yes
> PMETolerance 10e-6
> PMEInterpOrder 4
> PMEGridSpacing 1.0
> timestep 2.0
> fullelectfrequency 2
> nonbondedfreq 1
> rigidbonds all
> rigidtolerance 0.00001
> rigiditerations 400
> stepspercycle 10
> splitpatch hydrogen
> margin 2
> useflexiblecell no
> useConstantRatio no
> colvars on
> colvarsConfig colvars_1.in
> run 5000000
> ###
>
> Here the colvars file:
>
> ###
> colvarsTrajFrequency 5000
> colvarsRestartFrequency 5000
> indexFile ./complex.ndx
> colvar {
> name RMSD
> width 0.05
> lowerboundary 0.00
> upperboundary 0.75
> subtractAppliedForce on
> expandboundaries on
> extendedLagrangian on
> extendedFluctuation 0.05
> rmsd {
> atoms {
> indexGroup ligand
> }
> refpositionsfile ./complex.xyz
> }
> }
> abf {
> colvars RMSD
> FullSamples 10000
> historyfreq 50000
> writeCZARwindowFile
> }
> metadynamics {
> colvars RMSD
> hillWidth 3.0
> hillWeight 0.05
> wellTempered on
> biasTemperature 4000
> }
> harmonicWalls {
> colvars RMSD
> lowerWalls 0.0
> upperWalls 0.8
> lowerWallConstant 0.2
> upperWallConstant 0.2
> }
> colvar {
> name translation
> distance {
> group1 {
> indexGroup protein
> }
> group2 {
> dummyAtom (7.244845867156982, -2.562990665435791, -15.304783821105957)
> }
> }
> }
> harmonic {
> colvars translation
> centers 0.0
> forceConstant 100.0
> }
>
> colvar {
> name orientation
> orientation {
> atoms {
> indexGroup protein
> }
> refPositionsFile ./complex.xyz
> }
> }
> harmonic {
> colvars orientation
> centers (1.0, 0.0, 0.0, 0.0)
> forceConstant 2000.0
> }
> ###
>
> Best regards,
> Antonio
>
>
>
>
>
> On Monday, September 19, 2022 18:25 CEST, Josh Vermaas <vermaasj_at_msu.edu> wrote:
>
>> Hi Antonio,
>>
>> This is actually progress. :D If you are running one simulation (even if
>> its across multiple nodes), all the output to STDOUT/STDERR will end up
>> in a single place. Do you have the NAMD configuration file handy
>> somewhere I or others can look at it? Generally speaking, files existing
>> isn't a problem, since NAMD will gleefully overwrite files if it can.
>> This seems like a scenario where you have a broken symlink, or
>> potentially permission problems so that NAMD can't read in the previous
>> step's periodic cell information.
>>
>> -Josh
>>
>> On 9/19/22 11:58 AM, Antonio Frances Monerris wrote:
>>> Hi Josh,
>>>
>>> Thanks for your quick answer. Your point makes very much sense. I've tried your command, and a new error appears:
>>>
>>> OPENING EXTENDED SYSTEM TRAJECTORY FILE
>>> FATAL ERROR: Unable to open text file output/abf_1.xst: File exists
>>> [Partition 0][Node 0] End of program
>>>
>>> It seems that only happens in one of the nodes, which does not expect this file to exist. The other 9 nodes do not report any error. It seems a problem with the parallelization, but I'm not sure. Any help?
>>>
>>> Best regards,
>>> Antonio
>>>
>>>
>>>
>>>
>>>
>>> On Monday, September 19, 2022 17:21 CEST, Josh Vermaas <vermaasj_at_msu.edu> wrote:
>>>
>>>> Hi Antonio,
>>>>
>>>> I think its because you have both srun *and* charmrun in the execution
>>>> line. The srun is asking for 10 tasks, each of which is going to be
>>>> running the same charmrun arguments, so you get 10 copies of the same
>>>> simulation, each of which is using ++n 10 and ++ppn 35.
>>>>
>>>> What I might try is the following:
>>>>
>>>> srun -n 10 -c 36 namd2 +ppn 35 +setcpuaffinity $NAMD_INPUT > $NAMD_OUTPUT
>>>>
>>>> This is very similar to what I use on local GPU clusters:
>>>>
>>>> #!/bin/bash
>>>> #SBATCH --gres=gpu:4
>>>> #SBATCH --nodes=2
>>>> #SBATCH --ntasks-per-node=4
>>>> #SBATCH --cpus-per-task=12
>>>> #SBATCH --gpu-bind=map_gpu:0,1,2,3
>>>> #SBATCH --time=4:0:0
>>>> #SBATCH --job-name=jobname
>>>>
>>>> cd $SLURM_SUBMIT_DIR
>>>> module use /mnt/home/vermaasj/modules
>>>> module load NAMD/2.14-gpu
>>>> srun namd2 +ppn 11 +ignoresharing configfile.namd > logfile.log
>>>>
>>>>
>>>> -Josh
>>>>
>>>>
>>>> On 9/19/22 10:40 AM, Antonio Frances Monerris wrote:
>>>>> Dear NAMD users,
>>>>>
>>>>> I am trying to run NAMD 2.14 in a scientific cluster operating with the Slurm job manager. My goal is to distribute the simulation into several nodes to accelerate the simulation timings. Each node has 36 physical CPUs (2 sockets of 18 processors each).
>>>>>
>>>>> Some info on the software versions:
>>>>>
>>>>> Converse/Charm++ Commit ID: v6.10.2-0-g7bf00fa-namd-charm-6.10.2-build-2020-Aug-05-556
>>>>> Info: NAMD 2.14 for Linux-x86_64-verbs-smp
>>>>>
>>>>> This is the command I run:
>>>>>
>>>>> srun -N 10 charmrun ++n 10 ++ppn 35 namd2 +setcpuaffinity +idlepoll $NAMD_INPUT > $NAMD_OUTPUT
>>>>>
>>>>> It runs. However, I do not obtain what I want. The output prints these sentences, 10 times each:
>>>>>
>>>>> Charm++> Running in SMP mode: 10 processes, 35 worker threads (PEs) + 1 comm threads per process, 350 PEs total
>>>>> Charm++> Running on 1 hosts (2 sockets x 18 cores x 1 PUs = 36-way SMP)
>>>>> Charm++> Warning: the number of SMP threads (360) is greater than the number of physical cores (36), so threads will sleep while idling. Use +CmiSpinOnIdle or +CmiSleepOnIdle to control this directly.
>>>>> Info: Running on 350 processors, 10 nodes, 1 physical nodes.
>>>>>
>>>>> The two first sentences are coherent with my purpose, but not the last two. Later, NAMD prints the statistics for the same steps also ten times each. It seems that instead of running one simulation in 10 nodes, it is repeating the same simulation 10 times, one per node. This seems to be confirmed by the .dcd file, which contains only the number of frames covered by the output (they are not multiplied by 10). The time per step does not significantly change when varying the number of nodes, coherently with my diagnostic.
>>>>>
>>>>> What am I missing? Can someone help me with the submission, please?
>>>>>
>>>>> Many thanks for reading.
>>>>>
>>>>> With sincere regards,
>>>>> Antonio
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>> --
>>>> Josh Vermaas
>>>>
>>>> vermaasj_at_msu.edu
>>>> Assistant Professor, Plant Research Laboratory and Biochemistry and Molecular Biology
>>>> Michigan State University
>>>> vermaaslab.github.io
>>>>
>>>
>>>
>>>
>>>
>>>
>>>
>> --
>> Josh Vermaas
>>
>> vermaasj_at_msu.edu
>> Assistant Professor, Plant Research Laboratory and Biochemistry and Molecular Biology
>> Michigan State University
>> vermaaslab.github.io
>>
>
>
>
>
>
>

-- 
Josh Vermaas
vermaasj_at_msu.edu
Assistant Professor, Plant Research Laboratory and Biochemistry and Molecular Biology
Michigan State University
vermaaslab.github.io

This archive was generated by hypermail 2.1.6 : Tue Dec 13 2022 - 14:32:44 CST