Index by title

Does heckle have dynamic load balancing ?

No. Not yet. Heckle is partitioned with rectangular MPI domains.
The automatic partitioning currently uses only the number of cells, trying to minimize the surfaces and maximize the volume of partitions. It might not be well suited to your initial condition and create large initial load imbalance.
In this case we recommend to define manually the number of MPI domains in each directions. See Can I choose the number of MPI rectangular partition along each directions ?


External library dependencies


Magnetic reconnection

Proton reconnection outflow from a simulation ran on 2048 cores with 500 million particles. The magnetic field lines are represented as black solid lines. Upstream plasmas have different densities (factor of 4), different magnetic field orientations (antiparallel) and strength (factor of 1.2). The domain is 400 $\delta_i$ by $80\delta_i$.


Heckle user guide

Installation guide

FAQ


Machines on which Heckle runs

Heckle is a priori a portable code which should run on any machine.
It has been successfully used in the following supercomputers :


How can I check the memory usage of Heckle ?

There are different answers.
You might use your OS services and look for your process and how much memory it takes. Depending on the OS results may be different.

You can also use tools dedicated for monitoring memory consumption in computing facilities, like idrmemmpi at IDRIS.

Also, Heckle has its own monitoring tool, named HeckleMem, in the directory src/.
Heckle re-defines malloc() into memory_allocate() and free() into memory_free(). Those two functions are able to keep track of the amount of memory used by the code in real time.

any call to

memory_status();

will print something like this ;

________ Memory Status __________
Rank 0 memory consumption : 3074586736 (B)      3002526 (KB)      2932 (MB)      2 (GB)
Rank 1 memory consumption : 3074586736 (B)      3002526 (KB)      2932 (MB)      2 (GB)
Rank 2 memory consumption : 3074586736 (B)      3002526 (KB)      2932 (MB)      2 (GB)
Rank 3 memory consumption : 3074586736 (B)      3002526 (KB)      2932 (MB)      2 (GB)
_________________________________

Be aware that this function in its current form calls MPI_Barrier() and therefore should not be used in production runs

This code can also be called just for estimating the memory that should be required by each process, for a given heckle.txt. It is based on the size of the main structures allocated in the code, and quits just after printing the status.


Domain partitioning

User defined

Heckle lets the user specify how to partition the simulation domain.
You just have to enter the number of MPI domains (partitions) in each direction, in the heckle.txt file.

----number-of-mpi-domains--------------------------------------
    64 32 1
---------------------------------------------------------------
$-----------------------------------------------------------------------

the last line says the user wants 64, 32 and 1 MPI domains in the directions x, y and z, respectively.

Here the total number of partition desired is 2048. Heckle will switch to automatic domain partitioning if ran with any other number of processes.
For example :

mpirun -n 1024 ./heckle.exe ./

will perform automatic domain partitioning with 1024 cores, disregarding the 64x32x1 domains specified in heckle.txt

Automatic


Heckle

Heckle is a Hybrid plasma simulation code where ions are treated as macropartiles with the Particle-In-Cell method, and electron fluid momentum equation is used to calculate the magnetic induction equation. It has been developed at LPP, with written in C and parallelized with the MPI library.

Documentation for Users

You can read the user guide.

Other ressources :

Other ressources:

Publications

Gallery