首页 > 其他分享 >CPU指令集学习——gather

CPU指令集学习——gather

时间:2024-06-13 17:45:24浏览次数:22  
标签:__ vindex 字节 int gather 索引 m128i 指令集 CPU

每次偏移 int索引*scale 个字节,每次取4字节。注意int索引是倒序的,如__m128i vindex有4个int索引,先取最后一个索引。

举例:

__m128i _mm_i32gather_epi32 (int const* base_addr, __m128i vindex, const int scale)

    int int_array[8] = { 100,200,300,400,500,600,700,800 };        //4字节元素
    __m128i vindex = _mm_set_epi32(0, 1, 2, 3);                    //4个int索引
    __m128i result1 = _mm_i32gather_epi32(int_array, vindex, 4);//每次取4字节,第一个从偏移3*4字节处开始取,即400
    int* int_res = (int*)&result1;
    for (int i = 0; i < 4; i++)
    {
        std::cout << int_res[i] << "\n";                        //400,300,200,100
    }

    //案例二
    uint8_t uint8_array[8] = { 10,11,12,13,14,15,16,17 };        //1字节元素    
    __m128i result = _mm_i32gather_epi32((int*)uint8_array, vindex, 1);//每次取4字节,第一个从偏移3*1字节处开始取,即13 14 15 16
    uint8_t* uint8_res = (uint8_t*)&result;
    for (int i = 0; i < 8; i++)
    {
        std::cout << (int)uint8_res[i] << "\n";                    //13 14 15 16    12 13 14 15
    }

 

标签:__,vindex,字节,int,gather,索引,m128i,指令集,CPU
From: https://www.cnblogs.com/xixixing/p/18246414

相关文章

  • OceanBase主机CPU超过85% SQL性能急剧下降案例
    之前在培训的时候,OceanBase的老师就说过,当主机CPU使用率超过85%之后,SQL的就会急剧下降。最近分析问题的时候刚好碰到相关案例,简单记录下ocp记录的主机CPU相关信息如下问题SQL的执行情况:从下面的SQL执行情况可以看到,在6-1号的时候问题SQL在下午六点半开始执行,平均执行时间为21m......
  • k8s_示例_根据CPU使用率自动扩展Pod数量并使Pod分布在不同节点
    我们从制作测试用镜像开始,后续一步一步实现在k8s中使pod根据cpu用量自动扩展pod个数。知识准备在做这个示例之前,需要了解k8s(也叫kubernetes)基本原理,了解k8s是用来干嘛的即可,以及deployment、service、hpa、镜像、docker等概念。不然会有些晕的,不知道这些配置和这些操作......
  • Objection 常用指令集
    ===========附加包名启动============objection-gcom.tigerbrokers.stockexplore===========启动某个activity===========androidintentlaunch_activitycom.xxx===========所有已经加载的类===========androidhookinglistactivities===========查看所有指定类中所有方法......
  • 【平头哥开源CPU——玄铁C910】开源项目库配置和前仿真记录
    C910开源项目库配置C910开源项目库中有很多问题,比如我做到makecompile的时候一直在报错无法找到工程下的某个文件,主要原因是平头哥官方提供的环境变量配置文件类型是.csh的,而我的linux工作站里没有csh而且没有联网。所以把csh文件内容做了修改也成功跑通了,现在分享一下。......
  • IC693CPU331S CPU 331 Module
    IC693CPU331S  CPU 331 Module板卡控制通常具有较高的实时性能,可以在短的响应时间内进行控制和监测。这是因为板卡控制直接与硬件设备连接,并通过硬件接口进行数据采集和输出控制。它不依赖于外部的通信和传输过程,因此可以实时地对设备进行控制和反馈。PLC控制的实时性能相......
  • 《Optimizing the LINPACK Algorithm for Large-Scale PCIe-Based CPU-GPU Heterogene
    论文标题《OptimizingtheLINPACKAlgorithmforLarge-ScalePCIe-BasedCPU-GPUHeterogeneousSystems》为基于PCIe的大规模CPU-GPU异构系统优化LINPACK算法作者GuangmingTan、ChaoyangShui、YinshanWang、XianzhiYu和YujinYan来自中科院计算所初读摘要......
  • 关于计算核心先进性和稳定性的差异以及CPU/MCU/PLC/工控机/DSP/FPGA/PAC/SOC/GPU/NPU/
    各种名称的关系PLC分为组合式和一体式,整体上落后于个人商用主机主要使用梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)、结构化文本语言(ST)编程为什么PLC贵为什么PLC使用的处理器都比较低端?(比如低端赛扬甚至STM32)PLC无需进行多任务处理CPU越......
  • 字节面试:CPU被打满了/CPU100%,如何处理?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • Linux会像Windows一样把64个CPU核心分成一组吗
    Linux与Windows在处理器管理上存在一些差异,但两者都不会直接将64个CPU核心简单地分成一组。不过,它们都会使用各种策略和技术来优化处理器的使用,这包括如何分配进程到不同的CPU核心。Linux作为一种开源的操作系统,其内核可以运行在多种不同的硬件架构上,包括x86、ARM、PowerPC等......
  • Simd库——图像处理领域的CPU指令集加速库
    Simd库是一个免费的开源图像处理和机器学习库,专为C和C++程序员设计。它为图像处理提供了许多有用的高性能算法,例如:像素格式转换,图像缩放和过滤,从图像中提取统计信息,运动检测,对象检测(HAAR和LBP分类器级联)和分类,神经网络。官网 SimdLibrary(ermig1979.github.io),可以下载编译,函......