simd相关内容

霓虹灯中的成对加法

我想在 neon 中添加 int64x2_t 向量的 00 和 01 索引值.我找不到任何可以执行此功能的成对添加指令. int64x2_t sum_64_2;//我期待的结果应该是..//int64_t 结果 = sum_64_2[0] + sum_64_2[1]; neon 中是否有针对此逻辑的说明. 解决方案 你可以用两种方式来写.这个明确使用了 NEON VADD.I64 指令 ..
发布时间:2021-11-17 22:41:32 其他开发

ARM NEON 如何使用索引更改值

unsigned char changeValue(unsigned char pArray[256],unsigned char 值){返回 pArray[值];} 我怎样才能用大约 uint8x8_t 的霓虹灯改变这个函数?? 感谢您的帮助!! 解决方案 你不能 - NEON 没有收集负载.您可以像这样处理的唯一情况是您想要返回 8 或 16 个连续字节值. ..
发布时间:2021-11-17 22:38:31 其他开发

ARM 是否支持 64 位浮点数的 SIMD 操作?

NEON 可以对 32 位浮点数进行 SIMD 操作.但不对 64 位浮点数进行 SIMD 操作.VFU 不是 SIMD.它只能对一个元素进行 32 位或 64 位浮点运算. ARM 是否支持 64 位浮点数的 SIMD 运算? 解决方案 这仅适用于支持 ARMv8 的处理器,并且仅适用于运行 Aarch64 指令集的情况.这在 Aarch32 指令集中是不可能的. 然而,大多 ..
发布时间:2021-11-17 22:27:59 其他开发

ARM 是否支持 64 位浮点数的 SIMD 操作?

NEON 可以对 32 位浮点数进行 SIMD 操作.但不对 64 位浮点数进行 SIMD 操作.VFU 不是 SIMD.它只能对一个元素进行 32 位或 64 位浮点运算. ARM 是否支持 64 位浮点数的 SIMD 运算? 解决方案 这仅适用于支持 ARMv8 的处理器,并且仅适用于运行 Aarch64 指令集的情况.这在 Aarch32 指令集中是不可能的. 然而,大多 ..
发布时间:2021-11-17 22:27:15 其他开发

用霓虹灯内在函数替换 memcpy

我试图通过为相同的 .以下是我的逻辑: uint8_t* m_input;//大小为400 x300uint8_t* m_output;//大小为400 x300//没有提到内存创建的完整代码库memcpy(m_output, m_input, sizeof(m_output[0]) * 300* 400); 霓虹灯: int32_t ht_index,wd_index;uint8x16_t ..
发布时间:2021-11-17 22:25:22 其他开发

如何使用 Neon SIMD 将无符号字符转换为有符号整数

如何使用Neon将uint8_t数据类型的变量转换为int32_t?我找不到这样做的任何内在因素. 解决方案 假设您想将一个 16 x 8 位整数的向量转换为四个 4 x 32 位整数的向量,您可以通过先解包为 16 位来实现然后再次到 32 位: //加载 8 位向量uint8x16_t v = vld1q_u8(p);//从 p 加载 16 x 8 位整数的向量//解压为 16 位i ..
发布时间:2021-11-17 22:15:05 其他开发

ARM NEON SIMD 版本 2

与 Cortex A15 中的 NEON SIMD 和 NEON SIMD 版本 2 有什么区别? 解决方案 它增加了 SIMD FMA 指令 (VFMA.F32) 并强制要求 NEON 半精度扩展.ARM Cortex-A7、ARM Cortex-A15 和 Qualcomm Krait(不确定 ARM Cortex-A5)支持 NEONv2. ..
发布时间:2021-11-17 22:13:54 其他开发

ARM NEON SIMD 版本 2

与 Cortex A15 中的 NEON SIMD 和 NEON SIMD 版本 2 有什么区别? 解决方案 它增加了 SIMD FMA 指令 (VFMA.F32) 并强制要求 NEON 半精度扩展.ARM Cortex-A7、ARM Cortex-A15 和 Qualcomm Krait(不确定 ARM Cortex-A5)支持 NEONv2. ..
发布时间:2021-11-17 22:13:24 其他开发

霓虹灯浮点乘法比预期的要慢

我有两个浮动标签.我需要将第一个选项卡中的元素与第二个选项卡中的相应元素相乘,并将结果存储在第三个选项卡中. 我想使用 NEON 来并行化浮点乘法:同时进行四个浮点乘法而不是一个. 我预计会有显着的加速,但我只实现了大约 20% 的执行时间减少.这是我的代码: #include #include #include const int n = 100;//表格大小/* 用随机浮点数填充 ..
发布时间:2021-11-17 22:13:09 C/C++开发

NEON 向量化无符号字节的乘积和:(a[i]-int1) * (b[i]-int2)

