simd 相关问题

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

为什么我的 %xmm3 寄存器使用 vbroadcastsd 中的第一个参数而不是第四个?

我正在尝试在汇编中实现一个函数,该函数使用 SIMD 向量指令和寄存器进行一些基本计算。函数签名为 void map_poly_double_vec(double* input, dou...

回答 1 投票 0

如何使用 x86-64 SIMD 向量指令和寄存器进行多项式计算

我需要编写一个 x86-64 汇编函数,该函数使用 x86 矢量/SIMD 指令和 %ymm 寄存器来计算此表达式:x*(x*(a*x + b) + c) + d。 该函数将具有以下签名:...

回答 1 投票 0

优化代码以使用 SIMD 指令检测数组中的相邻项?

我有一个用 C++ 编写的函数,用于检查数组中两个特定元素是否彼此相邻。该函数运行良好,但我想使用 SIMD 对其进行优化以提高性能。哈...

回答 1 投票 0

AssemblyScript 中的 SIMD

嘿,我在 AssemblyScript 中创建了一个 Box Blur 算法。 为了提高效率,我想使用 SIMD 操作。 例如我的看起来像这样: for(设列:i16 = x + 偏差Ba...

回答 2 投票 0

SIMD 性能减慢两倍,无需额外复制

我一直在优化一些代码,并偶然发现了一些特殊的情况。 下面是两个汇编代码: ;快速地 lea rcx,[rsp+50h] 调用 qword ptr [Random_get_float3] ;这个函数...

回答 1 投票 0

AVX2 在生成 uint 的同时消耗字节?

慢慢学习SIMD,但在尝试用SIMD解决问题时,仍然有一些方面我无法理解。其中之一是当输入小于

回答 1 投票 0

AVX 和 AVX2 之间的区别

下面是 AVX2 中矩阵乘法的实现。我使用的机器仅支持 AVX,因此我尝试使用 AVX 实现相同的配置。 然而,我在破译方面遇到了困难

回答 1 投票 0

为什么 ARM NEON SIMD Sum 比串行 sum 慢?

我一直在尝试在我的 M2 Mac 上对内存带宽进行基准测试,我注意到一件事,当我尝试使用 ARM NEON SIMD 时,它似乎具有较慢的处理时间和较低的内存带宽....

回答 1 投票 0

ushorts 的 AVX2 MaskLoad/MaskStore?

我一直在尝试弄清楚如何使用 ushorts 进行掩模加载/存储,作为实验,而不是实际要求。 MaskLoad/MaskStore 没有接受指向

回答 1 投票 0

字节数组的AVX2计算

我对 SIMD 相当陌生,但我一直在尝试如何在 CPU 上加速图像处理(我很欣赏 GPU 对此更好,但这更多的是一个学习练习) 我想要...

回答 1 投票 0

GCC 向量扩展的内存对齐问题

我正在尝试使用GCC向量扩展(https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html)来加速矩阵乘法。这个想法是使用 SIMD 指令来乘法和加法四个 f...

回答 1 投票 0

将半字节解包为字节 - 直接指令/实现和保持符号的有效方法

const __m128i 掩码 = _mm_set1_epi8(0x0F); const __m128i vec_unpack_one = _mm_and_si128(vec, 掩码); const __m128i vec_unpack_two = _mm_and_si128(_mm_srli_epi16(vec, 4), mask); 我在这里有一个...

回答 1 投票 0

Raspberry Pi 5上的Neon加速RGB2GRay,128位(Q寄存器)比64位(D寄存器)慢,为什么?

如标题所示,我有一个 Raspberry Pi 5(Armv8 的 Cortex-A76;四核),我使用 OpenCV 在上面做一些事情。 我使用 cv::cvtColor 来获取 RGB2Gray,在 Raspberry Pi 5 上速度很慢,所以我使用 neon...

回答 1 投票 0

Neon 内在函数中 vhadd_s8 的用法是什么?

我认为缩小加法的行为很奇怪。例如,int8x8_t vhadd_s8(int8x8_t a, int8x8_t b): 签名减半添加。该指令将相应的有符号整数值相加...

回答 1 投票 0

使用 SSE 将 8 位整数除以 4(或移位)

如何使用 SSE 内在函数将 16 个 8 位整数除以 4(或将它们右移 2)?

回答 2 投票 0

如何在使用输入数据时实现 FMA 的峰值触发器吞吐量(同时保持所需的屋顶线计算/负载比)?

我尝试在加载输入数据时实现 SIMD FMA 计算的峰值浮点吞吐量。我加载相对计算/内存加载速度允许的尽可能多的数据。我还应用了缓冲来避免

回答 1 投票 0

numpy 中哪些运算使用 SIMD?

下午好! 目前,我正在挖掘 numpy 速度快的原因。 更具体地说,我想知道为什么 np.sum() 这么快。 我的一个建议是 np.sum() 使用某种 SIMD 优化,但是...

回答 2 投票 0

内联调用always_inline‘_mm_mullo_epi32’失败:目标特定选项不匹配

我正在尝试使用使用 SIMD 内在函数的 cmake 编译 C 程序。 当我尝试编译它时,出现两个错误 /usr/lib/gcc/x86_64-linux-gnu/5/include/smmintrin.h:326:1:错误:内联 fa...

回答 2 投票 0

避免频率缩放以提高 SIMD FMA 性能

以下程序在运行不同次数的迭代时显示出非常可变的性能。原因可能是什么?如何获得一致的测量结果? 该程序描述了最大

回答 1 投票 0

在循环迭代之间消耗整个缓存线有什么特别的好处吗?

我的程序添加了浮点数组,并在通过 MSVC 和 G++ 进行最大优化编译时展开 4 倍。我不明白为什么两个编译器都选择展开 4x,所以我做了一些测试,发现只有

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.