[论文笔记] Atos: A Task-Parallel GPU Scheduler for Graph Analytics

news2024/9/28 13:21:08

Atos: A Task-Parallel GPU Scheduler for Graph Analytics

Atos: 用于图分析的任务并行 GPU 调度程序 [Paper] [Slides]
ICPP’22

摘要

提出了 Atos, 一个特别针对动态不规则应用的任务并行 GPU 动态调度框架.

  • 支持消除依赖关系的应用的任务并行公式来暴露额外的并发性
  • 除了数据并行负载平衡之外, 提供隐式任务并行负载均衡
  • 允许用户控制内核策略和任务并行粒度来适配不同用例

1 介绍

批量同步并行(Bulk-synchronous parallel, BSP)编程非常适合静态调度的、规则的问题; 而一些不规则的问题自然要使用基于任务的编程模型.
本文考虑非常细粒度的任务分配问题, 聚合一组相似的应用级别的任务来构成数据并行的 GPU 任务.
Gunrock 等类似 GPU 框架, 图遍历时的每个边界结点(frontier)在 BSP 模型中都作为的单独 GPU 内核启动; 可能导致并行性不足、完成时间不均匀、小边界结点集造成的过大内核启动开销.

为解决上述问题, 本文提出了 Atos, 一个 GPU 任务调度框架:

  • 通过提供持续和非持续任务调度程序来支持开销不同的边.
    持续调度程序(persistent scheduler): 一个持续运行的 GPU 内核, 以最小化启动开销
  • 允许用户通过选择 worker 大小(每个 worker 中的 GPU 线程数)和每个任务中的项目数来权衡任务和数据并行性
  • 使用单个共享任务队列
  • 支持跨边界结点集的异步执行, 以最大化可用的并行性; 同时尽可能保留跨边界结点集的顺序, 从而最小化过度工作.

文章贡献:

  • 开发了一个通用 GPU 任务并行框架
  • 展示了混合任务和数据并行对细粒度并行应用的益处
  • 将可消除同步的应用识别为 GPU 任务并行框架加速的有力候选者
  • 对应用程序性能的详细分析

2 动态、不规则的应用模式

在这里插入图片描述
内部循环可被展开, 同时可以放宽外部循环迭代.
应用程序表现的动态、不规则并行性:

  • 在外部循环边界结点集上的任务数量不同
  • 每个内部循环任务的开销可能不同
  • 总工作量可能不同

不特定于图算法.

2.1 动态、不规则问题的性能挑战

小边界结点集问题:

  1. 固定开销(全局同步屏障的开销加上内核启动开销)主导了整个处理开销; GPU 花费大量时间配置或等待计算, 而非执行计算.
  2. 小边界结点集不足以让 GPU 充满工作, 而使处理单元闲置

负载不均:
由于工作负载是动态产生的, 因此静态计算工作分配不可行.
最佳的负载均衡技术与问题相关, 对于一个固定问题也可能与输入相关.

并发机会的缺失:
放宽跨边界结点集顺序:

  1. 公式为嵌套循环的问题, 但其计算可以在 BSP 迭代中重新排序.
  2. 推测在后续迭代的工作不依赖于先前迭代的工作, 并在推测不正确时修复错误或重新计算.

3 我们的任务并行编程模型和设计空间

  • worker: 一个或一组 GPU 线程
  • 任务(task): 在系统中作为单元进行调度的一项或多项工作
  • 应用程序函数(application function) f ( ) f() f(): 处理每个任务的代码

在这里插入图片描述

  • 一次内核调用, 避免多次启动小内核
  • 任务并行是隐式负载均衡的, 因为 worker 可以运行独立的任务并保存忙碌即使任务需要不同的工作量.
  • 没有全局同步, 而由编程者控制工作调度, 这允许更灵活的依赖关系并带来更多并发机会.

