neon 相关问题

NEON是ARM处理器的矢量处理指令集。

使用 SIMD 指令快速搜索 uint8_t 向量中的特定位置

我有一个由 uint8_t 符号组成的向量 V,我需要将其划分为一系列不重叠的短语。划分算法很简单:如果 V[i-1]>V[i] 且 V[i]&...

回答 1 投票 0

Xcode Apple Silicon 未编译 ARM64 半精度 neon 指令:指令操作数无效

迄今为止,我在 Xcode/CLANG 中编译和运行复杂的 ARM Neon 汇编语言例程没有任何问题,而且 Apple M1 据说支持 ARMv8.4。 但是 - 当我尝试使用半精度时...

回答 2 投票 0

ARM Neon 内在函数 - FMA 中的通道

我是 ARM NEON 内在函数的新手,正在查看它的文档。他们提供了一组很棒的示例,其中包括一个矩阵乘法示例,该示例使用他们的向量 FMA 指令...

回答 1 投票 0

使用 SSE 和 NEON 进行外环矢量化

我想在 ARM NEON 和 SSE 上对以下循环进行矢量化: 对于 (int i = 0; i < n; ++i) { b[i][0] = 0.0; for (int j = 1; j < n; ++j) { b[i][j] = b[i][j - 1] + a[i][j]; } } This

回答 2 投票 0

ARM64 ASIMD 内在函数将 uint8_t* 加载到 uint16x8(x3) 中?

我正在寻找一种将 8 位源数组 (uint8_t*) 中的元素加载到数据格式为 uint16x8_t 或更好的 uint16x8x3_t 的 AArch64 NEON / ASIMD 寄存器中的方法。所以基本上,每个字节......

回答 1 投票 0

如何在 Android 上使用 float16 neon 内在函数?

如何在 Android 上使用arm float16 内部函数? 考虑以下程序: #包括 int main(int, char** argv) { const float16x8_t a = vdupq_n_f16(1.0F); 常量

回答 1 投票 0

有ARM Neon Gather指令吗?

有ARM Neon SIMD Gather指令吗? 我正在寻找与以下 Intel Intrinsic 指令等效的指令: _mm_i32gather_ps(blob, 索引, 4); 我可以找到相关说明,例如...

回答 1 投票 0

如何计算 ARM Neon 上的按位独占前缀奇偶校验?

我有一个特定的功能,我需要使其便携且高效。 这是简单的实现,仅供参考: 模板 常量表达式 T

回答 1 投票 0

如何用Neon将8位YUV420图像转换为RGB?

我是 Neon 新手。我想编写一个代码,用 Neon 将 YUV420 转换为 RGB。像素为 8 位深度,我需要将它们转换为 int32_t 或 float(但仍限制在 0-255 范围内)。不过,我...

回答 1 投票 0

如何用Neon处理8位深度的图像?

我是 Neon 新手。我想编写一个代码,用 Neon 将 YUV420 转换为 RGB。像素是 8 位深度,我需要将它们转换为 int32 或 float。但是,我还没有找到任何 Neon 指令可以执行...

回答 1 投票 0

如何使用 SSE/SSE2/AVX/... 对 3、5、7、9 个输入进行有效的按位多数投票?

我有几个(例如 3、5、7 或 9 个)大小相同的大数据块(例如 100KB-100MB),并且想要进行按位多数投票,以获得每个数据块中最常用的值乙...

回答 1 投票 0

vmovq_n_f32() 和 vdupq_n_f32() 之间的区别

我现在正在学习arm neon。我发现 vmovq_n_f32() 和 vdupq_n_f32() 似乎做了同样的事情,它们都用一些值初始化 float32x4_t 变量。那么他们有什么区别呢? 我试过了

回答 1 投票 0

优化arm64的simd指令(mov),将交替字节打包成连续字节

我有这个V6.16b寄存器:0a,0b,0c,0d,0e,0f,07,08,0a,0b,0c,0d,0e,0f,07,08 目标是:ab,cd,ef,78,ab,cd,ef,78 我是这样做的: 电影 v7.8h, 0x04 // 04,00,04,00,04,00,04,00...

