Show Your Support: This site is primarily supported by advertisements. Ads are what have allowed this site to be maintained on a daily basis for the past 18+ years. We do our best to ensure only clean, relevant ads are shown, when any nasty ads are detected, we work to remove them ASAP. If you would like to view the site without ads while still supporting our work, please consider our ad-free Phoronix Premium.
TimeGraph: A Linux GPU Command Scheduler
In preparing for XDC2011 Chicago, the X.Org developers' summit that begins in just ten days that I have organized, the schedule is being worked out at the moment. One of the items that is set to be talked about at XDC2011 during the Nouveau driver discussion is TimeGraph. This is an open-source GPU command scheduler that sounds fairly interesting.
Shinpei Kato, one of the developers behind TimeGraph, is expected to talk about working towards DRM-compliant GPU scheduling at the device driver level. In particular, it's a sub-topic of the Nouveau driver talk. TimeGraph is developed by Shinpei at the University of California Santa Cruz along with Karthik Lakshmanan and Ragunathan Rajkumar, both of Carnegie Mellon University. Formally, TimeGraph is a project of the Real-Time and Multimedia Systems Laboratory (RTML) at Carnegie Mellon.
The TimeGraph project site describes this software project as "TimeGraph is a GPU command scheduler, running as part of GPU device driver, to protect GPU applications from performance interference. The main contributions of TimeGraph are (i) priority-driven scheduling of GPU commands issued from user-space runtime, which provides predictable response times for GPU applications, and (ii) GPU resource reservation, i.e., accounting and enforcement of GPU resource usage, which isolates performance among GPU applications. Our prototype implementation of TimeGraph is available for Linux 2.6 and 3.0 with NVIDIA's Fermi and Tesla GPUs."
TimeGraph itself is a Linux kernel module, but it's dependent upon Linux kernel patches that provide an extension for real-time computing on GPUs. TimeGraph has been tested on recent Linux 2.6/3.0 kernels. TimeGraph doesn't require any changes to the user-space. There are multiple policies available for the scheduling process and GPU resources can also be reserved using this mechanism. Policies include high throughput (priority support), posterior enforcement (reservation support), and apriori enforcement (reservation support). GPU execution time prediction is also being worked out.