0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种将CUDA代码迁移到SYCL和C++的开源工具

趣科技 来源:趣科技 作者:趣科技 2022-06-10 11:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

英特尔发布了一项开源工具,该工具可通过名为SYCLomatic的项目,将代码迁移至SYCL1,这有助于开发者更轻松地将CUDA代码迁移到SYCL和C++,从而加速面向异构架构的跨架构编程。这个开源项目能让开发社区共同协作,以推动SYCL标准的采用,这是将开发者从单个厂商的封闭生态系统中解放出来的关键一步。

英特尔oneAPI专家James Reinders表示:“使用SYCL将代码迁移至C++,为代码提供了更强的ISO C++一致性,支持多家供应商以缓解供应商锁定问题,并且支持多种架构,为充分运用新的硬件创新提供灵活性。SYCLomatic是一个可实现大部分工作自动化的宝藏工具,让开发者能更多地关注定制化调优,而不是迁移代码。”

在硬件创新为计算带来多样化异构架构的同时,软件开发也已经变得越来越复杂,很难充分释放CPU和加速器的价值。如今的开发者及其团队普遍缺乏时间、金钱和资源,以适应代码的重写和测试,为这些不同的架构提升应用的性能。开发者正在寻求开放替代方案,以提升时间价值。英特尔正在提供一种更简单、更快捷的方式,让开发者进行硬件选择。

SYCL是一种基于C++的Khronos Group标准,它扩展了C++功能以支持多种架构和非共享内存的配置。为启动该项目,英特尔开源了其DPC++兼容性工具背后的技术,以进一步提升迁移能力,生成更多基于SYCL的应用。跨架构重复利用代码简化了开发工作,减少了持续维护代码所需的时间和成本。

利用带有LLVM差异化的Apache 2.0许可证,托管在GitHub上的SYCLomatic项目为开发者提供了一个社区,让他们能做出贡献并提供反馈,以进一步开放跨CPU、GPUFPGA的异构开发。

SYCLomatic协助开发者将CUDA代码迁移到SYCL,通常可以将90-95%的CUDA代码自动迁移到SYCL代码2。开发人员仅需手动编程剩余的工作,然后对特定架构进行定制化调优,达到所需的性能级别,便可完成这一过程。

研究机构及英特尔客户已成功地使用英特尔® DPC++兼容性工具,该工具采用与SYCLomatic相同的技术,能将CUDA代码迁移到多个厂商架构上的SYCL(或Data Parallel C++,oneAPI的SYCL实现)。这些案例包括斯德哥尔摩大学的GROMACS 20223、柏林祖思研究所(ZIB)的easyWave、三星Medison和Bittware(更多案例请访问oneAPI DevSummit)。许多客户也正在测试当前和即将推出的基于英特尔® Xe架构GPU的代码,包括阿贡国家实验室的极光(Aurora)超级计算机、莱布尼茨超级计算中心(LRZ)、GE医疗等。

SYCLomatic 是一个GitHub项目。GitHub门户网站拥有一个“contributing.md”指南,描述了向项目提供技术贡献的步骤,以确保最大程度的便捷。鼓励开发人员使用该工具,提供反馈并做出贡献,以推动该工具的发展。

