您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

oneAPI用于大规模图计算异构加速框架设计

时间:2023-08-31 14:21:13  来源:  作者:DT Value

南开大学的李世阳、彭钰婷以《基于oneAPI大规模图计算异构加速框架设计》为题,分享了基于oneAPI设计的oneGRAPH在图计算领域带来的性能提升。

以下内容根据李世阳、彭钰婷演讲内容梳理

一、背景、挑战与动机

图计算已经在越来越多的场景中发挥重要的作用。近年来,图数据的爆炸式增长成为了明显的趋势。左下的表格展示了一些主流GPU的最大选择容量,而右边的表格是近期一项针对学术界和工业界所使用的图数据规模大小的调查结果。可以看到,双方都大量使用了上百GB乃至TB级别的大规模图数据。如此庞大的数据规模对算力和存储都提出了很高的要求。单独的CPU系统无法满足算力的需求,而GPU又没有足够的显存容量。因此,我们通常需要使用基于CPU-GPU的异构系统来解决out of memory GRAPH computing的问题。

之前的一些基于CPU-GPU的异构加速方案通常存在以下的通病。主流的out of memory的解决方案有两种:第一种是基于GRAPH partitioning的方案,第二种是基于统一虚拟内存也就是UVM的方案。右图展示了一个经典的GRAPH partitioning方案的事例。实验结果表明,在这种传统方案中,数据传输占据大部分程序运行时间,造成严重的性能瓶颈。

这个图是目前最先进的graph partition方案(subway)。他通过系列组的划分,每一轮迭代需要访问的数据尽可能减少了数据传输。而基于统一虚拟内存的方案虽然不再需要我们手动控制数据的传输,但此时程序需要花费大量时间等待GPU驱动和操作系统处理显存中的page fault。

我们在粗粒度视角下进行了进一步的观察和验证。由此,我们得到了几个重要结论:数据在迭代过程中是可以复用的,数据的Reuse distance太长导致UVM的LRU换页策略难以捕捉这样的局部性,以及不存在明显的热点区域,因此,缓存数据的选取是可以随机的。

oneAPI在这个场景中带来了三大机会。首先是它的编程模型,它非常易于上手,尤其对于C++程序员。其次,它提供了便捷的设备并发管理和内存管理机制。最后,oneAPI的跨架构移植性意味着我们在新硬件平台上不再需要重写软件。

二、OneGraph与基于oneAPI的实现

1.GPU显存的划分:

Static Region: 用于存储可能被重用的数据,其内容会在图计算迭代开始前被填充。

On Demand Region: 存储Static Region未包含但是当前迭代需要的数据。

2.控制器:

GPU端 Manager: 负责加载和计算数据,并根据需要发出Ondemand region的数据请求。

CPU端 On Demand Region Controller: 负责准备和组织On Demand Region的数据。

3.Bitmap设计:

ActiveBitmap: 标记本轮迭代需要访问的数据。

StaticBitmap: 记录已经存储在显存中的数据。

通过与操作和异或操作可以得到Static Map和On Demand Map,这些操作在GPU上并行进行,降低data lookup的overhead。

4.数据计算与传输:

利用oneAPI的设备并发管理机制,将数据计算和传输的延迟隐藏起来,通过不同的任务队列提交给CPU和GPU来实现。

三、实验效果与性能测试

实验平台: Nvidia A100 和 Intel Flex 170 GPU。

数据集: 包括四个真实世界数据集和两个人工生成的数据集。

性能衡量算法: BFS、CC、SSSP和PageRank。

性能对比:

对比对象包括 Subway (基于GRAPH partition的方案), USM (oneAPI中的统一虚拟内存解决方案) 和 Ascetic (one GRAPH的CUDA版本)。

one GRAPH 相比 Subway 和 USM 在性能上均有显著提升。

在数据传输量方面,one GRAPH的数据传输量相对低,这主要归因于Static Region的数据重用效果。

结论

oneAPI 在图计算领域展现了强大的潜力,既提供了出色的跨平台性,又没有损失性能。one GRAPH 与其CUDA版本 Ascetic 相比,只在CC算法上存在不到1%的性能损失,其他算法表现甚至更好。

这再次验证了oneAPI的优势,即提供了跨平台性,同时还能保持良好的性能,在CPU上进行扩展测试和评估。



Tags:oneAPI   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
oneAPI用于大规模图计算异构加速框架设计
南开大学的李世阳、彭钰婷以《基于oneAPI大规模图计算异构加速框架设计》为题,分享了基于oneAPI设计的oneGRAPH在图计算领域带来的性能提升。以下内容根据李世阳、彭钰婷演讲...【详细内容】
2023-08-31  Search: oneAPI  点击:(283)  评论:(0)  加入收藏
▌简易百科推荐
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(8)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(12)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(53)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(47)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(39)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(50)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(67)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(84)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(86)  评论:(0)  加入收藏
花 15 分钟把 Express.js 搞明白,全栈没有那么难
Express 是老牌的 Node.js 框架,以简单和轻量著称,几行代码就可以启动一个 HTTP 服务器。市面上主流的 Node.js 框架,如 Egg.js、Nest.js 等都与 Express 息息相关。Express 框...【详细内容】
2024-01-16  程序员成功  微信公众号  Tags:Express.js   点击:(86)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条