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

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

3天内不再提示

深入剖析多线程计算平台的性能模型

Linux阅码场 来源:GPU and Computing 作者:GPUComputing 2021-06-28 16:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在以前的文章里,笔者谈到单核CPU无论在PC端还是服务器上基本上已经退出历史舞台,目前主流的计算平台是使用多核(multiple cores)的CPU以及众核(many cores)的GPU。另外处理器与内存访问速度差距也不断增大,为克服访存瓶颈主要采用两种方法。

其中多核CPU与单核CPU都是利用Cache来掩盖访问系统内存的延迟,以减轻访存带宽的压力,其芯片的较大面积也都贡献给Cache。在另一端,GPU通过同时运行很多简单的线程,不使用或者只利用相对较小的Cache。

而主要通过线程间的并行(Thread Level Parallelism, TLP)来隐藏内存访问延迟,当一部分线程因为访存停滞的时候,另一部分线程会接着执行,使得处理单元不会空闲下来。

目前的异构计算平台同时采用这两种截然不同的架构,使得性能预测和优化都不太容易,面对一个给定的计算负载,我们应该如何分发能够达到性能最佳?对芯片架构师而言,在面积受限的芯片上,怎样合理部署处理单元、Register File和Cache等等也是让人挠头的事情。

希望能够为理解优化性能提供参考,论文作者定义了一个统一仿真模型可以容纳延展这两种不同特点的架构设计。这个模型对应一个想象的混合计算平台,该平台由很多简单的处理单元以及较大的共享缓存构成,通过灵活配置一系列参数,包括处理单元个数、缓存大小以及缓存和内存的访问延迟等等,可以观察不同参数变化对计算性能的影响。

为保持模型简单,论文假设所有线程相互不共享数据且系统内存带宽足够大。如下图所示,作者发现,当线程数量较少的时候,随着线程数量增加,性能开始提升,而当线程数量到达转折点,Cache不能够容纳所有线程的工作集的时候,性能反而下降。

之后,随着线程数量越来越多,由于有足够的线程来掩盖Cache访问不命中带来内存访问延迟,性能又接着上升,直达到平台可获得的最大性能。我们可以认为MC Region对应多核CPU的情形,而MT Region自然对应有超多线程的GPU,MC Region和MT Region之间的性能波谷区域在我们的架构设计和程序优化中都是要努力避免的。

以下我们具体推导下参数曲线对应的公式,下表列出计算模型涉及的参数,左边是平台相关的,右边跟运算任务有关。

公式(1)为考虑Cache命中率的线程平均访问内存所需要的时钟数。

6876e088-d77a-11eb-9e57-12bb97331649.png

这就是说,线程每运行1/rm条指令,就会因为访存停滞tavg时钟,如果没有别的线程替换进来,对应的处理单元就会处于空闲状态,要让该处理单元充分利用,额外需要的线程数为tavg/(CPIexe/rm)。所以要让整个计算平台满负荷运转,总共需要的线程数量为

NPE * (1 +tavg/(CPIexe/rm))。给定有n个线程的计算任务,计算平台的利用率η可以计算如公式(2)。

68821840-d77a-11eb-9e57-12bb97331649.png

在η=1的情况下,再添加多余的线程于性能无补。根据利用率η我们可以得到计算平台的预期性能为NPE * (f/CPIexe)*η OPS(Operations Per Second,每秒钟运算数)。通过该公式,我们可以观察以下各种参数调节对性能曲线的影响。

值得注意的是以上计算中我们没有考虑内存带宽受限的情况,如果把它纳入考虑,对特定性能Performance,我们可以按公式(3)计算所要求带宽。

6945c92a-d77a-11eb-9e57-12bb97331649.png

所以在内存带宽也是约束条件的情况下,性能计算修正为公式(4)。

69687290-d77a-11eb-9e57-12bb97331649.png

而下图也反映了内存带宽对性能曲线的影响。值得提醒的是性能曲线水平顶表示计算任务在该平台上已经触到了内存带宽墙(off-chip bandwidth wall),在这种情况下继续增加线程有可能会恶化Cache命中率,使得带宽问题更加严重反而有损性能,这也是为什么之前我们提到过的GPU显存带宽要远大于CPU系统内存带宽。

主要参考资料:

Many-core vs many-thread machines: Stay away from the valley

The Interplay of Caches and Threads in Chip-MultiProcessors

编辑:jq

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

    关注

    68

    文章

    11216

    浏览量

    222858
  • PC
    PC
    +关注

    关注

    9

    文章

    2164

    浏览量

    158478
  • 内存
    +关注

    关注

    9

    文章

    3173

    浏览量

    76099
  • TLP
    TLP
    +关注

    关注

    0

    文章

    37

    浏览量

    16380