我需要改进一个循环,因为它被我的应用程序调用了数千次.我想我需要用 Neon 来做,但我不知道从哪里开始. 假设/先决条件: w 始终为 320(16/32 的倍数). pa 和 pb 是 16 字节对齐的 ma 和 mb 为正. int whileInstruction (const unsigned char *pa,const unsigned char *pb,in ..
发布时间:2021-11-17 22:10:59 C/C++开发

如何在 ARM Cortex-a8 中使用乘法和累加内在函数?

如何使用 GCC 提供的 Multiply-Accumulate 内在函数? float32x4_t vmlaq_f32 (float32x4_t, float32x4_t, float32x4_t); 谁能解释一下我必须传递给这个函数的三个参数.我的意思是源和目标寄存器以及函数返回什么? 帮助!!! 解决方案 简单说一下vmla指令做了以下事情: 结构{浮动值[4];} fl ..
发布时间:2021-11-17 22:07:13 其他开发

常见的 SIMD 技术

在哪里可以找到有关常见 SIMD 技巧的信息?我有一个指令集,知道如何编写简单的 SIMD 代码,但我知道,现在 SIMD 功能要强大得多.它可以容纳复杂的条件无分支代码. 例如 (ARMv6),以下指令序列将 Rd 的每个字节设置为 Ra 和 Rb 对应字节的无符号最小值: USUB8 Rd, Ra, RbSEL Rd、Rb、Ra 教程/不常见的 SIMD 技术的链接也很好:) ARMv6 ..
发布时间:2021-11-17 22:05:00 其他开发

内在函数中 Neon 的校验和代码实现

我正在尝试使用内在函数为 NEON 实现校验和计算代码(2 的补码加法).当前校验和计算正在 ARM 上进行. 我的实现一次从内存中取出 128 位到 NEON 寄存器中并进行 SIMD(加法),结果从 128 位数字折叠为 16 位数字. 看起来一切正常,但我的 NEON 实现比 ARM 版本花费更多的时间. ARM 版本需要:0.860000 秒NEON 版本需要:1.260 ..
发布时间:2021-11-17 22:02:00 其他开发

如何使用 NEON 比较(大于或等于)指令?

一般如何使用NEON比较指令? 这里有一个案例,我想使用大于或等于指令? 目前我有一个, int x;.........如果(x >= 0){....} 在NEON中,我想以同样的方式使用x,只是这次x是一个向量. int32x4_t x;.........if(vcgeq_s32(x, vdupq_n_s32(0)))//达到这种效果的最佳方法是什么?{....} 解决方案 ..
发布时间:2021-11-17 21:54:22 其他开发

ARM NEON:比较 128 位值

我有兴趣找到在 Cortex-A9 内核(允许 VFP 指令)上比较存储到 NEON 寄存器(例如 Q0 和 Q3)中的值的最快方法(最低周期数). 到目前为止,我有以下几点: (1) 使用 VFP 浮点比较: vcmp.f64 d0, d6虚拟机 APSR_nzcv,fpscrvcmpeq.f64 d1, d7vmrseq APSR_nzcv,fpscr 如果 64 位“浮点数" ..
发布时间:2021-11-17 21:54:13 其他开发

在 ARMv7a 和 Neon 上通过 64 位有符号比较支持 CMGT 的最有效方法是什么?

这个问题最初是为 此处为 SSE2.由于每个算法都与 ARMv7a+NEON 对相同操作的支持重叠,因此更新了问题以包括 ARMv7+NEON 版本.应评论者的要求,此处提出此问题以表明它确实是一个单独的主题,并提供可能对 ARMv7+NEON 更实用的替代解决方案.这些问题的最终目的是找到理想的实现以供考虑到 WebAssembly SIMD. 解决方案 有符号 64 位饱和减法. ..
发布时间:2021-11-17 21:49:02 其他开发

ARM 和 NEON 可以并行工作吗?

这是参考问题:Neon Intrinsics 的校验和代码实现 将链接中列出的子问题作为单独的单独问题打开.因为不能在单线程中提出多个问题. 无论如何都要回答这个问题: ARM 和 NEON(就 arm cortex-a8 架构而言)真的可以并行工作吗?我怎样才能做到这一点? 有人可以指点我或分享一些使用ARM-NEON互操作的示例实现(伪代码/算法/代码,而不是理论实现论 ..
发布时间:2021-11-17 21:42:45 其他开发

在 SIMD 中矢量化直方图的方法?

我正在尝试在 Neon 中实现直方图.可以矢量化吗? 解决方案 不幸的是,直方图几乎不可能矢量化. 您可能可以稍微优化标量代码 - 一个常见的技巧是使用两个直方图,然后在最后组合它们.这允许您重叠加载/增量/存储,从而隐藏一些串行依赖项和相关的延迟.伪代码: 将直方图 1 初始化为全 0将直方图 2 初始化为全 0环形获取输入值 1获取输入值 2从直方图 1 加载值 1 的计数从直 ..
发布时间:2021-11-17 21:37:28 其他开发