A Hybrid Task Graph Scheduler API
Tim Blattner, UMBC
10:30am Monday, 25 April 2016, ITE 346
Scalability of applications is a key requirement to gaining performance in hybrid computing. Scheduling code to utilize the parallelism is difficult, particularly when dealing with dependencies, memory management, data motion, and processor occupancy. The Hybrid Task Graph Scheduler (HTGS) API increases programmer productivity to develop hybrid applications by creating a multiple-producer, multiple-consumer workflow system. HTGS improves upon existing task graph solutions with its design of execution pipelines that enables multi-GPU computation through data decomposition and task graph clustering that are bound to physical GPUs. The HTGS API is also capable of managing dependencies between tasks, represents CPU and GPU memories independently, overlaps disk I/O and memory transfers, and utilizes all available compute resources. We demonstrate the HTGS API by comparing a hybrid microscopy image stitching application with and without HTGS. By using HTGS in image stitching, code size is reduced by ~25% and shows favorable performance compared to image stitching without HTGS.