管理任务依赖关系
Atos 编程模型中: 任务(运行在一个 worker 中)同步执行, 不同任务(跨 worker)异步执行.
只有任务的依赖关系满足时, 任务才被添加到任务队列.
给编程者带来负担, 但总体优势时支持动态生成的基于任务的计算.

四个关键设计选择:

  • 消除屏障(relaxing barrier)
  • worker 大小
  • 数据并行 vs 任务并行
  • 内核策略

3.1 消除屏障

消除屏障并放宽外部循环的依赖关系, 同时计算出正确结果的方法:

  • 推测两个任务可同时计算或不分先后完成, 且不改变计算正确性.
    推测正确则暴露更多并发性; 推测错误则需要开销或大或小的修正.
  • 问题的公式在乱序计算项目时具有鲁棒性. Dijkstra 的问题不关心不确定性(Dijkstra’s don’t care non-determinism).

如果消除全局屏障而增加的并发性带来的性能提升超过产生的额外开销(错误推测、修复错误推测), 就可实现性能提升.
Atos 允许即使违反了依赖关系的计算提交, 并只在之后修复错误.

3.2 Worker 大小

假依赖(false dependency): 数据项的所有依赖都已满足, 但因为同一任务中的另一数据项具有未满足的依赖而不能处理的情况.
通过将大任务分解为许多较小任务暴露更多并行性来减少这种假依赖.
worker 应该更小.

Atos 提供线程大小、warp 大小以及 CTA(Cooperative Thread Arrays, 协作线程组) 大小的 worker, 以支持不同大小和同步要求的任务.

3.3 数据与任务之间的平衡

Atos 中 worker 不直接相互同步, 允许 worker 在可用时立即处理可用的工作项(“隐式任务并行负载均衡”).
Atos 支持两个大于线程的 worker 大小(warp 和 CTA), 并为编程者提供了在每个 warp 大小或 CTA 大小的任务中利用数据并行的能力.
不同 worker 异步执行任务, 单个 worker 自身同步执行.

3.4 内核策略

持续内核(persistent kernel): 解耦数据大小和启动的 CTA. 仅启动足够的 CTA 来填充 GPU, 这些 CTA 驻留在内核中并运行映射到任务并行模型的循环.
持续内核的优点: 减少内核启动开销和 CPU/GPU 通信; 减少了 CPU 的参与, 理由编程者编写 GPU 逻辑.
持久内核的缺点: GPU worker 并发地从共享队列中取任务, 需要原子操作; 比独立内核(discrete kernel)更高的寄存器使用(需要额外的寄存器维护队列循环).

如果独立内核遭受巨大内核开销(小边界结点集问题), 则持续内核可能是首选; 否则, 选择独立内核会更好更简单.

4 框架 API

在这里插入图片描述
launch*: 启动重复从任务队列拿取任务的 worker

  • f1: 每个 worker 应用于拿取的任务的函数
  • f2: worker 拿取任务失败时运行的函数
  • numThread * numBlock 不能超过基于应用的寄存器和共享内存使用可以并发驻留在 GPU 上的最大线程数(默认设置为最大值, 可被用户覆盖)
  • launchCTAnumThread 决定任务和数据并行之间的权衡
  • FETCH_SIZE: 构成由 worker 从队列拿取的一个任务的数据项的数量.
    增加(减少) FETCH_SIZE 将减少(增加)其他 worker 的可用任务数量, 但会增加(减少)自身数据并行性.

warp 粒度的推测 BFS 示例:
在这里插入图片描述

5 三个案例研究

5.1 广度优先搜索

在这里插入图片描述
在这里插入图片描述

推测 BFS 算法 :

  • 消除了外部循环的屏障约束
  • 有一个动态的边界结点集; 许多独立的 CUDA worker 异步地向边界结点集中放入或拿取结点.
  • 由于乱序迭代可能需要多次访问结点才能找到最短路径, 因此可能增加额外工作

5.2 PageRank

