申请进行中1) CUDA 特征盘点与可转换边界
扫描验收源码,形成 CUDA 语言特性、运行时 API、库调用、编译选项、核函数及调用点清单,并标注支持等级与转换策略。应显式指出不能通过自动转换翻译成C OpenMP的特性。
明确自动转换与人工适配的边界:验收范围内的 CUDA 翻译单元不得通过手工改写冒充自动转换;允许的适配层、配置文件和构建脚本须纳入白名单。
2) 并行模型与内存模型转换
研究将 CUDA 的大规模线程并行映射为 OpenMP 线程并行/循环并行的方法,包括工作划分、索引线性化、线程私有变量、共享数据、归约、原子更新、同步屏障以及跨 kernel 的数据生命周期管理。对于异步流和事件,应优先保证语义正确;无法安全并行化时可采用可追踪的串行化策略。
3) CUDA 运行时与加速库替代
建立轻量级兼容/适配层,将验收范围内的设备内存申请与释放、主机/设备拷贝、内存初始化、错误查询、同步、计时和设备属性接口映射到标准 C、POSIX、OpenMP 或目标平台能力。对 SPONGE、Rodinia 实际使用的 cuBLAS、cuFFT 等库接口,采用 OpenBLAS、FFTW 或双方确认的等价 CPU 实现进行替代,并在方案设计文档中列明数值和性能影响。
4) 正确性验证与回归测试
以 SPONGE、Rodinia 作为验收程序,对自动转换生成的 C OpenMP 代码进行工程编译和运行验证。正确性验证与回归测试以在指定平台上完整跑通SPONGE、Rodinia 自带用例为主要判据,并记录转换、编译和运行过程,确保验收用例能够稳定、可重复执行。
1) 提供面向 CUDA 编程框架的自动转换能力,实现 CUDA 源程序的分析、转换和工程处理,生成可在指定平台编译运行的 C OpenMP 程序。
2) 提供转换后程序运行所需的配套支撑,包括数学库和运行时库。数学库用于提供转换后程序所需的基础数学计算能力;运行时库用于支撑转换后 C OpenMP 程序在 指定平台上的编译和运行。数学库及运行时库的具体架构、接口设计和实现方式由申请人在技术方案中说明。
本需求涉及的软件包括 CUDA 到 C OpenMP 自动转换套件、CUDA 运行时及加速库适配层,以及作为验收程序的 SPONGE、Rodinia。目标是在 指定平台上完成 CUDA 源码特征分析、并行语义映射、运行时接口替代、C OpenMP 代码生成、工程编译和样例验证,形成可部署、可评测、可复用的 HPC 程序自动迁移工具链,进一步完善软件生态。
| 阶段 | 工作内容 |
| 第一阶段:原型设计&核心实现 | 完成总体架构设计、核心语义映射和最小转换原型。实现核函数、线程索引、内存、同步、原子、运行时适配,能跑通Rodinia测试用例。 |
| 第二阶段:工程集成 | 实现批量转换、构建配置生成、库替代,能接入SPONGE并跑通自带测试用例。 |
| 第三阶段:验证优化 & 交付验收 |
跑通样例,执行结果比对、稳定性回归和必要优化。 完善文档、源码、测试与部署说明;执行正式验收并归档 |
AI 助手
您的申请已提交
感谢您的支持,我们会尽快处理您的申请