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

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

3天内不再提示

CacheQ的编译器支持多线程CPU加速

星星科技指导员 来源:嵌入式计算设计 作者:Tiera Oliver 2022-06-21 09:15 次阅读

在 CacheQ 编译器集合中,编译器消除了手动代码重写和使用线程库或复杂的并行执行 API,如 OpenMP 或 MPI。它采用单线程 C 代码并生成可在 CPU 上运行的可执行文件,利用带或不带超线程的物理 x86 内核以及 ArmRISC-V 内核。

使用 CacheQ 灵活的编译器,用户可以为相同或不同架构上的多核处理器生成代码,并使用运行时变量对使用情况进行基准测试。它们可以添加到硬件以提高性能和功耗,或减少内核数量并分配其他进程以实现每瓦功耗的更优化性能。

根据该公司的说法,基于模拟股票交易中人类行为的 Black Scholes 金融算法的基准,结果是在具有 12 个逻辑内核的 X86 处理器上的单线程执行速度提高了 486% 以上。具有八个 Arm 内核的 Apple M1 处理器比单线程 GNU 编译器集合 (GCC) 快 400%。

CacheQ 使软件开发人员能够为包括 FPGA、CPU 和 GPU 在内的异构计算系统开发和部署定制硬件加速器。它的 CacheQ Compiler Collection 以 gcc 工具套件为模型,包括类似于常见开源编译器的用户界面。因为它需要有限的代码修改,所以可以缩短开发时间并提高系统质量。

该工具套件支持对生成的虚拟引擎进行编译、检查和错误检测、性能预测、分析、调试和可视化。它支持目标硬件,包括单核和多核处理器,以及具有连接到 x86 和 Arm 处理器的 FPGA 加速器的异构计算系统。

CacheQ 编译器集合通过导出函数调用的“混合”访问来支持 C 代码和 C++

CacheQ Compiler Collection 的其他基准测试突出了其跨越高端服务器和消费电子设备的能力。具有两个内核的 M1 处理器的执行性能优于具有 11 个内核的 x86 芯片,显示出每瓦成本的优势。据该公司称,四核 Apple M1 处理器的性能比 12 核 x86 快 210%。总体而言,它的执行速度比使用 CacheQ 编译器集合在 x86 上运行的单线程 GCC 快约 1,476%。

所有模拟都是在为不同目标编译的相同代码上执行的。基准测试是在运行频率为 3.7GHz 的 Intel i7-8700k x86 CPU 上执行的,该 CPU 具有六个物理内核和超线程,可用于运行 Ubuntu 18.04 的 12 个逻辑内核。Apple M1 基准测试是使用运行本机 Arm Ubuntu 20.04 映像的 Parallels VM 捕获的。

审核编辑:郭婷

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

    关注

    1602

    文章

    21301

    浏览量

    593100
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72893
  • 编译器
    +关注

    关注

    1

    文章

    1575

    浏览量

    48606
收藏 人收藏

    评论

    相关推荐

    鸿蒙OS开发实例:【ArkTS类库多线程CPU密集型任务TaskPool】

    CPU密集型任务是指需要占用系统资源处理大量计算能力的任务,需要长时间运行,这段时间会阻塞线程其它事件的处理,不适宜放在主线程进行。例如图像处理、视频编码、数据分析等。 基于多线程
    的头像 发表于 04-01 22:25 309次阅读
    鸿蒙OS开发实例:【ArkTS类库<b class='flag-5'>多线程</b><b class='flag-5'>CPU</b>密集型任务TaskPool】

    java实现多线程的几种方式

    Java实现多线程的几种方式 多线程是指程序中包含了两个或以上的线程,每个线程都可以并行执行不同的任务或操作。Java中的多线程可以提高程序
    的头像 发表于 03-14 16:55 172次阅读

    mfc多线程编程实例

    (图形用户界面)应用程序的开发。在这篇文章中,我们将重点介绍MFC中的多线程编程。 多线程编程在软件开发中非常重要,它可以实现程序的并发执行,提高程序的效率和响应速度。MFC提供了丰富的多线程
    的头像 发表于 12-01 14:29 502次阅读

    TVM编译器的整体架构和基本方法

    。但是这其中也去思考了一下基于FPGA加速器的编译器架构。在FPGA深度学习加速器中,编译器除了需要自动化生成指令外,还要优化指令的结构,来最大化
    的头像 发表于 11-30 09:36 856次阅读
    TVM<b class='flag-5'>编译器</b>的整体架构和基本方法

    多线程如何保证数据的同步

    多线程编程是一种并发编程的方法,意味着程序中同时运行多个线程,每个线程可独立执行不同的任务,共享同一份数据。由于多线程并发执行的特点,会引发数据同步的问题,即保证多个
    的头像 发表于 11-17 14:22 343次阅读

    关于Python多进程和多线程详解

    进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程CPU调度
    的头像 发表于 11-06 14:46 304次阅读
    关于Python多进程和<b class='flag-5'>多线程</b>详解

    多线程idm下载软件

    多线程idm下载软件
    发表于 10-23 09:23 0次下载

    MDK可以支持多线程编译吗?

    怎么才能打开多线程编译
    发表于 10-11 07:23

    Java多线程的用法

    本文将介绍一下Java多线程的用法。 基础介绍 什么是多线程 指的是在一个进程中同时运行多个线程,每个线程都可以独立执行不同的任务或操作。 与单线程
    的头像 发表于 09-30 17:07 616次阅读

    华为麒麟9000S处理器为8核12线程 首款支持线程手机处理器

     近日,华为Mate60 pro系列搭载的麒麟9000S引起了广泛关注。据网上消息报道,麒麟9000S为8核12线程,也是是首款支持线程的手机处理器。所谓的超线程技术,就是把
    的头像 发表于 09-01 16:32 9343次阅读

    Arm编译器Linux OpenMP设置

    为了避免在使用ARM编译器for Linux时出现多线程性能问题,重要的是设置了适当的环境。 本指南将帮助您避免一些常见的陷阱
    发表于 08-28 07:29

    labview AMC多线程

    labview_AMC多线程
    发表于 08-21 10:31 22次下载

    多线程事务怎么回滚?一个简单示例演示多线程事务

    在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主
    发表于 08-09 12:22 373次阅读
    <b class='flag-5'>多线程</b>事务怎么回滚?一个简单示例演示<b class='flag-5'>多线程</b>事务

    基于QT自制上位机(多线程

    前言:应用程序在某些情况下需要处理比较复杂的逻辑,例如常规的图传上位机,如果在传输图片跑到较高码流或对图像执行一些处理任务是,引用多线程可以明显 改善响应度和反馈速度。 QT多线程使用的注意事项
    发表于 05-09 11:47 1次下载
    基于QT自制上位机(<b class='flag-5'>多线程</b>)

    Linux中多线程编程的知识点

    Hello、Hello大家好,我是木荣,今天我们继续来聊一聊Linux中多线程编程中的重要知识点,详细谈谈多线程中同步和互斥机制。
    发表于 04-26 17:27 479次阅读
    Linux中<b class='flag-5'>多线程</b>编程的知识点