近年来,随着人工智能、大数据和高性能计算的发展,异构计算设备在计算领域中的应用日益广泛。多种类型的加速器如GPU、NPU、ASIC、FPGA等,在不同领域提供了强大的计算能力。然而,面对这些种类繁多、性能差异显著的计算单元,如何高效调度和管理它们的计算任务成为了技术瓶颈。XSched应运而生,它是一种针对多样化XPU设备的预emptive(抢占式)调度框架,致力于实现多任务间的高效调度,并支持不同厂家、平台和架构的异构加速器。相比传统的单一平台调度方案,XSched通过统一的接口和灵活的调度策略,为开发者和系统管理员提供了极大的便利和强大功能。XSched的核心优势之一是其高度的透明性。
它通过拦截和重定向XPU驱动的API调用,使得现有应用无需改动代码即可受益于XSched的调度机制。这极大降低了部署门槛,让更多应用程序能够享用先进的调度功能,而无需复杂的代码适配。XSched的设计基于预emptive调度思想,意味着它可以在任务执行过程中动态挂起或恢复某些XPU的任务,从而实现资源的更细粒度管理。相比传统的非抢占式调度,这种方式能有效避免任务饥饿和资源浪费,提升整体系统的吞吐率和响应速度。框架内部采用了一个多层次的硬件模型,将复杂的XPU结构抽象为多个调度级别,这种分层设计兼顾了性能和兼容性,能够适配当前主流加速器以及未来新兴设备。技术架构方面,XSched由四个关键组件构成。
XPU Shim负责拦截驱动API调用并将任务注入预emptible的命令队列XQueue;XPreempt模块实现了对XQueue的抢占操作监控和调度事件管理;XAL作为硬件适配层,负责调用底层驱动API完成实际操作;XScheduler作为调度中心守护进程,基于实时状态做出调度决策,支持灵活多变的调度策略。XSched不仅支持多种硬件,还兼容多样操作系统环境。目前已实现了对NVIDIA Ampere及Volta GPU、AMD GPU、Intel GPU和集成NPU、华为昇腾NPU等多平台的支持,覆盖CUDA、HIP、LevelZero、OpenCL、AscendCL等主流计算平台。开发团队不断扩展更多设备和更深层次抢占功能,持续加强跨平台的调度能力。领域应用层面,XSched在人工智能推理、视频处理、科学计算等场景体现出显著优势。比方说,在AI视频会议应用中,XSched通过优先级调度和抢占机制有效降低视频卡顿,提高了实时交互体验。
此外,它还被成功集成到多个大规模语言模型(LLM)推理系统中,通过合理管理多任务并发实现系统整体吞吐量的显著提升。XSched支持静态与动态调度策略,既可以通过环境变量实现完全透明的无需修改应用的方式使用,也允许开发者直接调用底层API,结合业务逻辑自定义复杂调度需求。调度策略本身具有模块化设计,开发者可灵活替换或新增策略满足行业特定需求,比如基于优先级、最小松弛时间优先或活动窗口策略等。未来,XSched计划扩展对更多操作系统如MacOS的支持,提供系统守护进程安装方案,完善与主流AI推理框架的集成,同时提升性能优化深度。社区贡献开放,鼓励开发者开发新硬件适配、调度算法或应用集成,推动异构计算任务调度领域的创新发展。总结来看,XSched是一个创新、高效且灵活的跨平台多任务预emptive调度框架,解决了异构XPU资源管理中的关键挑战。
在异构计算日益普及的时代,XSched的诞生为多任务调度提供了一套通用且高性能的解决方案,助力复杂计算场景下硬件资源的最大化利用和响应时间的最小化。随着其持续发展和完善,XSched有望成为异构计算生态的重要基石,对推动人工智能、大数据分析、图形渲染等领域具有积极而深远的影响。 。