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
    +关注

    关注

    1625

    文章

    21653

    浏览量

    601513
  • C++
    C++
    +关注

    关注

    22

    文章

    2104

    浏览量

    73470
  • 编译器
    +关注

    关注

    1

    文章

    1617

    浏览量

    49027
收藏 人收藏

    评论

    相关推荐

    socket 多线程编程实现方法

    在现代网络编程中,多线程技术被广泛应用于提高服务的并发处理能力。Socket编程是网络通信的基础,而将多线程技术应用于Socket编程,可以显著提升服务的性能。
    的头像 发表于 11-12 14:16 139次阅读

    Keil编译器优化方法

    我们都知道,代码是可以通过编译器优化的,有的时候,为了提高运行速度或者减少代码尺寸,会开启优化选项。
    的头像 发表于 10-23 16:35 302次阅读
    Keil<b class='flag-5'>编译器</b>优化方法

    Python中多线程和多进程的区别

    Python作为一种高级编程语言,提供了多种并发编程的方式,其中多线程与多进程是最常见的两种方式之一。在本文中,我们将探讨Python中多线程与多进程的概念、区别以及如何使用线程池与进程池来提高并发执行效率。
    的头像 发表于 10-23 11:48 274次阅读
    Python中<b class='flag-5'>多线程</b>和多进程的区别

    AI编译器技术剖析

    随着人工智能技术的飞速发展,AI编译器作为一种新兴的编译技术逐渐进入人们的视野。AI编译器不仅具备传统编译器的功能,如将高级语言编写的源代码转换为机器可执行的代码,还融入了人工智能技术
    的头像 发表于 07-17 18:28 1438次阅读

    人工智能编译器与传统编译器的区别

    人工智能编译器(AI编译器)与传统编译器在多个方面存在显著的差异。这些差异主要体现在设计目标、功能特性、优化策略、适用范围以及技术复杂性等方面。以下是对两者区别的详细探讨,旨在全面解析其内在差异。
    的头像 发表于 07-17 18:19 1653次阅读

    Meta发布基于Code Llama的LLM编译器

    近日,科技巨头Meta在其X平台上正式宣布推出了一款革命性的LLM编译器,这一模型家族基于Meta Code Llama构建,并融合了先进的代码优化和编译器功能。LLM编译器的推出,标志着Meta在人工智能领域的又一重大突破,将
    的头像 发表于 06-29 17:54 1452次阅读

    SEGGER编译器优化和安全技术介绍 支持最新C和C++语言

    SEGGER编译器是专门为ARM和RISC-V微控制设计的优化C/C++编译器。它建立在强大的Clang前端上,支持最新的C和C++语言功能。 除其他外,其主要功能包括: 1) 尺寸
    的头像 发表于 06-04 15:31 1387次阅读
    SEGGER<b class='flag-5'>编译器</b>优化和安全技术介绍 <b class='flag-5'>支持</b>最新C和C++语言

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

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

    java实现多线程的几种方式

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

    QT开发学习笔记1(安装交叉编译器

    QT安装交叉编译器
    的头像 发表于 02-18 10:02 846次阅读
    QT开发学习笔记1(安装交叉<b class='flag-5'>编译器</b>)

    Triton编译器的原理和性能

    Triton是一种用于编写高效自定义深度学习原语的语言和编译器。Triton的目的是提供一个开源环境,以比CUDA更高的生产力编写快速代码,但也比其他现有DSL具有更大的灵活性。Triton已被采用
    的头像 发表于 12-16 11:22 2694次阅读
    Triton<b class='flag-5'>编译器</b>的原理和性能

    redis多线程还能保证线程安全吗

    是单线程的,多个客户端请求会按序执行,每个请求使用一个线程完成,这样可以避免多线程之间的竞争条件和锁等带来的开销。但是,由于Redis是存储内存中的数据的,当多个客户端同时对同一个数据进行读写操作时,就会存在
    的头像 发表于 12-05 10:28 1664次阅读

    mfc多线程编程实例

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

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

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

    编译器的优化选项

    一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,第一,必须选择合适的算法和数据结构;第二,应该编写编译器能够有效优化以转换成高效可执行代码的源代码,要做到
    的头像 发表于 11-24 15:37 850次阅读
    <b class='flag-5'>编译器</b>的优化选项