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项目,我们计划整合此前的工作,以获得更强大的解决方案,并助力让仿函数成为可用迁移选项的一部分。”

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

    关注

    60

    文章

    9421

    浏览量

    168788
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66750
  • CUDA
    +关注

    关注

    0

    文章

    119

    浏览量

    13461
  • 开源工具
    +关注

    关注

    0

    文章

    26

    浏览量

    4392
收藏 人收藏

    评论

    相关推荐

    C/C++代码动态测试工具VectorCAST插桩功能演示#代码动态测试 #C++

    C++代码
    北汇信息POLELINK
    发布于 :2024年04月18日 11:57:45

    求助,如何C++代码从GNU移植到Tasking编译器?

    TC399 控制器支持且 CAN 编译的 C/C++ 标准库?或者您是否提供任何帮助/指导来修复移植问题? 请注意:我已经阅读了文档—— “GCC to TASKING 英飞凌AURIX-WEB 迁移指南”。 但这并不能帮助
    发表于 01-31 07:29

    navicat的数据迁移工具

    数据迁移是当今数据管理的核心任务之一。在数据迁移的过程中,我们经常面临着数据库结构不同和数据量庞大等难题。而Navicat作为一款功能强大的数据库管理工具,其数据迁移
    的头像 发表于 11-21 10:55 446次阅读

    如何将数据从MySQL迁移到Influxdb中

    如果以前是将时序数据存放在MySQL,现在为了获取更好的性能和使用可视化工具,我们需要将数据从MySQL迁移到Influxdb中。 这看起来是一个常见场景,经过一番查阅,发现了
    的头像 发表于 11-02 10:54 670次阅读

    传统企业将VMware迁移到阿里云弹性裸金属的最佳实践

    场景描述 传统企业将VMware迁移到阿里云弹性裸金属,利用云计算平台提供的弹性基础设施,降低部分运维成本和学习成本,使用其擅长的技术工具专注自身业务,实现线下业务平滑迁移上云。 解决问题 1.
    发表于 10-11 11:51 132次阅读
    传统企业将VMware<b class='flag-5'>迁移到</b>阿里云弹性裸金属的最佳实践

    用于FICON SAN结构的大型机从Brocade第5代迁移到第6/7代

    电子发烧友网站提供《用于FICON SAN结构的大型机从Brocade第5代迁移到第6/7代.pdf》资料免费下载
    发表于 09-01 14:42 0次下载
    用于FICON SAN结构的大型机从Brocade第5代<b class='flag-5'>迁移到</b>第6/7代

    171从ADS迁移到RVDS 3.0的应用笔记

    并不是个要求。 某些ARM工具特定功能已更改或已过时,需要更改这些功能。 内联汇编程序(__ASM)C编译器有个内置的内联汇编程序。 然而,ARM体系结构6和更高版本的指令集不会保
    发表于 08-30 08:17

    如何软件应用程序从ARMv5迁移到ARMv7-A/R

    本文档旨在帮助您将软件应用程序从ARMv5迁移到ARMv7。 它描述了ARMv5和ARMv7之间的区别,并解释了现有软件应用程序从ARMv5迁移到ARMv7所涉及的问题。 假设您熟悉ARMv5
    发表于 08-29 06:51

    Ampere推出全新软件迁移工具Ampere Porting Advisor

    。为此,我们正式在 Github 推出全新的 Ampere 软件迁移工具 Ampere Porting Advisor,帮助开发者简化代码迁移流程。
    的头像 发表于 08-24 10:14 1206次阅读

    从电源架构迁移到ARM的应用说明

    本文档的目的是强调那些参与软件应用程序从Power架构迁移到ARM平台的人员感兴趣的领域。 本文并不试图一种体系结构提升到另一种体系结构
    发表于 08-22 06:09

    如何将LPC84x迁移到LPC86x

    电子发烧友网站提供《如何将LPC84x迁移到LPC86x.pdf》资料免费下载
    发表于 08-16 16:56 0次下载
    如何将LPC84x<b class='flag-5'>迁移到</b>LPC86x

    如何为Arm编译Cc++代码

    C++代码翻译成机器代码的编译器。 •汇编语言源代码翻译成机器代码的汇编程序。 •
    发表于 08-02 17:28

    如何项目从Arm Compiler 5迁移到Arm Compiler 6

    按照本教程中的步骤,现有的Arm Compiler 5裸机项目迁移到Arm Compiler 6裸机项目。完成迁移后,就可以重新构建您的可执行并在DS-5提供的固定虚拟平台(FVP)模型上运行。
    发表于 08-02 14:42

    如何使用Neon intrinsic的矢量处理代码迁移到氦intrinsic

    本指南旨在帮助任何将使用霓虹灯内部函数的现有矢量处理代码迁移到氦内部函数的人。我们研究不同复杂度的霓虹灯代码示例,并研究如何将该霓虹灯代码
    发表于 08-02 07:39

    如何Mifare Classic系统迁移到Mifare Plus或Mifare Desfire?

    Desfire EVx。 我们无法次更改所有基础架构,因为它确实很大(超过 2000 个读者)。我们希望周边阅读器迁移到安全技术,并在过渡期间旧阅读器留在室内。 我听说过具有双
    发表于 05-17 07:42