当前位置: 首页 > news >正文

simd笔记

simd笔记

1. 语义

1. 绝对值(一元运算)

其实就是将一个X个Y比特的数做一次绝对值运算,比如下面对16个16位有符号数做了16次abs运算,但只有一条指令

__m256i _mm256_abs_epi16(__m256i a)

2. 加减法之类(二元运算)

  • 简单理解为a+b就行;
  • 还有理解饱和加法(防止溢出)的指令就OK,其实就是溢出了取最大值

3. 位运算(二元运算)

类似and,or,也有组合运算,比如andnot,这里区分是针对谁做not就行

4. 混合操作

其实有点像选择器,输入两个向量和一个mask,然后根据mask来选择,这里有些api非常迷惑,因为mask是8bit的,然后avx256可能会拆分成两个128bit然后执行两次

__m256i _mm256_blend_epi16 (__m256i a, __m256i b, const int imm8)

比如这里,实际上对于a和b来说,他们是16个16bit的整数,但imm8只有8bit,所以语义上相当于__mm128_blend_epi16(_m128i a, __m128i b, const int imm8)执行两次

这里的执行逻辑是:
根据mask,如果某个bit为1,则选择左边的a(8*16位)对应的元素,否则选择b

5. 广播指令

有点像python的'a' * 16的感觉,其实就是针对某个元素快速复制或者扩展N份

__m256i _mm256_broadcastw_epi16 (__m128i a)

将低16位扩展16个位置

6. 数据加载和存储指令(其实就是输入输出)

内存数据加载到向量寄存器或者将向量寄存器的值写入到内存中,有区分内存地址对齐的版本和不对齐的版本;还有带mask的加载,只加载特定的数据,注意这里的mask其实是128位向量,然后用最高位来决定是否加载(这个向量一般来自于比较指令)

__m128d _mm_loadu_pd (double const* mem_addr)

7. 比较与测试指令

这里需要注意新接口,有些api是有mask的

8. 置换与指令重排(Swizzle类指令)

调整向量中元素的顺序,支持固定模式或动态索引重排,常用于数据格式转换、矩阵转置,比如图像通道分离、合并(rgb <-> bgr)、行列重排、数据对齐调整。

//
//
//

reference

  • intel simd指令
http://www.xdnf.cn/news/1385497.html

相关文章:

  • 使用生成对抗网络增强网络入侵检测性能
  • 【开题答辩全过程】以 基于Python的美食点评系统为例,包含答辩的问题和答案
  • 【数据结构与算法-Day 20】从零到一掌握二叉树:定义、性质、特殊形态与存储结构全解析
  • Hadoop(六)
  • T06_循环神经网络
  • 基于博客系统的自动化测试项目
  • Selenium无法定位元素的几种解决方案
  • C# 日志写入loki
  • 力扣452:用最少数量的箭射爆气球(排序+贪心)
  • 如何编译和使用 tomcat-connectors-1.2.32 源码(连接 Apache 和 Tomcat)​附安装包下载
  • 数据质检之springboot通过yarn调用spark作业实现数据质量检测
  • Dify 1.8.0 全网首发,预告发布
  • 2024-06-13-debian12安装Mariadb-Galera-Cluster+Nginx+Keepalived高可用多主集群
  • 动态UI的秘诀:React中的条件渲染
  • 在PostgreSQL中使用分区技术
  • 【三维渲染技术讨论】Blender输出的三维文件里的透明贴图在Isaac Sim里会丢失, 是什么原因?
  • Blender建模软件基本操作--学习笔记1
  • 查看docker容器内部的环境变量并向docker容器内部添加新的环境变量
  • 第十二节 Spring 注入集合
  • 微服务Eureka组件的介绍、安装、使用
  • 编程与数学 03-004 数据库系统概论 06_需求分析
  • CMake xcode编译器属性设置技巧
  • PDF转图片工具实现
  • R 语言 + 卒中 Meta 分析(续):机器学习 Meta 与结构方程 Meta 完整实现
  • 生成式 AI 的下一个风口:从 “生成内容” 到 “生成工具”,如何落地产业场景?
  • android 不同分辨图片放错对应文件夹会怎样?
  • RxGalleryFinal:全能Android图片视频选择器
  • PHP的header()函数分析
  • 数字孪生技术为UI前端赋能:实现产品性能的实时监测与预警
  • 神经科学启发下的自然语言处理:迈向深层语义理解的探索