回答 1 投票 0

针对arm64优化simd指令(mov)

我有这个V6.16b寄存器:0a,0b,0c,0d,0e,0f,07,08,0a,0b,0c,0d,0e,0f,07,08 目标是:ab,cd,ef,78,ab,cd,ef,78 我是这样做的: 电影 v7.8h, 0x04 // 04,00,04,00,04,00,04,00...

回答 1 投票 0

使用 SIMD (ARM) 的快速位矩阵 (64x64) 转置算法

我想了解是否有一种快速方法可以使用 ARM SIMD 指令进行矩阵转置(64x64 位)。 我尝试探索ARM SIMD的VTRN指令,但不确定它的效果...

回答 4 投票 0

如何在Go的汇编器中更高效地将全局数据加载到NEON寄存器?

arm64 asm代码中有p256one全局数据作为示例: 数据 p256one<>+0x00(SB)/8, $0x0000000000000001 数据 p256one<>+0x08(SB)/8, $0xffffffff00000000 数据 p256one<>+0x10(SB)...

回答 1 投票 0

错误:使用未声明的标识符“vmaxq_f16”

每当我尝试使用 NEON 16 位浮点内在函数时,都会收到此错误。 我不会遇到其他数据类型内在函数的任何问题。 是不是可以在 Android 上使用 NEON 16 位浮点内部函数?...

回答 2 投票 0

neon指令集中vfmaq_f32和vmlaq_f32有什么区别,以及运行速度和精度上的区别

你好,neon指令集中vfmaq_f32和vmlaq_f32有什么区别,运行速度和精度有什么区别 在 macOS ARM64 上,代码运行一致 #包括 你好,neon指令集中vfmaq_f32和vmlaq_f32有什么区别,运行速度和精度有什么区别 在 macOS ARM64 上,代码运行一致 #include<arm_neon.h> #include<iostream> using namespace std; int main(){ float a = 12.3839467819; float b = 21.437678904; float c = 4171.42144; printf("%.17f\n",a); printf("%.17f\n",b); printf("%.17f\n",c); printf("%.17f\n",a+b*c); float32x4_t a_reg = vdupq_n_f32(a); float32x4_t b_reg = vdupq_n_f32(b); float32x4_t c_reg = vdupq_n_f32(c); float32x4_t res_reg = vfmaq_f32(a_reg, b_reg, c_reg); float res[4] = {0.f}; vst1q_f32(res,res_reg); printf("%.17f\n",res[0]); res_reg = vmlaq_f32(a_reg, b_reg, c_reg); vst1q_f32(res,res_reg); printf("%.17f\n",res[0]); res_reg = vmulq_f32(b_reg, c_reg); res_reg = vaddq_f32(res_reg, a_reg); vst1q_f32(res,res_reg); printf("%.17f\n",res[0]); return 0; } vfmaq_f32 定义为单个融合操作,而 vmlaq_f32 can 通过乘法然后累加来实现。 我想到了两种解释。首先,在某些时候,融合版本(FMLA指令)可能是可选指令(我不知道什么时候,而且我有点懒得去挖掘真正旧的文档)。第二种可能性似乎更有可能,那就是融合版本在某些时候可能会慢一些。 如今,编译器看起来几乎只是将两者编译为相同的指令,因此它实际上是一个别名,但如果您想要准确性,您可能仍然应该使用vfmaq_f32,但如果您对速度更感兴趣,则vmlaq_f32 .

回答 1 投票 0

vfmaq_f32真的有更高的运行精度吗?

vfmaq_f32真的有更高的运行精度吗? 我猜 vfmaq_f32 的精度根据不同架构中浮点处理单元的位扩展的长度而变化......

回答 1 投票 0

NEON:优化代码

我目前正在使用 ARM Neon,并编写了以下函数,一个用 C 语言,一个用 NEON Intrinsics 来比较速度。这些函数比较两个数组。参数 cb 是

回答 1 投票 0

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