littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于CUDA的GPU实时任务调度系统 GPUart

项目简介

本项目是基于CUDA的应用程序,名为GPUart,专注于嵌入式系统和集成GPU的实时任务调度。它提供轻量级的高级GPU资源管理方法,支持在GPU上进行Gang调度,还能在指令级别根据固定抢占点策略抢占内核。该系统位于GPGPU驱动栈之上,无需硬件或驱动栈扩展即可实现GPGPU内核的实时调度。

项目的主要特性和功能

  1. 实时任务调度:支持在GPU上调度矩阵乘法和Sobel滤波器等示例内核。
  2. Gang调度:实现多任务在GPU上协同执行。
  3. 抢占机制:支持指令级别的有限抢占,依据固定抢占点策略进行内核抢占。
  4. 轻量级资源管理:无需硬件或驱动栈扩展,提供轻量级高级GPU资源管理。
  5. 集成GPU优化:专注集成GPU,不涉及离散GPU和CPU间的内存传输。

安装使用步骤

环境配置

确保已安装CUDA 8.0,并配置开发环境以支持CUDA编程。

下载源码

从项目仓库下载源码文件。

编译项目

使用CUDA编译器(nvcc)编译项目中的所有源文件,例如: nvcc -o gpuart_app main.cpp GPUart/GPUart.cpp GPUart_Abstraction/GPUart_Abstraction.cpp GPUart_Scheduler/GPUart_Scheduler.cpp SW-C/MatrMul/SWC_MM.cpp SW-C/Scheduler/SWC_Scheduler.cpp SW-C/Sobel1/SWC_Sobel1.cpp SW-C/Sobel2/SWC_Sobel2.cpp

运行项目

执行生成的可执行文件,例如: ./gpuart_app

配置调度策略

根据需求配置抢占调度或非抢占调度,修改GPUart_Scheduler/GPUart_Scheduler.cpp中的相关配置行。

任务激活与调度

SW-C/Scheduler/SWC_Scheduler.cpp中配置任务的周期和偏移量,在GPUart_Scheduler/GPUart_Scheduler.cpp中指定内核的截止时间。

注意事项

  • 该项目仅支持CUDA 8.0,不支持OpenCL。
  • 专注于集成GPU,不涉及离散GPU和CPU之间的内存传输。
  • 配置调度策略时,请确保正确修改相关配置行,以符合实际需求。

版权信息

请参阅项目目录中的COPYRIGHT.txt文件以获取版权信息。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】