在这里插入图片描述
在这里插入图片描述
异步 PageRank 算法:

  • 移除了全局同步, 并将两个内核融合
  • CUDA worker 异步地从队列中拿取结点

5.3 图着色

在这里插入图片描述
在这里插入图片描述
异步推测图着色算法:

  • 融合了两个内核
  • 使用结点 ID 的符号区分颜色分配任务和冲突检测任务
  • 在两个内核之间没有强制执行全局屏障

6 实验与分析

性能: Table 1
]

三个算法的吞吐量和用时: Figure 1, Figure 2, Figure 3
工作负载: Table 4
worker 大小和任务与数据并行负载平衡之间的权衡: Figure 4


笔者总结

本文的核心在于提出了一个任务并行 GPU 调度框架. 该框架基于任务并行, 使用单个共享任务队列, 允许用户通过选择 worker 大小和每个任务中的项目数 (负载均衡); 支持持续内核, 以及消除全局同步屏障的跨边界结点集的异步执行 (针对小边界结点集).
Atos 属于单机 GPU 图计算框架.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/637126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MacBook苹果笔记本电脑卡顿怎么解决?

MacBook使用时间久了之后很容易出现卡顿的问题。那么出现卡顿的原因有哪些呢?MacBook卡顿怎么处理呢?下面为大家介绍几种可能的解决方案。虽然mac系统相对来说比较稳定,但遇到软件崩溃的情况也会突然卡顿而无法使用。那么,遇上mac…

C#运行程序修改数据后数据表不做更新【已解决】

前言 近日,在使用C#连接数据库的时候,对数据库中的表做更新后,在当前启动项目中去显示表数据时虽然会发生一个更新,但是在结束程序运行后再去观察数据表中的记录时发现并没有发生一个变化,在重复尝试了好几次后还是同样…

【Linux】中不小心误卸载了rpm命令如何恢复?

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录 问题复现问题解决方案补全 whereis r…

Mac电脑把位图转换成矢量图的软件

Super Vectorizer for Mac是一款强大的位图转换工具,运行在Mac OS平台,可以轻松将数位图转换为矢量图。 矢量图以其放大后图像不会失真的优点,在社会各处的使用范围越来越广,但是网络上找到的图片又往往是数位图,这时…

【APP Debug抓包工具】Stream - Network Debug Tool

【APP Debug工具】 Stream - Network Debug Tool

Flutter进阶篇-Local Key和Global Key

简介: key是widget、element和semanticsNode的唯一标识,同一个parent下的所有element的key不能重复,但是在特定条件下可以在不同parent下使用相同的key,比如page1和page2都可以使用ValueKey(1) 。 常用key的UML关系图如上,整体上…

阿里云安装2019版sql server服务

1、添加 Microsoft 的 yum 存储库 [rootiZ22312ginudnbnifn438Z ~]# curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo 这里地址一定要选择https://packages.microsoft.com/config/rhel/7/mssql-server-2019…

华为OD机试真题 JavaScript 实现【记票统计】【牛客练习题】

