首页 > 课题申请 > 课题详情
基于KUPL的kokkos编程框架鲲鹏后端的实现与优化申请进行中
基于KUPL的kokkos编程框架鲲鹏后端的实现与优化
在HPC领域,编程模型一直是加速应用,使能多核硬件特性的主要手段。编程模型能够极大的提高并行程序的编写效率,快速发挥硬件的能力。本课题拟面向鲲鹏平台,基于kokkos编程框架新增KUPL运行时后端,存量应用或者新开发者不需要去学习KUPL编程框架,只需要使用标准的kokkos编程接口即能无感享受到KUPL在运行时层面基于鲲鹏带来的性能优势,提升程序性能。
  • 项目编码: 26Y1001
  • 目标软件: kokkos/kupl/lammps
研究内容

本课题围绕鲲鹏 CPU 平台,基于KUPL加速库为kokkos编程模型新增鲲鹏后端,以直接调用KUPL API的路径对接KUPL运行时,覆盖内存管理,算子并行,任务调度等模块对接等工作。

1) 算子内并行语义对接。针对CPU平台使用最广泛的多线程并行语义paralle_for实现与KUPL实现对接,覆盖包括多种规约操作,算子内任务切分等模式的对接,实现算子内并行统一使用KUPL线程模块,实现统一的调度与执行,避免多编程模型共存时的处理核资源抢占问题。

2) 任务调度并行语义对接。Kokkos提供了task调度语义,对比与传统的OpenMP,KUPL同样拥有task调度语义,且同时提供包括静态图在内的图定义方式,本研究内容是通过kupl的task相关API实现与kokkos对应API对接,以此复用kupl在任务调度方面的能力,同时可以定制化开发kupl的后端调度策略,进一步提高kokkos在鲲鹏平台的性能表现。

3) 内存管理模块对接。KUPL针对鲲鹏平台提供了高性能内存申请接口,特别的针对鲲鹏专业版,提供了大容量内存,以及高带宽内存两种内存截止的内存申请接口,kokkos编程框架同样拥有内存管理能力,本研究模块目的对接KUPL的相关内存管理接口,扩展kokkos在鲲鹏平台的适配能力,提高适用面。

4) 系统优化与集成验证。对包括内存管理,任务调度等关键特性进行统一的集成,并使用典型的kokkos应用进行验证,如LAMMPS应用,为典型的分子动力学模拟软件,其有kokkos算子实现后端,本研究内容目标通过kokkos与KUPL对接,间接使LAMMPS使能KUPL运行时后端,提高整体执行性能。

关键技术

本需求的关键技术围绕kokkos对外提供的并行语义展开,从架构上插拔kupl后端同时,尽可能的使能kupl在线程并行,任务调度,内存管理上的能力。

 

可插拔的KUPL后端框架设计,首先第一个关键技术需要设计一套符合kokkos多后端架构的框架设计,实现KUPL能够作为平等的与OpenMP,cuda等其他后端插拔到kokkos的实现中,不破坏原有架构,且对未来的其他版本演进适配兼容性。

算子并行对接,kokkos自带多种算子内并行方案,除了标准的规约与for循环拆分逻辑外,也提供了许多特殊的分块逻辑,本关键技术需要适配kokkos的各类算子并行模块,使用kupl统一的线程后端执行。

任务调度模块使能技术,需要使能kupl的动,静态图的关键能力与kokkos对接,实现kokkos task相关语义在鲲鹏平台的执行,考虑到鲲鹏平台同构等特殊性,需要配套的进行kupl调度策略的相关修改,提供对应的调度策略与适配层实现

内存管理模块对接,kokkos中的多级内存进行识别并与kupl中的不同内存介质进行匹配,同时kupl也提供包括异步搬运等差异化的内存管理接口,可以实现包括异步内存换入换出等操作,本关键技术是使能kupl相关能力,实现对kokkos中内存管理功能的平台适配。

BoostCore 组件映射。

 

本课题涉及的关键技术与鲲鹏 BoostCore 组件映射如下。

 

技术方向 相关组件 主要作用 官方链接
Kokkos后端框架设计 Kokkos 架构合理的可插拔后端逻辑,长期版本适配 https://github.com/kokkos/kokkos
算子内并行技术 Kupl-mt 提供基础的算子内并行语义实现及线程管理 https://gitcode.com/kunpengcompute/kupl
任务调度技术 Kupl-task 提供task相关调度能力,覆盖动态图,静态图 https://gitcode.com/kunpengcompute/kupl
内存管理技术 Kupl-memory 提供针对鲲鹏平台的多级内存管理能力 https://gitcode.com/kunpengcompute/kupl

 

目标软件

本需求涉及的软件包括 kokkos,kupl,以及用以进行功能验证的lammps应用,通过kupl原生对接kokkos,发挥存量kokkos应用直接使能kupl运行时性能优势,扩展kupl生态。

 

预期成果和关键验收指标

1、预期成果:完成基于KUPL后端的kokkos编程框架在鲲鹏平台的适配与优化,实现kokkos编程框架对接KUPL运行时系统,对使用kokkos编写程序直接使能kupl多线程管理特性,实现相关用户无感使能kupl,提升应用性能。

 

2、关键指标:

1)基础目标:完成kokkos编程模型新增kupl后端,使用kupl API原生对接kokkos各功能模块,对接后功能用例测试通过,lammps kokkos分支编译运行功能正确。

2)挑战目标:针对kokkos的使用场景呢,对kupl进行调度策略或其他模块的增量开发,提升鲲鹏平台上对应程序的性能,挑战lammps性能对比原有实现性能提升10%。

 

贡献内容与代码、建议反馈 、技术合作 、加入HPC DG
  • 邮箱:

    hpcdg@gccorg.com

  • 电话:

    18675646939

  • 国际科技园B座7层全球计算联盟GCC

    (深圳办公室)广东省深圳市福田保税区槟榔道3号深港

    (北京办公室)北京市东城区北三环东路36号A座706

携手共建GCC HPC开源生态
  • 官方微信公众号

  • 领英官方账号

携手共建GCC HPC开源生态
  • 官方微信公众号

  • 领英官方账号

AI 助手

即将上线敬请期待

请登录后查看

本平台使用与GCC官网及旗下相关平台通用账号,欢迎使用GCC生态账号!

登 录 注 册

您的申请已提交

感谢您的支持,我们会尽快处理您的申请