Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
当行大小大于向量宽度时 SIMD 转置
你可以找到很多good https stackoverflow com a 25625919 149138 answers https stackoverflow com a 29587984 149138用于转置一个矩阵 该矩阵落在nat
matrix
transpose
SIMD
avx
avx2
添加饱和 32 位有符号整数内在函数?
有人可以推荐一种使用 Intel 内在函数 AVX SSE4 添加饱和 32 位有符号整数的快速方法吗 我查看了内在指南并发现 mm256 adds epi16但这似乎只添加 16 位整数 我没有看到 32 位有任何类似的东西 其他电话似乎
x86
SSE
intrinsics
avx
saturationarithmetic
如何将位对从 uint64_t 解压缩到 __m256i?
考虑uint64 t其中每连续 2 位都是一个数字 b00 for 0 b01 for 1 b11 for 1 and b10未使用 永远不会发生 假设没有对其进行处理 如何解压这样的uint64 t into m256i以便原始数字中的位
c
performance
vectorization
SIMD
avx
对齐与未对齐 x86 SIMD 指令之间的选择
SIMD指令一般有两种类型 A 使用对齐的内存地址 如果地址未在操作数大小边界上对齐 则会引发一般保护 GP 异常 movaps xmm0 xmmword ptr rax vmovaps ymm0 ymmword ptr rax vmova
x86
SSE
SIMD
avx
avx512
测试 xmm/ymm 寄存器是否为零的更快方法?
It s fortunate that PTEST does not affect the carry flag but only sets the rather awkward ZF also affects both CF and ZF
Assembly
Optimization
x86
avx
microoptimization
C 风格强制转换与内在强制转换
假设我已经定义了 m256d x我想提取低 128 位 我会做 m128d xlow mm256 castpd256 pd128 x 然而 我最近看到有人这样做 m128d xlow m128d x 是否有用于演员的首选方法 为什么要用第一
c
SSE
avx
如何使用 __m128i 执行元素左移?
我发现 SSE 移位指令只能在所有元素上移位相同的量 mm sll epi32 mm slli epi32 这些会移动所有元素 但移动量相同 http software intel com sites products documentat
c
SSE
avx
将字段中的位扩展到掩码中所有(重叠+相邻)集位的最快方法?
假设我有 2 个名为 IN 和 MASK 的二进制输入 实际字段大小可能是 32 到 256 位 具体取决于用于完成任务的指令集 每次调用时两个输入都会改变 Inputs IN 1100010010010100 MASK 000111101
c
Assembly
x86
SSE
avx
何时可以重用avx指令中的源寄存器
在 avx 指令中用作源的寄存器何时可以在指令开始处理后重用 例如 我想使用vgatherdps该指令消耗两个 ymm 寄存器 其中之一是位移索引 我意识到vgatherdps由于数据的局部性较差 因此需要花费大量时间来收集 位移索引寄存器
Assembly
cpuarchitecture
SIMD
avx
microoptimization
使用 AVX/AVX2 转置 8x8 浮点
转置 8x8 矩阵可以通过制作四个 4x4 矩阵并对每个矩阵进行转置来实现 这不是我想要的 在另一个问题中 一个答案给出了解决方案 https stackoverflow com a 2518670 4144148x8 矩阵只需要 24 条
SIMD
avx
avx2
按字节数对向量进行混洗
有什么办法可以左移 v 0 gt v 1 a m128i by n字节 其中n仅在运行时才知道 我目前仅限于 AVX1 但如果 AVX2 512 使这变得更容易 我非常感兴趣 I found mm bslli si128 m128i imm
c
x86
SSE
intrinsics
avx
AVX-512 指令编码 - {er} 含义
在 Intel x86 指令集参考中 有许多 AVX 512 指令在指令中具有可选的 er 例如 VADDPD 的一种形式定义为 EVEX NDS 512 66 0F W1 58 r VADDPD zmm1 k1 z zmm2 zmm3 m
Assembly
x86
avx
avx512
使用 AVX 内在函数代替 SSE 并不能提高速度 - 为什么?
我已经使用 Intel 的 SSE 内在函数相当长一段时间了 并取得了良好的性能提升 因此 我希望 AVX 内在函数能够进一步加速我的程序 不幸的是 直到现在情况并非如此 可能我犯了一个愚蠢的错误 所以如果有人能帮助我 我将非常感激 我使用
c
performance
gcc
SSE
avx
适用于 AVX 和 SSE 的 Visual Studio 的 cpu 调度程序
我使用两台计算机工作 一种不支持 AVX 另一种支持 AVX 让我的代码在运行时找到我的CPU支持的指令集并选择合适的代码路径会很方便 我按照 Agner Fog 的建议制作了一个 CPU 调度程序 http www agner org o
c
VisualStudio
SSE
avx
将两个 32 位整数向量相乘,生成 32 位结果元素向量
将每个 32 位条目乘以 2 的最佳方法是什么 mm256i互相注册 mm256 mul epu32不是我正在寻找的 因为它产生 64 位输出 我想要每个 32 位输入元素都有一个 32 位结果 而且 我确信两个 32 位值的乘法不会溢出
x86
SSE
intrinsics
avx
avx2
_mm256_fmadd_ps 比 _mm256_mul_ps + _mm256_add_ps 慢?
我有一个图像处理算法来计算a b c d与AVX 伪代码如下 float a new float N float b new float N float c new float N float d new float N assign va
gcc
SSE
SIMD
avx
microoptimization
gcc 编译器开关 (-mavx -mavx2 -mavx512f) 到底有什么作用?
我在 C C 代码中明确使用了英特尔 SIMD 内在扩展 为了编译代码 我需要在命令行上指定 mavx mavx512 或类似的内容 我对这一切都很满意 然而 从阅读 gcc 手册页来看 并不清楚这些命令行标志是否也告诉 gcc 编译器尝试
gcc
SIMD
avx
instructionset
avx512
跨 AVX 通道的最佳方式是什么?
有些问题具有类似的标题 但我的问题涉及其他地方未涵盖的一个非常具体的用例 我有 4 个 128d 寄存器 x0 x1 x2 x3 我想将它们的内容重新组合在 5 个 256d 寄存器 y0 y1 y2 y3 y4 中 以准备其他计算 on
c
x86
SSE
SIMD
avx
使用 GCC 为 Linux 设备驱动程序编译 Intel AVX 内联
我在 corei7 上的 ubuntu 上运行 gcc 版本 4 8 2 从谷歌搜索中找到了有关 AVX 内在函数的信息 但我不确定这组内在函数是否可以用于 Linux 设备驱动程序并进行编译 如果可以的话 这里的任何人都可以告诉我 mak
gcc
Linuxkernel
linuxdevicedriver
SSE
avx
使用 SSE/AVX 获取 __m256d 中存储的值的总和
有没有办法获得存储在 m256d 变量中的值的总和 我有这个代码 acc mm256 add pd acc mm256 mul pd row vec acc in this point contains 2 0 8 0 18 0 32 0
c
Optimization
SSE
avx
avx2
1
2
3
4
5
6
»