一、题目描述 请实现一个计票统计系统。你会收到很多投票,其中有合法的也有不合法的,请统计每个候选人得票的数量以及不合法的票数。 (注:不合法的投票指的是投票的名字不存在n个候选人的名字中!!&#x…

JavaScript DOM

1、DOM介绍 DOM(Document Object Model):文档对象模型。 将 HTML 文档的各个组成部分,封装为对象。借助这些对象,可以对 HTML 文档进行增删改查的动态操作。 1.1、Element元素的获取操作 具体方法 方法名说明getElementById (id 属性值)根…

原因分析必知必会的十大要点

原因分析是对选定的现象进行全面深入的研究,找到现象背后的真正原因与深层次原因,然后采取合适的措施纠正问题、预防问题。如果没有找到真正的根因就采取措施,往往事倍功半,浪费了投入。那么在原因分析时,有哪些成功要…

adb 导入导出安卓设备里面的apk和文件

安卓设备上导出apk到电脑 : 第一条指令查:adb shell pm list package -3 //列出所有非系统三方应用如下 package:com.sangfor.vpn.client.phonepackage:com.spd.mdm.other.funcpackage:com.supcon.supplant第二条指令查路径:adb shell pm pa…

容器(第七篇)docker-consul

consul服务器: 1. 建立 Consul 服务 mkdir /opt/consul cp consul_0.9.2_linux_amd64.zip /opt/consul cd /opt/consul unzip consul_0.9.2_linux_amd64.zip mv consul /usr/local/bin/ //设置代理,在后台启动 consul 服务端 consul agent \ -server \…

python安装后的几个默认目录问题

python.exe位置 C:\Users\dao\AppData\Local\Programs\Python\Python311 pip默认安装的文件位置 C:\Users\dao\AppData\Local\Programs\Python\Python311\Lib\site-packages

51单片机数码管秒表仿真设计详解

51单片机数码管秒表仿真 功能说明&#xff1a; 1、4位数码管显示 2、开始暂停清零按钮控制 3、51最小单片机系统电路 4、计时功能&#xff0c;0到99.99秒计时 运行效果 #include<reg52.h>#define uchar unsigned char #define uint unsigned intuchar code Tab0[] …

山西电力市场日前价格预测【2023-06-13】

日前价格预测 预测明日&#xff08;2023-06-13&#xff09;山西电力市场全天平均日前电价为383.16元/MWh。其中&#xff0c;最高日前电价为621.63元/MWh&#xff0c;预计出现在20: 45。最低日前电价为249.69元/MWh&#xff0c;预计出现在12: 45。 以上预测仅供学习参考&#x…

京东购物车分页方案探索和落地 | 京东云技术团队

随着京东购物车应用场景的丰富化和加车渠道的多元化&#xff0c;京东购物车的商品容量从2015年至今一直在逐步增加。 2015年京东购物车由80件扩容到120件&#xff1b;2018年由120件扩容到150件&#xff1b;2020年由150件扩容到180件&#xff1b;2021年京东PLUS会员扩容到了220…

Q1净亏损1.35亿元,4G增长乏力「困扰」车规通讯模组龙头

“汽车前装从4G到5G的切换需要一定的时间&#xff0c;现阶段&#xff0c;5G的价格更高&#xff0c;国内客户从4G向5G的转换会受到一些短期影响。”这是车载通讯模组市场龙头企业—移远通信在近日投资者互动上的公开表态。 4G渗透率趋于稳定&#xff0c;5G增速不及预期&#xff…

SSH科普

参考来源&#xff1a;https://zhuanlan.zhihu.com/p/323322650 目录 1. 什么是SSH&#xff1f;2. SSH登录原理3. SSH基本用法4. SSH远程登录实例5. SSH端口转发1. 转发的参数2. 本地转发3. 远程转发 6. SSH的远程操作7. SSH的本地转发8. SSH的远程转发利用远程转发&#xff0c…

国内唯一!腾讯入选全球零信任厂商全景图

近日&#xff0c;国际权威机构Forrester发布《The Zero Trust Platforms Landscape, Q2 2023》&#xff08;以下简称“报告”&#xff09;&#xff0c;对全球29家零信任方案供应商进行了综合性评估。腾讯凭借iOA零信任安全解决方案入选报告&#xff0c;成为了国内唯一入选的零信…

ChatGPT 未来会对游戏行业带来哪些影响?

ChatGPT的出现&#xff0c;为整个游戏行业带来了新的思考。 ChatGPT是由微软发布的一个大型语言模型&#xff0c;在被训练之后能够进行对话式文本生成&#xff0c;目前已在多个领域取得了不小的进展&#xff0c;包括聊天机器人、智能客服等。 作为一款大型语言模型&#xff0c…