simd 相关问题

单指令,多数据(SIMD)是使每个指令在小块或数据元素矢量上操作的概念。 CPU矢量指令集包括:x86 SSE和AVX,ARM NEON和PowerPC AltiVec。为了有效地使用SIMD指令,数据需要采用数组结构形式,并且应该在更长的流中发生。天真的“SIMD优化”代码通常比原始代码运行速度慢。

如何使用AVX512指令通过alpha混合叠加图像?

我有两个图像 A 和 B,它们存储为 ARGB 数据的字节数组: 图像 A:[a0, r0, g0, b0, a1, r1, g1, b1, ...] 图像 B:[a0, r0, g0, b0, a1, r1, g1, b1, ...] 我想叠加图像 B...

回答 1 投票 0

vfmadd132pd 在 AMD Zen 3 架构上速度慢吗?

我使用 AVX-256 指令在 .NET 中创建了两个版本的点积。一种使用融合乘加,另一种则分离为乘法和加法。 公共静态不安全 Vector256<

回答 3 投票 0

SSE加载和添加

假设我有两个向量,由两个 double 类型的数组表示,每个数组的大小为 2。我想添加相应的位置。所以假设向量 i0 和 i1,我想添加 i0[0] + i1[0] 和 i0[1] + i...

回答 2 投票 0

在 System.Numerics 中利用支持 SIMD 的类型的正确语法?

相当简单的问题,但最终并不那么明显,看下面的例子: var a = 1.0f; var b = 2.0f; var c = 3.0f; var d = 4.0f; var x = new Vector4(a * a, b * b, c * c, d * d); // 不...

回答 1 投票 0

AVX 中缺少字节粒度屏蔽存储

我正在将代码从 SSE 迁移到 AVX。该代码使用_mm_maskmoveu_si128,它根据掩码有条件地存储16个字节。 AVX 等效项是 32 字节的 _mm256_maskmoveu_si256,但是这个

回答 1 投票 0

AVX 缺少蒙面商店

我正在将代码从 SSE 迁移到 AVX。该代码使用_mm_maskmoveu_si128,它根据掩码有条件地存储16个字节。 AVX 等效项是 32 字节的 _mm256_maskmoveu_si256,但是这个

回答 1 投票 0

C simd AVX1 m256 水平最大最小标准化

我自己弄清楚了,没有找到avx1的任何答案(没有avx2)。 因此,这是未来寻求答案的人的答案。 8-float m256 max,然后可用于标准化,因为 _max 将是...

回答 1 投票 0

如何将位对从 uint64_t 解压缩为 __m256i?

考虑 uint64_t,其中每个连续的 2 位都是一个数字:b00 代表 0,b01 代表 1,b11 代表 -1,b10 未使用(从未发生过,假设没有对其进行处理)。 如何将这样的uint64_t解压成_...

回答 1 投票 0

如何将 8 个打包的 32 位整数(在 __m256i 中)的 +-1 符号打包成 64 位整数的字节?

给定 __m256i 的打包 32 位有符号整数,如果原始 __m256i 中相应的 32 位有符号整数大于或

回答 1 投票 0

为什么如果使用较小宽度的整数类型,整数数组的矢量化计算会更快?

我使用 NumPy 测试了不同整数宽度的整数数组上向量化算术运算的执行时间差异。我创建 8 位、16 位、32 位和 64 位整数数组 w...

回答 1 投票 0

上交所内在函数atan2

我需要一个非常快的atan2来从sobel值中获取梯度(我正在实现精明的边缘算法。)。有谁知道一个非常快速的实现,最好是内在函数(SIMD)或非常......

回答 2 投票 0

C simd _m128 晶圆厂

如何为 __m128 向量制作 fabs() ? 我是否必须使用符号位将原始向量乘以 1.0f/-1.0f ? 没有找到任何指令集来做到这一点。 我不想要 __m256 或 512。我正在搜索...

回答 2 投票 0

SIMD _mm_store_si128 | _mm_storeu_si128 未正确存储

我有一根绳子 const 有符号 char From[] = { 0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b00000101, 0b00000110, 0b00000111, 0b00001000, 0b00001001, 0b00001010, 0b000010...

回答 1 投票 0

向量化并在 numpy 中

我的用例是使用numpy进行位图(即使用位编码的集合操作)。我将 numpy 数组与 uint64 一起使用。如果我有一个包含 3 个条目的查询,我可以执行 bitmap | query !=0 检查是否有

回答 1 投票 0

C++:是否有理由为类型设置alignof > sizeof

如这个问题所示,对齐方式可能大于类型的大小,只是不能创建它的数组。 但是,您可以创建一个 char[alignof(T)] 和 reinterpret_c 数组...

回答 1 投票 0

带有 Riscv Vector 向量内联的 C 代码

我在spike上模拟了裸机通用Riscv程序。现在我想在spike上运行裸机向量程序,但我认为将用于交叉编译和生成的C程序...

回答 0 投票 0

_mm512_i32scatter_ps 当索引重复时

当您调用 _mm512_i32scatter_ps 并且索引重复时会发生什么?它存储总和吗?它只存储一个吗?是UB吗?我似乎找不到任何关于这种边缘情况的文档,而且我不......

回答 1 投票 0

混合 4 宽和 8 宽指令是否会严重损害性能?

我有这个 AVX 代码,它的运行速度比 SSE4 版本慢得多,我正在尝试找出原因。 SSE4 中的这个小循环: (gcc 13.1 的汇编) .L6: movaps xmm1, XMMWORD PTR [rbx+rsi] ...

回答 0 投票 0

如何对齐特征矩阵的每一列?

如果 Eigen 矩阵中的行数不是对齐步长的倍数(通常是 16 字节),那么看起来只有矩阵的第一列会对齐。例如: 本征::MatrixXf ...

回答 1 投票 0

为什么 SIMD 指令不能提高性能? (Mac,英特尔 x86_64)

我一直在尝试调试一些向量标量整数加法性能问题,并注意到启用/禁用 SIMD 指令不会对性能产生影响。我在做什么吗...

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.