• 2024-07-19ISA-L库调研
    本文分享自天翼云开发者社区《ISA-L库调研》,作者:何****尔1.IntelSIMD指令集SIMD(singleinstructionmultipledata)单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。以同步方式,在同一时间内执行同一条指令。以加法指令为例,单指令单数据(SISD)的CPU对
  • 2024-06-18simd example code
    Sure,hereisasimpleCexamplethatusesSIMD(SingleInstruction,MultipleData)instructionswithIntel'sSSE(StreamingSIMDExtensions)orAVX(AdvancedVectorExtensions)intrinsics.Thiscodemultipliestwoarraysoffloatselement-wiseusing
  • 2024-06-08一文搞懂 ARM 64 系列: 寄存器
    ARM64中包含多种寄存器,下面介绍一些常见的寄存器。1通用寄存器ARM64包含31个64bit寄存器,记为X0~X30。每一个通用寄存器,它的低32bit都可以被访问,记为W0~W30。在这31个通用寄存器中,有2个寄存器比较特殊。X29寄存器被作为栈帧寄存器,也被称为FP(FramePointerRegister)。X3
  • 2024-06-06Simd库——图像处理领域的CPU指令集加速库
    Simd库是一个免费的开源图像处理和机器学习库,专为C和C++程序员设计。它为图像处理提供了许多有用的高性能算法,例如:像素格式转换,图像缩放和过滤,从图像中提取统计信息,运动检测,对象检测(HAAR和LBP分类器级联)和分类,神经网络。官网 SimdLibrary(ermig1979.github.io),可以下载编译,函
  • 2024-03-28[转帖]尝试梳理下ARM处理器的发展历史
    大家好,这篇文章是我的朋友MichaelYao写的,我觉得非常不错,分享给大家。1.前言本文尝试简单梳理下ARM处理器的发展历史、架构的演进,包括不同处理器的应用方向,但我们重点还是围绕Cortex-A系列展开,也会介绍不同微架构处理器之间的继承关系,以及它们分别出自哪个设计团队等。不出
  • 2024-01-16计算机体系结构-hw10
    计算机体系结构-hw10前言中国科学院大学张科老师的计算机体系结构的课后作业,不保证正确,请辩证看待。SIMDProcessingQ1阵列处理器的功能单元可以做很多的操作(MUL、ADD等),在同一时间做相同操作,在同一空间做不同操作(并行)。对功能单元的要求高,硬件更加复杂,成本高,效率高(相比
  • 2023-11-30SIMD笔记-ARM NEON
    参考资料https://blog.csdn.net/fuhanga123/article/details/120673795概述对于处理半精度浮点数(float16)的加法,我们可以使用ARMNEON指令集,因为IntelSIMD指令集(SSE和AVX)不直接支持float16运算。ARMNEON指令集中有专门用于float16运算的指令。以下是一个使用ARM
  • 2023-11-11读程序员的制胜技笔记09_死磕优化(下)
    1. 造成延迟的3个方面1.1. CPU1.2. I/O1.3. 人2. 不要打包数据2.1. 一个打包的数据结构2.1.1. C#structUserPreferences{publicbyteItemsPerPage;publicbyteNumberOfItemsOnTheHomepage;publicbyteNumberOfAdClicksICanStomach;publicbyteM
  • 2023-11-04x86平台SIMD编程入门(5):提示与技巧
    1、提示与技巧访问内存的成本非常高,一次缓存未命中可能会耗费100~300个周期。L3缓存加载需要40~50个周期,L2缓存大约需要10个周期,即使L1缓存的访问速度也明显慢于寄存器。所以要尽量保持数据结构对SIMD友好,优先选择std::vector、CAtlArray、eastl::vector等容器,按照顺序读取数据
  • 2023-11-04x86平台SIMD编程入门(4):整型指令
    1、算术指令算术类型函数示例加_mm_add_epi32、_mm256_sub_epi16减_mm_sub_epi32、_mm256_sub_epi16乘_mm_mul_epi32、_mm_mullo_epi32除无水平加/减_mm_hadd_epi16、_mm256_hsub_epi32饱和加/减_mm_adds_epi8、_mm256_subs_epi16最大/最小值_
  • 2023-11-04x86平台SIMD编程入门(3):浮点指令
    1、算术指令算术类型函数示例备注加_mm_add_sd、_mm256_add_ps减_mm_sub_sd、_mm256_sub_ps乘_mm_mul_sd、_mm256_mul_ps除_mm_div_sd、_mm256_div_ps平方根_mm_sqrt_sd、_mm256_sqrt_ps倒数_mm_rcp_ss、_mm_rcp_ps、_mm256_rcp_ps快速计算
  • 2023-11-04x86平台SIMD编程入门(2):通用指令
    1、重解释转换虽然128位的XMM寄存器在硬件上只是256位YMM寄存器的下半部分,但在C++中它们是不同的类型。有一些intrinsic函数可以将它们重新解释为不同的类型,如下表所示,行代表源类型,列代表目标类型。__m128__m128d__m128i__m256__m256d__m256d__m128=_mm_castps_
  • 2023-11-04x86平台SIMD编程入门(1):SIMD基础知识
    1、简介SIMD(SingleInstruction,MultipleData)是一种并行计算技术,它通过向量寄存器存储多个数据元素,并使用单条指令同时对这些数据元素进行处理,从而提高了计算效率。SIMD已被广泛应用于需要大量数据并行计算的领域,包括图像处理、视频编码、信号处理、科学计算等。许多现代处理
  • 2023-09-07Common optimize technique
    Vectorization(矢量化)Beforeweunderstandthevectorization,wecanseeacommonsecnario.Wehaveaarraythathas100floatnumbers,wewanttocalculatesquareofeverydata.Ifweusetraditionalcomputer,weneedtocalculateitonebyone.Foreachca
  • 2023-07-27Intel指令集及SIMD数据加速
    查看CPU相关信息执行结果举例:查看电脑CPU支持的指令集:cat/proc/cpuinfo|grep"processor"|wc-l支持的指令集:向量指令集Flynn分类法根据指令和数据进入CPU的方式,将计算机架构分为四种不同的类型。1.单指令流单数据流(SISD,SingleInstructionstreamSingleDat
  • 2023-06-21近期高性能计算报班培训学习总结
    工作以来,我鲜有时间停下来做一些总结,偶有所得也是记录在公司内部的文档里。我细细想来,发现原因主要是这份工作实在是有些螺丝钉了,脱离了公司的环境就很难成立。去年10月底以来,我开始报班培训C++,为什么要这样做呢?因为我发现大厂的算法工程师很容易变成“螺丝钉”,数据、训练和部署
  • 2023-06-11利用arm cortex-m芯片 SIMD加速LVGL的文字渲染
    最近手上有个项目,对流畅度要求到极致。就是要满60fps的那种。所以针对各个模块的渲染都有一些改进。文字渲染加速就式其中之一。趁着记忆尤新把这个给记录下来SIMD介绍SIMD(单指令多数据)是一种计算机指令集架构,它允许处理器同时对多个数据元素执行相同的操作。这种指令集架构可
  • 2023-05-2227 | SIMD:如何加速矩阵乘法?
    00:00讲述:徐文浩大小:10.85M时长:11:50上一讲里呢,我进一步为你讲解了CPU里的“黑科技”,分别是超标量(Superscalar)技术和超长指令字(VLIW)技术。超标量(Superscalar)技术能够让取指令以及指令译码也并行
  • 2022-12-07csapp学习笔记01
    写在开头的话在回到学校之后的几天后,我结束了cmu15418并行系统的学习,怎么说呢?这门课确实让我学到了不少,比如各种并行性的优化,但是我觉得自己还是有些吃力。包括在实习的最
  • 2022-11-17C# 使用SIMD向量类型加速浮点数组求和运算(3):循环展开
    作者:zyl910目录一、背景1.1循环展开简介1.2测试准备二、在C#中使用2.1对基础算法做循环展开2.1.1测试结果:2.2对Vector4版算法做循环展开2.2.1测试结果:2.3对V
  • 2022-11-04CS149笔记02并行抽象
    ParallelProgrammingAbstractionssingleprogram,multipledataSPMD这个定义还是第一次听到,我在Intelispc的官网找到了这一定义:https://ispc.github.io/ispc.htmlT
  • 2022-11-04CS149笔记01现代多核CPU
    AModernMulti-CoreProcessor一个处理器在做什么?FetchDecode:指令流解码,决定下一条执行的指令ALU:执行单元,执行一条指令,决定如何修改寄存器和计算机内存Context一
  • 2022-11-02AMD GPU 硬件架构
     AMD5870显卡(cypress) 架构 20个simd引擎,每个simd引擎包含16个simd 每个simd包含16个streamcore  每个streamcore都是5路的乘法-加法
  • 2022-10-25SIMD与函数式
    SIMD"单指令,多数据",主要用在3D图形运算,物理模拟等项目中。//可以实现数组的一次性相加vara=SIMD.Float32x4(1,2,3,4);varb=SIMD.Float32x4(5,6,7,8);va