ls1mardyn / ls1-mardyn

ls1-MarDyn is a massively parallel Molecular Dynamics (MD) code for large systems. Its main target is the simulation of thermodynamics and nanofluidics. ls1-MarDyn is designed with a focus on performance and easy extensibility.
http://www.ls1-mardyn.de
Other
28 stars 15 forks source link

better documentation of kdd parameters #40

Open SteffenSeckler opened 5 years ago

SteffenSeckler commented 5 years ago

Describe the bug xml parameters of kdd should be better described

SteffenSeckler commented 5 years ago

German:

1) updateFrequency: alle wie viele Zeitschritte wird eine neue Decompositionierung berechnet, also wie of wird gerebalanced?

2) fullSearchThreshold: das gibt an bis zu welchem Level wirklich alle dekompositionsmöglichkeiten ausgerechnet werden:

    a) wenn die Anzahl der Prozesse innerhalb eines Teilgebietes größer als fullSeachThreshold ist, dann wird nach einer heuristic weiter geteilt: Hier wird einfach die domain zur Hälfte geteilt und auf jede Hälfte wird dann eine passende Anzahl (entsprechend der Last) an Prozessen zugeteilt.

    b) wenn die Anzahl an Prozessen kleiner ist, dann werden mehrere mögliche Splittings berechnet und die load imbalance verglichen. davon wird dann die beste genommen.

    Der default passt normalerweise (ist 8).
3) heterogeneousSystems: true, falls angenommen wird, dass das System aus mehreren verschiedenen Prozessen besteht. Bei dir false, was auch der default ist.

4) useVectorizationTuner: da kannst du true und false ausprobieren. default ist aktuell (noch) false. Wirkung:

    a) bei false: eine metrik wird angewandt, die etwa besagt: zeit pro Zelle = partikelanzahl ^2

    b) bei true: hier wird am anfang der simulation gemessen, wie viel zeit gebraucht wird für eine Zelle abhängig von der Anzahl der Partikel pro zelle.

5) clusterHetSys: ähnlich wie 3. default und bei dir: false

6) splitBiggestDimension: es wird immer entlang der längsten Seite gesplitted. Führt zu quadratischeren Teilgebieten. bei false, wird bei der Berechnung auch Splittings in andere Richtungen in betracht gezogen (default: true)

7) forceRatio: bei true wird die Suche komplett eingestellt. es wird immer 2a verwendet.

8) rebalanceLimit: gibt ein imbalancetoleranz an. wenn die maximale Zeit in einer Iteration / minimale Zeit in einer Iteration < rebalanceLimit ist, wird das rebalancen übersprungen. default ist 0 und wird ignoriert.

    rebalanceLimit habe ich selbst noch gar nicht ausprobiert. Allerdings glaube ich, dass da eventuell die falschen Iterationszeiten reingefüttert werden. Solltest du also lieber auf 0 lassen. (ich hab da mal nen issue zu erstellt)

9) splitThreshold: ähnlich wie 6) nur gibt das an, ab wie vielen Prozessen in einem Teilgebiet nicht mehr gesucht werden soll. 6) hat aber vorrecht. d.h. nur wenn 6 false ist, hat dies irgendeinen Einfluss. Default: std::numeric_limits<int>::max(), also deaktiviert

10) generateNewFiles -> generiere neue files aus dem vectorizationtuner. macht ein file pro prozess, also lieber deaktiviert lassen. Default: false

11) useExistingFiles -> kann die files aus 10 lesen, wenn sie existieren. default: false

12) doMeasureLoadCalc -> kann aus real gemessenen Werten, also aus Werten aus der Simulation heraus eine Abschätzung von dem Aufwand je Zelltyp erstellen. Ist noch experimentell und daher per default aus.