Skip to content

A variant of !272

bchareyre requested to merge mpi_and_collider into master

This is a variant of !272 (closed) with all commits squashed into one. The relevant commit messages are retained in the commit log.

It fixes #111 (closed)


Better handling of deleted bodies by BodyContainer/ISCollider/ForceContainer + improvements of MPI parallelisation

The main changes are listed below:

fix memory corruption by O.setPermF
enable BodyContainer::insertAtId beyhond current size
introduce BodyContainer attributes keepListShort and realBodies
Improved InsertionSortCollider: substantial speed-up after erasing bodies (e.g. mpirun) by looping on realBodies.
python wrapper for BodyContainer::updateSubdomainLists
fix getting forces in python wrapper and reduce synccount
Enable Newton sub-timing
Newton loops on real bodies only (+tune reserved size of vectors)

MPI: decrease verbosity and more control on printed output
MPI: erase_remote is now mandatory, yet erase_remote_master leaves erasing on master optional (which is faster for frequent merge) + couple smallfix
MPI: fix/clean MPI examples
MPI: fix target value of checkMPI.py
MPI: keep niter the same in both parallel and serial execution of the test script
MPI: a cleaner insertion of bodies from message - else optimized collider breaks
MPI: reduce total print time
MPI: implement and examplify inserting bodies per-worker
MPI: enable building scene in parallell instead of splitting from master
MPI: avoid expensive memory alloc when possible
MPI: use python bytes and memoryview for efficient access to contiguous vector<int> memory
MPI: improvement of mpi colliding process: set subdomain bounds as part of BoundDispatching, don't unbound/re-bound remote bodies all the time to minimize collider's effort
MPI: increment collider.execTime externally so as to display the cost of collider updates specificaly in timing.stats()
Edited by bchareyre

Merge request reports