试图打破CUDA统治的SYCL

各式各样的加速器在当下的计算架构中越来越普遍,hpc、数据中心等高端应用开始追求更高的峰值性能,用到了专业gpu、ai加速器,而手机、嵌入式系统开始追求更高的能效,也在其soc、mcu中加入一定的嵌入式加速硬件。但与此同时,这样复杂的多厂商、多架构和多硬件生态,为编程带来了巨大的难题。但cuda作为只面向英伟达gpu的封闭软件生态,其热度却水涨船高。  
提及各大编程语言的论文数量 / 谷歌学术
在软件开发中,一个开放的标准层就是开发者产品方案的接口规范,同样的,处理器开发商们可以使用基于开放标准层的底层软件驱动创造解决方案。如此一来软件开发者们无需捆绑在特定的硬件方案上,硬件开发者的硬件不仅可以兼顾自己维护的软件,还能支持到更多的软件开发人员。而且在普及之后,开发人员的技能更加具有普适性,他们可以方便地使用自己熟悉的开发工具。
对使用开放标准的软硬件公司来说,此举可以加快产品上市时间,减少长期维护工作,而且在软件方案厂商日益剧增的当下,业界已经普遍接受了开放标准,就像risc-v一样,英特尔、amd甚至是英伟达也都对开放标准的定义做出了贡献,对于一些初创企业来说就更是如此了。
sycl出世
从市场反馈来看,开发者的需求很明显了,他们想要一个标准的编程模型,拥有标准运算库、对pytorch、tensorflow等ai框架的支持、性能分析工具,以及对多个厂商不同硬件架构的支持,而这些需求汇聚在一起,使得开放标准联盟khronos group联合旗下成员打造出了sycl这一编程语言。
sycl作为跨越cpu、gpu、fpga和ai加速器等多种架构的一致性编程语言,每个架构能单独或整合编程。sycl编程语言与其api扩展能用于不同的开发用例,比如负载加速或异构计算应用,将现有的c、c++或其他加速器语言代码转换成sycl代码。  
sycl的支持情况 / khronos group
在不同厂商的支持下,sycl的实施方式有多种,他们增加了对opencl以外不同加速api后端的支持,比如codeplay的computecpp、英特尔的dpc++、amd的hipsycl以及xilinx的trisycl等。
英特尔的sycl之路
英特尔对于sycl的重视可以说显而易见了,自从宣布转向xpu+oneapi的路线之后,英特尔就已经与sycl深度绑定了。不仅微软、谷歌等巨头宣布支持oneapi,英特尔也和中科院计算所在内的大型研究所、国家实验室和大学合作成立了oneapi卓越中心,借助他们的oneapi开源代码,进一步扩展oneapi产品与规范。
oneapi的核心则是其编程语言dpc++,英特尔的dpc++可以说是sycl的超集,不仅包含了sycl标准,还包含一些功能扩展,比如统一共享内存等,不过目前其中不少扩展也已经并入了sycl新版规范中。
不过sycl远不仅是为了方便英特尔建设其跨架构的软件生态,而是为了打破cuda的统治,打造一个更加开放的软硬件生态,这点从英特尔在oneapi的开发动向就能看出。
此前英特尔对于cuda并没有任何动作,反倒是其竞争对手amd推出了hip,帮助开发者将cuda代码移植至amd平台上,毕竟amd还得发展gpu生态。但随着英特尔的硬件路线已经不单单是cpu,而是cpu、gpu、fpga、ipu和ai加速器的多硬件异构生态,这时候打造一个cuda之外的软件生态是提升其产品竞争力的必经之路了。
为了更好实现对cuda代码的移植,英特尔推出了dpc++兼容性工具(dpct),目前版本的dpct已经可以将90%到95%的cuda代码转换成sycl。不过这只是一个理想范围,具体数值还是取决于代码对应的工作负载。对于简单的cuda程序来说,完成dpc++的移植只需要对cuda源文件运行这一转换工具即可,相对复杂的cuda程序还是需要一定的手动编程优化。
今年6月,英特尔公布消息,决定收购codeplay公司。要说对sycl的研究,除了英特尔以外,最深入的当属codeplay了,毕竟就连sycl工作组的主席也是来自codeplay的杰出工程师michael wong。codeplay不仅提供了多种处理器上sycl的支持,也支持将cuda代码移植为sycl,同时保证sycl代码在英伟达gpu上的继续运行,还能调用一些cuda库。
codeplay的方案支持覆盖英特尔、amd、英伟达的处理器,而且他们也开始了对汽车adas(瑞萨r-car)、边缘计算设备(imagination powervr)与risc-v处理器(晶心科技nx27v)的支持开发工作。后三者恰好是sycl当前未曾开拓的市场,但却是英特尔正在发力的三大市场,加上codeplay本身在hpc、ai上的软件开发实力,如此看来,英特尔收购codeplay完全符合其战略目标。
结语
尽管sycl的构想是好的,其发展路线也是倾向于开发者,但这并不代表着就一定能取代cuda的位置,毕竟sycl其实也才诞生没多久,与cuda、opencl或openmp相比生态发展还没有成熟。再者就是统一各种硬件的编程并没有那么简单,正如英伟达ceo黄仁勋曾经提出的质疑:时间会揭晓一个编程方法是否能兼容七种不同的处理器,至少历史上从未出现过。

如何测试主轴电机绕组是否开路或短路 如何测试有故障问题的直流电机
NTC负温度系数热敏电阻专业术语
鸿利智汇与国星光电分别获照明系统与LED专利权 将增强公司核心竞争力
HC18 大电流热保护器在电动工具的应用
200G QSFP-DD PSM8光模块具体参数的详细说明
试图打破CUDA统治的SYCL
基于FPGA的硬件引脚分配设计总结
威盛电子推出新一代移动集成图形芯片组
手持示波表的前端模拟信号调理电路
三星 Next Galaxy 旗舰手机超前预约正式开启,截至时间为正式发布
长安新能源迎来四位“圣诞老人” 未来计划顺利转型
Nordic为“PXN-K6游戏键盘中枢”提供核心处理和无线连接能力
联想发布全球首台可折叠屏电脑的原型机ThinkPadX1 并宣布2020年上市
选择“正激”还是“反激”?这份宝典请收好~
球磨机中空轴磨损要如何修复
黄山2号芯片已完成整体设计 未来将用于华米的智能可穿戴产品
材料科学和工程学方面面临的挑战
Allegro中导入Outline的方法步骤
特斯拉计划在德国柏林批量生产性能更佳的新型电池
关于优化法律法规 推动智能网联汽车商用化落地的建议