Ridgeway Kite has developed a programming methodology and an associated library which allows parallel kernels to be written once and the code compiled without modification for GPU, CPU and MIC architectures. 6X has been developed using this methodology and library. In addition, 6X can divide up the parallel tasks onto separate distributed memory nodes, without the need for explicit MPI programming.
Parallel programming is still a serious challenge; both to develop correct code and to achieve the performance level consistent with the cost of the hardware. Typically, moderately parallel codes running on clusters of commodity processors will aim at the highest performance by exploiting recursive algorithms on individual CPUs. This approach has the unfortunate effect of resulting in different algorithms on different numbers of processors. This effect, while optimizing performance, often leads to inconsistent results on different hardware configurations. This is a serious concern to the reservoir engineer, who may need to run the model on a single specific configuration, which is usually non-optimal.
The advent of low cost, massively parallel processors, best exemplified by the GPU, brings an opportunity to change this paradigm by implementing a genuinely massive parallel algorithm. Ridgeway Kite has developed such an algorithmic approach that is as parallel as possible and produces the same results on any hardware, and indeed on any numbers of nodes.
A 5.3 million cell client model was run on different hardware systems to demonstrate the massively parallel performance and consistency of results that 6X offers. It shows that 6X scales well on CPUs (up to 512 cores on this model) and runs well on NVIDIA K80 and P100 GPUs.
The CPU time is shown in the plot below:
- These models were run with the same rigorous convergence criteria and produce identical results.
Ridgeway Kite works closely with IBM, Cray Inc. and NVIDIA to benchmark models on their hardware systems.