首页 > 其他分享 >CPU指令集SSE、AVX等

CPU指令集SSE、AVX等

时间:2024-06-06 22:26:19浏览次数:21  
标签:__ ps AVX 指令集 SSE CPU

C++使用CPU指令集,可以引入头文件 #include <intrin.h> 包含了所有指令集。

部分具体的指令集头文件如下:

<xmmintrin.h>     //包含SSE库
<emmintrin.h>     //包含SSE2库
<pmmintrin.h>     //包含SSE3库

CPU指令集发展从MMX,到SSE、SSE2、SSE3、SSE4、AVX/AVX2、AVX512,推荐使用128位的SSE指令集,256位的AVX/AVX2指令集(若CPU支持,优先使用此类型)。注意必须以16位字节边界对齐。

SSE数据类型:__m128, __m128d 和 __m128i,分别用以表示单精度浮点型、双精度浮点型和整型。

AVX/AVX2 数据类型:__m256, __m256d 和 __m256i,分别用以表示单精度浮点型、双精度浮点型和整型。

具体参考玩转SIMD指令编程 - 知乎 (zhihu.com)

 AVX一次计算8个单精度浮点数据

int main(int argc, char **argv)
{
    __m256 a = _mm256_set_ps(8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0);
    __m256 b = _mm256_set_ps(18.0, 17.0, 16.0, 15.0, 14.0, 13.0, 12.0, 11.0);
    __m256 c = _mm256_add_ps(a, b);

    float d[8];
    _mm256_storeu_ps(d, c);

    std::cout << "result equals " << d[0] << "," << d[1]
              << "," << d[2] << "," << d[3] << ","
              << d[4] << "," << d[5] << "," << d[6] << ","
              << d[7] << std::endl;

    return 0;
}

函数格式及含义:mm256指256位数据,set和add就是函数本身含义

  • ps: 由float类型数据组成的向量
  • pd:由double类型数据组成的向量
  • epi8/epi16/epi32/epi64: 由8位/16位/32位/64位的有符号整数组成的向量
  • epu8/epu16/epu32/epu64: 包含8位/16位/32位/64位的无符号整数组成的向量
  • si128/si256: 未指定的128位或者256位向量

 

标签:__,ps,AVX,指令集,SSE,CPU
From: https://www.cnblogs.com/xixixing/p/18236154

相关文章

  • 27-unittest之断言(assert)
            在测试方法中需要判断结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。    使用unittest测试框架时,有很多的断言方法,下面介绍几种常用的断言方法:assertEqual、assertIn、assertTrue。一、测试代码importunittes......
  • LTSC系统,唯一未被微软宣传过,却备受用户赞誉,CPU占用暴降
    微软拥有多款操作系统,如WindowsXP、Windows7、Windows10以及最新的Windows11等。其中,WindowsXP和Windows7因其稳定性和用户友好性而广受好评,许多用户至今仍在使用它们,然而,从市场占用率来看,Windows10无疑是当今最主流的系统。 尽管Windows10在发布后赢得了不少赞誉,但......
  • ESSEN: Improving Evolution State Estimation for Temporal Networks using Von Neum
    我们采用以下六个分类标准:研究重点:这个标准突出了研究的核心目标。网络表示学习旨在找到有效的方法,将复杂的网络结构表示在低维空间中,使其更易于分析并在机器学习任务中使用。例如,Kipf和Welling[7]引入了图卷积网络(GCN)用于静态图上的半监督分类,而Nguyen等人[1......
  • python 标准库 dataclasses 使用指南
    简单使用dataclasses可以用来快速的定义数据类,并能够简单明了的指明该类所具有的属性和类型,比如,要定义一个名为Person的类,常规的写法如下:classPerson:def__int__(self,id:int,first_name:str,last_name:str,eye_color:str):self.id=idse......
  • 前端处理流式数据(SSE服务)
    前言将数据用流的方式返回给客户端,这种技术需求在传统的管理项目中不多见,但是在媒体或者有实时消息等功能上就会用到,这个知识点对于前端还是很重要的。即时你不写服务端,但是服务端如果给你这样的接口,你也得知道怎么去使用联调。nodejs实现简单的SSE服务SSE服务(Server......
  • (性能测试)--记录一次高可用场景导致CPU资源升高
    测试场景:高可用场景--限流测试;被测交易:查询类交易,HTTP协议;交易链路:jmeter-web-coimpre(前置服务)--coimbp--cobp(coimbp、coimpre都会访问同一个数据库);注:cobp为合肥机房,其他服务均为北京机房,要注意跨网段存在网络延迟(会导致TPS波动情况);场景配置:配置coimpre服务的......
  • java检测当前CPU负载状态的方法
    1.java检测当前CPU负载状态在Java中,直接检测CPU负载状态并不像在操作系统命令行中那样简单,因为Java标准库并没有直接提供这样的功能。但是,我们可以通过几种方法间接地获取CPU负载信息:(1)使用操作系统命令:我们可以通过执行特定的系统命令(如top、mpstat、uptime等)来获取CPU负载信息,......
  • 试运行环境cpu高问题分析
    单元1、2使用az1服务器,单元3、4使用az2服务器,单元5、6使用az3服务器服务器是曙光的,cpu是海光的试运行环境跑批期间cpu高,现象是处在az1机房和az3机房的cpu都高,az2的cpu不高。因为az1和az3峰值在90%上下,az2只有百分之20多,肯定是存在问题。1)首先在数据库层分析:比对cn、dn参数文件,没有......
  • 中断卡在configASSERT( ucCurrentPriority >= ucMaxSysCallPriority );
    今天在调试以太网驱动的时候遇到一个问题,当程序执行到这个/*addthenetworkinterface(IPv4/IPv6)withRTOS*/netif_add(&gnetif,&ipaddr,&netmask,&gw,NULL,&ethernetif_init,&tcpip_input);函数里面的netif_invoke_ext_callback(netif,LWIP_NSC_NETIF_ADDED,N......
  • 去除IDEA项目结构后面出现0%classes0%lines
    按住Ctrl+Alt+F6快捷键弹出下图信息。 去掉勾选对话框中的“Tomcat7CoverageResults”选项,点击“Showselected”按钮,返回查看项目结构即可发现后面的0%classes0%lines已经去掉了......