← Back to team overview

yade-users team mailing list archive

Re: parallel?


2009/11/4 Václav Šmilauer <eudoxos@xxxxxxxx>

> (please reply to the list, not to me)
> > I hear that OpenMP is based on Shared Memory Parallel Computing, and
> > it needs random accessing to the data (I am not very sure, but just
> > hear about that, if I am wrong, please forgive me and tell me the
> > right thing, thanks).  For my code, the contacts are stored in a list,
> > that is not randomly accessable. If it is ture OpenMP needs random
> > accessing, then how does YADE do that?Is it ok to run YADE on a
> > distributed memory computer architecture, like in Cluster--I saw
> > somebody run it on a cluster, but I do not know the cluster
> > architecture. Because in a distributed memory architechture, the
> > memory is not directlly accessable, which will increase the
> > programming difficulty.
> Both InteractionContainer and BodyContainer support integer indices,
> i.e. random access. No, you cannot run yadeo n distributed memory as
> each core needs access to the whole memory.
> > Currently my speed is 3~4 second to do a iteration for about 100,000
> > particles, and 33 seconds to do an iterations for 988,000 particles.
> > I use threads to do the parallel computing, but the speed up is only
> > 2.2 times faster (15 seconds for 988,000 particles.).  This speed is
> > terrible bad, because the dt is in the order of 10^(-7) second for the
> > simulation of rock particles.
> How many cores do you have? See
> https://yade.hmg.inpg.fr/index.php/Speed_profiling_using_TimingInfo_and_TimingDeltas_classesto get exact idea what takes how much time (do "O.timingEnabled=True" before
> running the simulation, then "from yade import timing; timing.stats()" once
> it's over); the impact of the timing itself is in the order of a few
> percents.

I have 8 cores (2x4 cores), when I use 8 cores (8 threads), the time is (12
seconds), so it is still very bad.
But I am sorry I developed my own code (required by my advisor, so I did not
use YADE actually, but would like to learn from YADE).
I do not know what is the speed for YADE without parallel.

yes, the collider is very time consumming, for 1 million particle in my
case, it may take more than 10 seconds to do that.
and I just do the contact detection every several iterations. the 15 seconds
above did not include this 10 seconds.

> Hm, the old link looks better:
> http://yade.wikia.com/wiki/Speed_profiling_using_TimingInfo_and_TimingDeltas_classes
> It is quite possible that the collider takes a lot of time in your case.
> Consider using collider stride to run it only sometimes:
> https://yade.hmg.inpg.fr/index.php/Insertion_Sort_Collider_Stride
> See examples/concrete/uniax.py, search for
> InsertionSortCollider(sweepLength=.05*sphereRadius,nBins=5,binCoeff=5)
> and try if that helps. If your simulation is quasi-static, it should
> help a lot. Note that the initial sort in InsertionSortCollider takes
> very long: http://yade.wikia.com/wiki/Colliders_performace
> (I've been calling for a long time for a better collider, but noone took
> the challenge.)
> Cheers, Vaclav
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to     : yade-users@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-users
> More help   : https://help.launchpad.net/ListHelp

Follow ups