A method for partitioning a large computation task (direct, variable resolution bathymetric grid construction from raw observations) into thread-parallel code is described. Based on the data density estimated for the first pass of the chrt algorithm, this algorithm statically partitions the estimation task into spatially distinct blocks of approximately equal total data observation count so that each can be executed in parallel and be expected to complete approximately concurrently. No communication between blocks or further load balancing is therefore required. A branch-and-bound algorithm is used to control the complexity of the partitioning task, but the computation time increases significantly as more partitions are required, leading to a degree of diminishing returns for allocating further computational resources and suggesting alternative approaches for high thread-count systems. Speed-up of the algorithm over a pair of test datasets (using real-world hydrographic survey data) shows that the performance consistently improves with the number of computational tasks assigned, initially (super-) linearly, although ultimately sub-linearly as other resource sharing limitations take over. An overall speedup of 4.1 times is demonstrated with a quad-core single-processor workstation.
Read full abstract