A variant of !272
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