David,
I spent same time understanding precisely why suddenly the multiple-tile functionality gets triggered in mapproject.
Even before, the tile size was 1024, and each time the user specified more than one process or more than one machine, it would get used that way, which I agree may not be great especially for RPC cameras, where the amount of processing is small, and I/O is
a bigger issue.
Now, it started going through the multi-title logic when it detected there are RPC coefficients somewhere in in the input metadata that need to be saved in the final mapprojected image. Such metadata is easiest to deal with in the multi-tile framework (even
if called for just a tile), as then a plain text VRT file is written, the RPC can be appended there, and then the VRT can be converted to TIF. The mapproject_single tool on its own can't do that.
To make the whole process consistent, now I set the tile size for ISIS cameras at 1024 as it was, and for non-ISIS cameras at 5012, unless the user explicitly sets a value. Regardless of number of processes or machines. This
may be some kind of compromise.
The benchmarking you mention may not be so straightforward. Lustre does save individual files to individual disks, so I/O is done in parallel, at some level,
as I know, and a big mapproject job split over many machines will still run faster than one on a single machine. Or even on a single machine multiple processes may write to multiple output files which may be faster than a single process. Especially for cameras
where non-trivial processing happens per tile, such as DG and CSM camera model, unlike RPC which is very fast.
So, the hope is that a tile size of 5012 may be somehow in the ballpark, and the user can tweak that further depending on what their file I/O and camera
type may be. How does that sound?
Oleg