Hybrid Programming Architecture
In the hybrid programming architecture, your code runs on both your traditional computing environment and the Pathfinder platform. Pathfinder and your existing architecture work as co-processors. You can continue working in your existing development environment while, in the background, Pathfinder accelerates data-intensive workloads and allows you to process vastly larger datasets. Pathfinder provides massive benefits when analyzing graphs, performing sparse linear algebra, or processing large, sparse datasets.
The Hybrid Lucata Programming Architecture
Programming for Pathfinder is similar to programming for a GPU. Your program runs on the stationary cores in your existing traditional computing architecture and issues calls to run data-intensive processes on Pathfinder. Calls are documented in the Lucata SC-LCE API library. An automated data loader transfers data from your existing database and formats it for processing on Pathfinder.
You will modify your program to take advantage of Pathfinder by:
- Identifying the main data structures and distributing them in Pathfinder using the provided memory allocation functions
- Identifying time-consuming computational parts and parallelizing them using Cilk functions and the C/C++ helpers. If you use OpenMP, these pieces should be identified already.
- Using atomic operations, remote atomics, and intrinsics, as needed, to ensure the results are correct and efficient