{"id":20280571,"url":"https://github.com/kiritigowda/srtg-schedule","last_synced_at":"2025-10-10T06:11:02.854Z","repository":{"id":17721483,"uuid":"82577734","full_name":"kiritigowda/SRTG-Schedule","owner":"kiritigowda","description":"Dynamic schedule management framework for soft-real-time jobs on GPU based architectures","archived":false,"fork":false,"pushed_at":"2023-09-07T23:18:29.000Z","size":36250,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-05T02:22:41.572Z","etag":null,"topics":["amd","aperiodic","architectures","cpus","gpgpu","gpu","gpu-scheduler","nvidia","predictability","schedule","scheduler","srtg-scheduler"],"latest_commit_sha":null,"homepage":"http://kiritigowda.com/SRTG-Schedule/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kiritigowda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-20T16:18:46.000Z","updated_at":"2024-07-17T05:26:02.000Z","dependencies_parsed_at":"2024-11-14T13:47:50.837Z","dependency_job_id":null,"html_url":"https://github.com/kiritigowda/SRTG-Schedule","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/kiritigowda/SRTG-Schedule","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritigowda%2FSRTG-Schedule","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritigowda%2FSRTG-Schedule/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritigowda%2FSRTG-Schedule/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritigowda%2FSRTG-Schedule/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kiritigowda","download_url":"https://codeload.github.com/kiritigowda/SRTG-Schedule/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritigowda%2FSRTG-Schedule/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002963,"owners_count":26083487,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amd","aperiodic","architectures","cpus","gpgpu","gpu","gpu-scheduler","nvidia","predictability","schedule","scheduler","srtg-scheduler"],"created_at":"2024-11-14T13:35:59.538Z","updated_at":"2025-10-10T06:11:02.824Z","avatar_url":"https://github.com/kiritigowda.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![doc](https://img.shields.io/badge/doc-readthedocs-blueviolet)](https://kiritigowda.com/SRTG-Schedule/)\n[![Build Status](https://travis-ci.org/kiritigowda/SRTG-Schedule.svg?branch=master)](https://travis-ci.org/kiritigowda/SRTG-Schedule)\n[![codecov](https://codecov.io/gh/kiritigowda/SRTG-Schedule/branch/master/graph/badge.svg)](https://codecov.io/gh/kiritigowda/SRTG-Schedule)\n[![CodeFactor](https://www.codefactor.io/repository/github/kiritigowda/srtg-schedule/badge)](https://www.codefactor.io/repository/github/kiritigowda/srtg-schedule)\n\n# Dynamic Schedule Management Framework For GPUs\n\n## Soft-Real-Time GP-GPU Scheduler\n\nA schedule management framework for aperiodic soft-real-time jobs that may be used by a CPU - GPU system designer/integrator to select, configure and deploy a suitable architectural platform and to perform concurrent scheduling of these jobs\n\n[Soft-Real-Time GP-GPU Scheduler](SRTG-Scheduler) (SRTG-Scheduler) is a dynamic scheduler for aperiodic soft-real-time jobs on GPU based architectures, with a simple, easy-to-use command-line interface (CLI). The SRTG-Scheduler is provided under the [MIT license](https://opensource.org/licenses/MIT). It is currently supported on Windows, Linux, and macOS platforms.\n\n### Latest SRTG-Scheduler\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/kiritigowda/SRTG-Schedule?style=for-the-badge)](https://github.com/kiritigowda/SRTG-Schedule/releases)\n\n## Dynamic schedule management framework for soft-real-time jobs on GPU based architectures\n\n\u003cp align=\"left\"\u003e \u003ca href=\"scheduler_info.md#graphics-processing-units-in-real-time\"\u003e \u003cimg width=\"30%\" src=\"documents/images/readme_images/header/why_gpus.png\" /\u003e \u003c/a\u003e\u003c/p\u003e\n\n#### [GPUs](scheduler_info.md#graphics-processing-units-in-real-time) execute at higher frequencies \n\n* Accelerates execution of jobs allocated to it\n* Improves System response time\n\n\u003cp align=\"center\"\u003e\u003cimg width=\"70%\" src=\"documents/images/readme_images/body/flops_per_year.png\" /\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e The above image compares FLOPs per Cycle improvements over the years \u003ca href=\"#note1\" id=\"note1ref\"\u003e\u003csup\u003e[1]\u003c/sup\u003e\u003c/a\u003e \u003c/p\u003e\n\n#### [GPUs](scheduler_info.md#graphics-processing-units-in-real-time) are energy efficient\n\n* Power needed for GPU to carry out an operation lesser than CPUs\n* Ideal for use in real time embedded system\n\n\u003cp align=\"left\"\u003e \u003ca href=\"scheduler_info.md#gpu-challenges\"\u003e \u003cimg width=\"35%\" src=\"documents/images/readme_images/header/what_are_the_challenges.png\" /\u003e \u003c/a\u003e\u003c/p\u003e\n\n* Significant hardware and firmware challenges\n* Executions are non-preemptive \n* Low degree of controllability of cores\n\n\u003cp align=\"left\"\u003e\u003cimg width=\"30%\" src=\"documents/images/readme_images/header/whats_been_done.png\" /\u003e\u003c/p\u003e\n\n* Policies for scheduling Real-Time jobs \n* Decoding the driver\n* Managing the GPU as a resource\n* Targeting a Multi-GPU model\n\nThis entire body of work assumes that only one kernel may execute on a GPU at a given time(partly due to lack of hardware support)\n\n\u003cp align=\"left\"\u003e\u003ca href=\"scheduler_info.md#motivation\"\u003e \u003cimg width=\"30%\" src=\"documents/images/readme_images/header/our_approach.png\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n#### What's the problem?\n\n\u003cp align=\"center\"\u003e\u003cimg width=\"30%\" src=\"documents/images/readme_images/body/serial_kernels.png\" /\u003e\u003c/p\u003e\n\nSending a single non-preemptive kernel on to a GPU, is under utilizing the GPU\n\n#### Solution\n\n\u003cp align=\"center\"\u003e\u003cimg width=\"40%\" src=\"documents/images/readme_images/body/parallel_kernels.png\" /\u003e\u003c/p\u003e\n\nConcurrent Kernels Execution on GPU \u003ca href=\"#note2\" id=\"note2ref\"\u003e\u003csup\u003e[2]\u003c/sup\u003e\u003c/a\u003e\n\n* Safe concurrent kernels\n* Performance boost\n* Execution units available\n\n\u003cp align=\"left\"\u003e\u003ca href=\"scheduler_info.md#motivation\"\u003e \u003cimg width=\"30%\" src=\"documents/images/readme_images/header/our_ongoing_work.png\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\nAims to develop a dynamic schedule management framework for soft-real-time\njobs on GPU based architectures. \n\n\u003cp align=\"center\"\u003e\u003cimg width=\"60%\" src=\"documents/images/readme_images/body/RTG-Scheduler.png\" /\u003e\u003c/p\u003e\n\nWe propose to exploit this basic idea to perform coarse grained scheduling of jobs on GCUs.\n\n\u003cp align=\"center\"\u003e\u003cimg width=\"100%\" src=\"documents/images/readme_images/body/RTG_Scheduler_block_diagram.png\" /\u003e\u003c/p\u003e\n\nOur work lays emphasis on minimal programmer involvement.\n\nA dynamic schedule management framework that is responsible for\n\n* Keeping track of current and expected GUC availability\n* Determining which kernel(s) to dispatch to the GPU at a given time\n* Determining how many GCUs to assign for a given kernel.\n\n\u003cp align=\"left\"\u003e\u003ca href=\"SRTG-Scheduler#real-time-gpu-scheduler\"\u003e\u003cimg width=\"30%\" src=\"documents/images/readme_images/header/summary.png\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n#### Advantages\n\n* GPU provides tremendous computational power under reasonable power/energy budgets\n* Our work exploits concurrent kernel execution for real-time scheduling\n* More economical than multi-GPU model\n\n#### Results\n\n* Dynamic schedule management [framework](SRTG-Scheduler#real-time-gpu-scheduler) for soft-real-time jobs\n* Support for [a-periodic](SRTG-Scheduler#real-time-gpu-scheduler) and recurring (periodic) soft-real-time tasks.\n* Smart GPU Memory Management\n\n**note:**\n\n* \u003ca id=\"note1\" href=\"#note1ref\"\u003e\u003csup\u003e[1]\u003c/sup\u003e\u003c/a\u003e [FLOPs per Cycle for CPUs, GPUs and Xeon Phis](https://www.karlrupp.net/2016/08/flops-per-cycle-for-cpus-gpus-and-xeon-phis/)\n\n* \u003ca id=\"note2\" href=\"#note2ref\"\u003e\u003csup\u003e[2]\u003c/sup\u003e\u003c/a\u003e [Concurrent soft-real-time job execution on GPUs - Page 13 \u0026 14](https://people.mpi-sws.org/~bbb/proceedings/rtas14-wip-proceedings.pdf)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiritigowda%2Fsrtg-schedule","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkiritigowda%2Fsrtg-schedule","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiritigowda%2Fsrtg-schedule/lists"}