Number of processors running the simulation

Submitted by g.garate on Thu, 04/11/2013 - 19:48

Hi all

I've been reading the manual in order know how to speed up the simulation. If I increase the number of processors to running the simulation I'll be able to reduce the pair time. is it the best solution to achieve my aim?
Can anybody tell me the steps that I have to follow?

best.

cstoltz | Thu, 04/11/2013 - 21:38

Increasing the number of cores used will generally speed up a simulation up to a point. You need to pay attention to how the cores are being distributed around the physical space of your simulation and how balanced the load is across your cores. If you have a highly unbalanced system, just throwing more cores at it may not help at all and may actually degrade performance. If you have some idea as to the best way to spatially decompose the problem, use the 'processors' command to force LIGGGHTS to distribute the processors more effectively. Also, keep in mind that communication between the cores will become more of an issue as you keep expanding the degree of parallelization.

There are other tricks for speeding up simulations like ensuring that your domain isn't any larger than needed, changing physical properties (esp modulus) to enable larger time steps, and playing w/ the neighbor distance.

Regards,
Chris

g.garate | Thu, 04/11/2013 - 22:24

Thanks Chris, the information you've just give me is very useful. So far today I have only used the smallest required domain , from now I'll consider the other tricks that you've mentioned.

Regards

g.garate | Fri, 04/12/2013 - 15:41

Chris, I've got a problem with "processors command". First I tried to run "insert_stream" example without any change, it worked well. After that, I uncommented the processor command line and the following error appeared:
ERROR: Specified processors != physical processors (comm.cpp:1571)

here is the input script:

atom_style granular
atom_modify map array
boundary m m m
newton off

communicate single vel yes
processors 2 1 1

I also tried with: processors 2 2 1, but it didn't work

I have 4 processors:

gonzalo@ubuntu:~/LIGGGHTS/LIGGGHTS-PUBLIC/examples/LIGGGHTS/Tutorials_public/insert_stream$ cat /proc/cpuinfo | grep processor | wc -l
4

Thanks in advance

cstoltz | Fri, 04/12/2013 - 16:51

Sounds like you're running in serial. When you comment the line out, look at the text output. It should say how many processors are being used. Guessing that will be 1 by 1 by 1. If you're going to use the 'processors' command, you need to make sure that you submit with the correct number of processors.

Regards,
Chris

pipegaldames | Fri, 04/12/2013 - 21:11

I have the same problem. When I use the "processors" command shows up an error:

"ERROR: Specified processors != physical processors (comm.cpp:1571)"

The text output doesn't say how many processors are being used, but when I use "processors 1 1 1" it does.

I have 4 processors. the following is the input script. please have a look.

atom_style granular
atom_modify map array
boundary m m m
newton off

communicate single vel yes
processors 2 1 1

units si

region reg block -1 1 -1 1 -0.05 2.85 units box
create_box 1 reg

neighbor 0.01 bin
neigh_modify delay 0

#Material properties required for new pair styles

fix m1 all property/global youngsModulus peratomtype 5.e6
fix m2 all property/global poissonsRatio peratomtype 0.45
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.9
fix m4 all property/global coefficientFriction peratomtypepair 1 0.05
fix m5 all property/global characteristicVelocity scalar 2.
fix m6 all property/global cohesionEnergyDensity peratomtypepair 1 500

#New pair style
pair_style gran/hertz/history #Hertzian without cohesion
pair_coeff * *

timestep 0.00001

fix gravi all gravity 9.81 vector 0.0 0.0 -1.0

#particle distributions
fix pts1 all particletemplate/sphere 1 atom_type 1 density constant 2500 radius constant 0.015
fix pts2 all particletemplate/sphere 1 atom_type 1 density constant 2500 radius constant 0.025
fix pdd1 all particledistribution/discrete 1. 2 pts1 0.3 pts2 0.7

#region and insertion
fix ins_mesh all mesh/surface file face.stl type 1 scale 0.005
group nve_group region reg
fix ins nve_group insert/stream seed 100001 distributiontemplate pdd1 nparticles 5000 &
vel constant 0. -0.5 -2. particlerate 1000 &
overlapcheck yes insertion_face ins_mesh extrude_length 0.6

#apply nve integration to all particles that are inserted as single particles
fix integr nve_group nve/sphere

#output settings, include total thermal energy
compute 1 all erotate/sphere
thermo_style custom step atoms ke c_1 vol
thermo 1000
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes

#insert the first particles so that dump is not empty
run 1
dump dmp all custom 800 post/dump*.stream id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius

#insert particles
run 100000

Regards