原文标题:多线程计算平台的性能模型

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入剖析NCP13994:高性能半桥谐振转换器控制器

    在电子工程师的设计世界里,一款优秀的控制器就像是一位得力助手,能够为电源转换设计带来诸多便利和高性能表现。今天,我们就来深入剖析安森美(onsemi)的NCP13994,一款专为半桥谐振转换器打造的高
    的头像 发表于 12-05 11:27 158次阅读
    <b class='flag-5'>深入</b><b class='flag-5'>剖析</b>NCP13994:高<b class='flag-5'>性能</b>半桥谐振转换器控制器

    深入剖析 onsemi NL7SZ19:1 到 2 解码器/多路分配器的卓越性能与应用

    深入剖析 onsemi NL7SZ19:1 到 2 解码器/多路分配器的卓越性能与应用
    的头像 发表于 12-01 13:54 135次阅读
    <b class='flag-5'>深入</b><b class='flag-5'>剖析</b> onsemi NL7SZ19:1 到 2 解码器/多路分配器的卓越<b class='flag-5'>性能</b>与应用

    Linux多线程对比单线程的优势

    :「资源利用率」:通过多线程,可以更有效地利用CPU资源,特别是多核CPU。「并行处理」:线程允许同时执行多个任务,提高程序的执行效率。「简化设计」:使用线程可以简化程序设计,因为线程
    发表于 12-01 06:11

    摩尔线程新一代大语言模型对齐框架URPO入选AAAI 2026

    近日,摩尔线程在人工智能前沿领域取得重要突破,其提出的新一代大语言模型对齐框架——URPO统一奖励与策略优化,相关研究论文已被人工智能领域的国际顶级学术会议AAAI 2026收录。这一成果标志着摩尔线程在大
    的头像 发表于 11-17 16:03 222次阅读
    摩尔<b class='flag-5'>线程</b>新一代大语言<b class='flag-5'>模型</b>对齐框架URPO入选AAAI 2026

    rt-thread studio 如何进行多线程编译?

    ,使用的是5800h+32g内存+sn550 ssd,开启16线程编译时cpu的占用率也只能到30%,编译完整个工程需要3分钟 感觉多线程编译设置没有生效,有办法提高编译速度吗 rtthread studio版本是 2.2.9
    发表于 10-11 09:16

    深入剖析RabbitMQ高可用架构设计

    在微服务架构中,消息队列故障导致的系统不可用率高达27%!如何构建一个真正可靠的消息中间件架构?本文将深入剖析RabbitMQ高可用设计的核心要点。
    的头像 发表于 08-18 11:19 696次阅读

    摩尔线程吴庆详解 MUSA 软件栈:以技术创新释放 KUAE 集群潜能,引领 GPU 计算新高度​

    的分享。GPU 计算软件开发总监吴庆登上讲台,发表了题为《摩尔线程 MUSA 软件栈助力 KUAE 集群释放无限潜能》的演讲。他从专业视角出发,为在场听众深入剖析了 MUSA 软件栈在
    的头像 发表于 07-28 13:47 5487次阅读
    摩尔<b class='flag-5'>线程</b>吴庆详解 MUSA 软件栈:以技术创新释放 KUAE 集群潜能,引领 GPU <b class='flag-5'>计算</b>新高度​

    模型推理显存和计算量估计方法研究

    GPU、FPGA等硬件加速。通过分析硬件加速器的性能参数,可以估算模型在硬件加速下的计算量。 四、实验与分析 为了验证上述估计方法的有效性,我们选取了几个具有代表性的深度学习模型,在多
    发表于 07-03 19:43

    多线程的安全注意事项

    多线程安全是指多个线程同时访问或修改共享资源时,能够保证程序的正确性和可靠性。 开发者选择TaskPool或Worker进行多线程开发时,在TaskPool和Worker的工作线程中导
    发表于 06-20 07:49

    鸿蒙5开发宝藏案例分享---跨线程性能优化指南

    ;>Worker</span>做多线程开发时,总遇到对象跨线程卡顿的问题,原来鸿蒙早就提供了解决方案。下面结合代码和实战案例,带你彻底玩转性能优化! 一、痛点:跨线程
    发表于 06-12 17:13

    工控一体机多线程任务调度优化:聚徽分享破解工业复杂流程高效协同密码

    任务调度作为工控一体机管理和协调各项任务的关键机制,其优化程度直接关乎工业生产的效率、稳定性与精准度,宛如一把关键钥匙,解锁工业复杂流程高效协同的大门。 工业复杂流程与多线程任务调度的现状剖析 现代工业场景纷繁复杂,
    的头像 发表于 05-28 14:06 467次阅读

    请问如何在Python中实现多线程与多进程的协作?

    大家好!我最近在开发一个Python项目时,需要同时处理多个任务,且每个任务需要不同的计算资源。我想通过多线程和多进程的组合来实现并发,但遇到了一些问题。 具体来说,我有两个任务,一个是I/O密集型
    发表于 03-11 06:57

    请问rt-thread studio如何进行多线程编译?

    ,使用的是5800h+32g内存+sn550 ssd,开启16线程编译时cpu的占用率也只能到30%,编译完整个工程需要3分钟 感觉多线程编译设置没有生效,有办法提高编译速度吗
    发表于 02-19 08:30

    摩尔线程宣布成功部署DeepSeek蒸馏模型推理服务

    。 据悉,DeepSeek开源模型在多语言理解与复杂推理任务中一直表现出卓越的性能,其V3、R1等系列模型更是备受业界关注。而此次摩尔线程所实现的DeepSeek蒸馏
    的头像 发表于 02-06 13:49 1182次阅读

    华为云 X 实例 CPU 性能测试详解与优化策略

      2.2 Sysbench单线程CPU性能测试   2.3 Sysbench多线程CPU性能测试(4线程)   2.4 高强度
    的头像 发表于 12-30 14:52 1170次阅读
    华为云 X 实例 CPU <b class='flag-5'>性能</b>测试详解与优化策略