[GRASS-user] i.vi VS i.vi.mpi VS r.mapcalc in GRASS 7.0.svn

Good day.

I am doing some benchmarking trying to find out the most optimal way to calculate vegetation indexes. For example I am calculating NDVI index where the size of NIR and RED bands are 2.2 GB each and I get the following results on same hardware.

  • using i.vi
    Calculation takes 14m 24s

  • using r.mapcalc (it is compiled with --with-pthread option)
    Calculation takes 6m 30s (huge difference - same result!!!)

  • using i.vi.mpi within 1 node with 8 cores
    Number of CPU | Calculation time
    2 CPU | 12m 14s
    3 CPU | 12m 8s
    4 CPU | 11m 59s

And when I am trying to submit this job on cluster, on a several nods (e.g. 6 nods with 8 CPU on each - 48 CPU), I am getting VERY BAD result - more than 90 minutes , for a calculation which r.mapcalc did in just 6m30s.

So now I really cannot understand the meaning of i.vi or i.vi.mpi.

Can anyone explain, what purposes these modules developed for? Which kind of tasks they do better than r.mapcalc? What can I try to see the usefulness of i.vi or i.vi.mpi?
Where can I find some documentation explaining the inner structure of these modules and understand the differences between i.vi and r.mapcalc (because actually, as I found out, r.mapcalc can do everything that i.vi do, but more that 2 times faster.) ?