项目简介
本项目是基于CUDA的应用程序,名为GPUart,专注于嵌入式系统和集成GPU的实时任务调度。它提供轻量级的高级GPU资源管理方法,支持在GPU上进行Gang调度,还能在指令级别根据固定抢占点策略抢占内核。该系统位于GPGPU驱动栈之上,无需硬件或驱动栈扩展即可实现GPGPU内核的实时调度。
项目的主要特性和功能
- 实时任务调度:支持在GPU上调度矩阵乘法和Sobel滤波器等示例内核。
- Gang调度:实现多任务在GPU上协同执行。
- 抢占机制:支持指令级别的有限抢占,依据固定抢占点策略进行内核抢占。
- 轻量级资源管理:无需硬件或驱动栈扩展,提供轻量级高级GPU资源管理。
- 集成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】