问题标签 [neon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1735 浏览

math - 带有 NEON 的 ARM 汇编中的高级数学函数

嗨,我对组装有点陌生,我开始熟悉在一些新的 ARM 芯片中结合 NEON 协处理器的 ARM 组装。我不确定如何做的一件事是高级数学函数,如 sin、cos、tan、exp 等。如果我反汇编具有这些数学函数的 C 代码,它们似乎是外部的。

0 投票
1 回答
851 浏览

ios - 用于图像处理的 arm asm/neon 优化

我目前正在开发 ios 上的绘画应用程序。

我使用直接绘制到 NSMutableData 缓冲区并使用我的画笔进行混合,如下所示:

有什么优化建议吗?

我以前尝试过使用 neon,但我有一个我无法修复的错误(边界像素有问题)

我像这样迭代像素 2 x 2:

0 投票
1 回答
419 浏览

android - 将 JNI Java 数组类型转换为 NEON

我敢肯定人们一直都在这样做,但我在这里过得很艰难。我将浮点数组传递给 JNI 函数,但随后我打算使用 ARM 的 NEON SIMD 功能对这个数组执行一些操作。无论如何,我都不是 C 专家,所以我有点卡住了。这是我正在尝试做的事情的草图。

我必须想出如何使用 C 对整个数组进行类型转换。此外,也许有一种方法可以在从 Java ( x = (*env)->GetFloatArrayElements(env,input,0)) 中提取数组条目时直接执行此操作。这样做的正确方法是什么?

0 投票
3 回答
1227 浏览

xcode - ARM NEON 汇编程序错误:“指令不能有条件”

根据手臂信息中心vadd 可以有条件地执行但是当我尝试

Xcode 返回

我注意到的一件事是,似乎只有 NEON 指令会出现此错误。VFP 指令不会产生这些错误。

是否必须设置编译器标志才能启用 NEON 条件指令?

0 投票
3 回答
29854 浏览

android - 关于 Android,Neon 是什么?

我是Android的初学者。我的朋友听到了“霓虹灯”。所以我做了谷歌,发现了这个

提到它,Neon 与 Android 操作系统或所有移动操作系统的多媒体有关,是吗?请与我分享更多。

0 投票
1 回答
5075 浏览

c++ - NEON 与英特尔 SSE - 某些操作的等效性

我在弄清楚几个英特尔 SSE 操作的 NEON 等效性时遇到了一些麻烦。NEON 似乎无法一次处理整个 Q 寄存器(128 位值数据类型)。我在 arm_neon.h 标头或NEON 内在函数参考中没有找到任何内容。

我想要做的是以下内容:

我查看了 NEON 提供的移位操作,但找不到执行上述操作的等效方法(我对 NEON 没有太多经验)。是否有可能做到以上(我想我只是不知道怎么做)?任何指针都非常感谢。

0 投票
3 回答
892 浏览

c++ - NEON 矢量数据类型的别名

NEON 是否支持矢量数据类型及其标量分量的别名?

例如(英特尔 SSE)

以上将允许我这样做:

别名 la Intel 它将允许将我的指针前进到我想要处理的下一个块,而无需管理额外的计数和索引。

0 投票
3 回答
22178 浏览

c++ - Cortex A9 NEON 与 VFP 使用混淆

我正在尝试为 Cortex A9 ARM 处理器(更具体地说是 OMAP4)构建一个库,但对于在浮点运算和 SIMD 的上下文中何时使用 NEON 和 VFP 有点困惑. 需要注意的是,我知道 2 个硬件协处理器单元之间的区别(也如此处所述SO),我只是对它们的正确使用有一些误解。

与此相关,我正在使用以下编译标志:

我已经阅读了 ARM 文档、很多 wiki(比如这个)、论坛和博客文章,并且每个人似乎都同意使用 NEON 比使用 VFP 或至少混合 NEON 更好(例如使用 instrinsics 来实现一些算法在 SIMD 中)和 VFP 不是一个好主意;我还不能 100% 确定这是否适用于整个应用程序\库的上下文或仅适用于代码中的特定位置(函数)。

所以我使用霓虹灯作为我的应用程序的 FPU,因为我也想使用内在函数。结果,我遇到了一些麻烦,我对如何在 Cortex A9 上最好地使用这些功能(NEON 与 VFP)的困惑只是进一步加深而不是澄清。我有一些代码可以为我的应用程序进行基准测试,并使用一些定制的计时器类,其中计算基于双精度浮点数。使用 NEON 作为 FPU 会产生完全不合适的结果(尝试打印这些值会导致打印主要是 inf 和 NaN;相同的代码在为 x86 构建时可以顺利运行)。因此,我将计算更改为使用单精度浮点,因为据记载,NEON 不处理双精度浮点. 我的基准测试仍然没有给出正确的结果(最糟糕的是,现在它在 x86 上不再工作了;我认为这是因为精度下降,但我不确定)。所以我几乎完全迷失了:一方面我想将 NEON 用于 SIMD 功能,并将其用作 FPU 并不能提供正确的结果,另一方面将它与 VFP 混合似乎不是一个好主意。在这方面的任何建议将不胜感激!

我在上面提到的 wiki 的文章中找到了在 NEON 的上下文中应该为浮点优化做些什么的总结:

"

  • 只使用单精度浮点
  • 当您发现瓶颈 FP 函数时,请使用 NEON 内在函数/ASM。你可以比编译器做得更好。
  • 最小化条件分支
  • 启用 RunFast 模式

对于softfp:

  • 内联浮点代码(除非它非常大)
  • 通过指针而不是通过值传递 FP 参数,并在函数调用之间进行整数工作。

"

我不能硬使用浮动 ABI,因为我无法链接到我可用的库。大多数建议对我来说都是有意义的(除了“runfast 模式”,我不完全理解应该做什么以及此时我可以做得比编译器更好的事实)但我一直得到不一致的结果和我现在什么都不确定。

谁能阐明如何正确使用 Cortex A9/A8 的浮点和 NEON 以及我应该使用哪些编译标志?

0 投票
1 回答
846 浏览

kinect - 将 SSE2 迁移到 Arm NEON intrinsincs

我在 SSE2 intrinsincs 中有以下代码。它处理来自 Kinect 的输入。

这基本上将 11 uint8_t (r0-r10​​) 解压缩到 SSE 寄存器中的 8 uint16_t(mmask 是常量并且之前创建的)。然后它从两个用作边界的数组中加载另外两个带有相应元素的寄存器。它检查它们并创建一个寄存器,其中不符合标准的元素被清零。然后它存储它们并进一步处理每个元素。当没有元素通过时,移动掩码可以作为一个很好的优化,在这种情况下可以跳过处理。

这很好用,现在我也想将它移植到 NEON。除了两部分外,大部分内容都很简单。查看 SSE2 代码中的汇编器输出(gcc),我发现它不是在 _mm_setr_epi16 中进行 8 次 uint16_t 移动,而是将它们转换为 uint32_t 并最终进行 4 次移动。这似乎很有效,因为编译器会处理它,所以我没有更改代码。我应该在 NEON 案例中手动应用它吗?而不是 8 个 vsetq_lane_u16 进行移位并执行 4 个 vsetq_lane_u32?我会遇到字节顺序问题吗?这是否值得?

最后一部分是移动蒙版,因为我找不到等价物。任何人都可以提出一些建议吗?

0 投票
3 回答
1187 浏览

performance - Qualcomm Scorpion 双核 ARM NEON 代码有问题?

我正在为 Android 开发一个本机库,我在其中使用 ARM 程序集优化和多线程,以便在双核 ARM 芯片组 MSM8660 上获得最大性能。在进行一些测量时,我注意到以下几点:

  1. NEON优化的单线程库比ARMv6优化的单线程更快(如预期的那样)。
  2. 具有ARMv6优化的多线程库比具有ARMv6优化的单线程更快(如预期的那样)。
  3. 具有NEON优化的多线程库比具有NEON优化的单线程(绝对不是预期的!)。

我已经尝试在网上搜索以解释为什么会这样,但到目前为止还没有找到。似乎所有内核都共享相同的 NEON 管道或类似的东西,但所有示意图似乎都表明每个内核都应该有自己的 NEON 单元。有谁知道为什么会这样?