Question #693017 on Yade changed:
https://answers.launchpad.net/yade/+question/693017

Huang peilun posted a new comment:
Thanks Robert, your comments help me a lot.

I now understand the matrix factorization reuse, multithreaded
factorization and GPU accelerated techniques. I still have some problems
about the parallel task management technique.

In the python scripts that your mentioned, I think the parallel task
management technique is implemented through the following code:

#######################################################################
O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [Law2_ScGeom_FrictPhys_CundallStrack()],label="iloop"
        ),
        FlowEngine(multithread=1,dead=1,label="flow",ompThreads=10),
        
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
        triax,
        #VTKRecorder(Key=identifier,dead=1, label='vtkRec', 
iterPeriod=100,initRun=True,fileName=(outputDir+'/vtkFiles/out-'),recorders=['spheres','facets','boxes']),
        newton
]

#Some of the original code is omitted here

if setEnginesParallel:

        
O.engines=[ParallelEngine([flow,[O.engines[0],O.engines[1],O.engines[2],O.engines[4]]]),
                O.engines[5],
                O.engines[6]
        ]

        triax = O.engines[1]
        newton = O.engines[2]

O.engines[0].slaves[1][0].ompThreads=O.engines[0].slaves[1][1].ompThreads=O.engines[0].slaves[1][2].ompThreads=O.engines[0].slaves[1][3].ompThreads=5

        flow.ompThreads=4
#######################################################################

I think based on the above code, FlowEngine runs before the
ForceResetter() which is now the O.engines[0].slaves[1][0]. However, in
this case, the fluid force cannot be applied to the sphere particles.
Did I get this right?

Besides, I noticed that the parallelism in Yade has 3 levels. According
to my understanding, by using the -j/--thread option, one can implement
parallelism inside Engines and parallelism between Computation,
interaction (python, GUI) and rendering. Parallelism inside multiple
engine groups can only be implemented by ParallelEngine. Did I get it
right?

I'm not sure if I should open a new question.

Thanks
Peilun

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to