HACC(硬件/混合加速宇宙学代码)、宇宙物理学和先进计算(anl.gov)的Steve(Esteban)Rangel表示:“CRK-HACC是一个正在开发的N体宇宙学模拟代码。为了给极光(Aurora)超级计算机做好准备,英特尔DPC++兼容性工具能让我们将20多个核心快速迁移到SYCL。由于当前版本的代码迁移工具不支持迁移到仿函数,我们编写了一个简单的clang工具来重构生成的SYCL源代码,以满足我们的需求。通过开源SYCLomatic项目,我们计划整合此前的工作,以获得更强大的解决方案,并助力让仿函数成为可用迁移选项的一部分。”

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英特尔
    +关注

    关注

    61

    文章

    10342

    浏览量

    181377
  • 代码
    +关注

    关注

    30

    文章

    4985

    浏览量

    74580
  • CUDA
    +关注

    关注

    0

    文章

    128

    浏览量

    14582
  • 开源工具
    +关注

    关注

    0

    文章

    27

    浏览量

    4797
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    2026年用Gemini镜像站硬核解决PHP与C++开发难题:调试、调优与代码生成全流程教程

    、AI为何能成为跨语言开发的“超级调试器” PHP和C++个偏重Web快速开发,个追求极致性能与系统控制,两者难点截然不同。Gemini拥有100万token上下文窗口,可以
    的头像 发表于 05-26 16:42 100次阅读
    2026年用Gemini镜像站硬核解决PHP与<b class='flag-5'>C++</b>开发难题:调试、调优与<b class='flag-5'>代码</b>生成全流程教程

    蚂蚁灵波开源LingBot-VLA真机后训练代码

    5月13日,蚂蚁集团旗下具身智能公司灵波科技宣布,全面开源其具身基座模型LingBot-VLA的真机后训练工具链。开发团队可基于这套工具链,使用自有数据LingBot-VLA快速
    的头像 发表于 05-14 10:13 864次阅读

    C++与lua联合编程

    ,实际上是在教授一种“算力握手”的艺术。在这个时代,能够用最严苛的栈平衡法则管理内存,用最低的摩擦成本联通 C++ 与 Lua 的人,早已不再是普通的代码编写者,而是深谙系统资源调配之道的“技术精算师”。这份对底层细节的掌控力,
    发表于 04-19 16:27

    keil实现cc++混合编程

    起因项目中使用到开源的模拟IIC的库,封装的比较好,但是是使用c++写的。于是将其移植到自己的项目中,主要有以下三步操作: 在工程选项中 C/
    发表于 01-26 08:58

    C语言与C++的区别及联系

    C语言和C++到底是什么关系? 首先C++C语言本来就是两不同的编程语言,但C++确实是对
    发表于 12-24 07:23

    CC++之间的联系

    控制能力,这点与C语言相似,使得它们在系统编程、嵌入式系统等领域都得到广泛应用。 3、发展历程: C++正是在C语言的基础上逐步发展起来的,C
    发表于 12-11 06:51

    C语言和C++之间的区别是什么

    区别 1、面向对象编程 (OOP): C语言是一种面向过程的语言,它强调的是通过函数任务分解为系列步骤进行执行。 C++
    发表于 12-11 06:23

    C/C++条件编译

    条件编译是一种在编译时根据条件选择性地包含或排除部分代码的处理方法。在 C/C++ 中,条件编译使用预处理指令 #ifdef、#endif、#else 和 #elif 来实现。常用的条
    发表于 12-05 06:21

    C++程序异常的处理机制

    运行代码进行分离,使得程序更加模块化;另方面,C++的异常处理可以不需要异常处理在异常发生时的同个函数,而是可以在更上层合适的位置进行处理。 下面,我们
    发表于 12-02 07:12

    无质量损失的数据迁移:Nikon SLM Solutions信赖3Dfindit企业版

    使用转换器CAD数据从个系统传输到另个系统,但这往往会导致数据的质量下降。因此,该公司决定使用3Dfindit企业版CAD数据迁移到
    发表于 11-25 10:06

    嵌入式C/C++回归测试四大最佳实践(附自动化测试工具TESSY使用教程)

    嵌入式开发中,次微小的代码改动都可能引发“蝴蝶效应”,如何守护系统的稳健?推荐专业的自动化测试工具#TESSY,源自戴姆勒-奔驰,是嵌入式C/C+
    的头像 发表于 10-31 14:21 670次阅读
    嵌入式<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>回归测试四大最佳实践(附自动化测试<b class='flag-5'>工具</b>TESSY使用教程)

    C/C++代码静态测试工具Perforce QAC 2025.3的新特性

     Perforce Validate 中 QAC 项目的相对/根路径的支持。C++ 分析也得到了增强,增加了用于检测 C++ 并发问题的新检查,并改进了实体名称和实
    的头像 发表于 10-13 18:11 821次阅读
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>代码</b>静态测试<b class='flag-5'>工具</b>Perforce QAC 2025.3的新特性

    如何在Keil中将NuMicro BSP从Arm编译器5迁移到编译器6?

    在Keil中将NuMicro BSP从Arm编译器5迁移到编译器6!
    发表于 08-20 06:29

    Perforce QAC产品简介:面向C/C++的静态代码分析工具(已通过SO 26262认证)

    Perforce QAC专为C/C++开发者打造,支持多种编码规范、功能安全标准(ISO 26262)等,广泛用于汽车、医疗、嵌入式开发领域,可帮助快速识别关键缺陷、提升代码质量、实现合规交付。
    的头像 发表于 07-10 15:57 1559次阅读
    Perforce QAC产品简介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>的静态<b class='flag-5'>代码</b>分析<b class='flag-5'>工具</b>(已通过SO 26262认证)

    适用于SystemC/C++验证的形式化解决方案

    虽然 SystemC/C++ 编程风格已使用多年,但最近出现了些特定使用模式,它们推动工程团队采用共同的设计流程。这包括抽象算法设计代码用作高层次综合 (HLS) 工具的输入,虚拟平
    的头像 发表于 06-24 11:07 1494次阅读
    适用于SystemC/<b class='flag-5'>C++</b>验证的形式化解决方案