c - 如何使用 NEON 优化 a[i] = b[c[i]]

标签 c optimization arm simd neon

我在这里有一个非常简单但很大(n很大)的循环:

for (i=0; i<n; i++)
{
    dst[i] = src[table[i]];
}

我想使用 NEON 对其进行优化,但我不知道如何处理这部分:src[table[i]]。 是否可以优化?如果是,怎么办?

最佳答案

感谢@Paul R 和他的评论:

This is effectively a gathered load, and is not supported in NEON.See: stackoverflow.com/questions/11502332/…

由于NEON无法优化,我尝试了OpenMP ,并取得了显着的进步。而且代码也相当简单:

#pragma omp parallel for
for (i=0; i<n; i++)
{
    dst[i] = src[table[i]];
}

关于c - 如何使用 NEON 优化 a[i] = b[c[i]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31423641/

相关文章:

c - 用 C 语言将数组旋转 180°

C 编程 - 整数值打印不正确

c - 在程序中进行函数调用后,控制跳转到未指定的内存位置

c - 将文件中的 MachineCode 加载到内存中并在 C 中执行——mprotect 失败

c++ - 不要在 GCC 中使用 -O3 标志优化特定循环

asp.net - 如何加快 Google adsense 和分析加载时间?

java - 在Java中获取系统 block 大小

azure - 用于与现有 VNET 子网集成应用服务的 ARM 模板

c - 不了解 ARM 硬件堆栈(使用 IAR)

c++ - 存在 ARM GNU 编译器 -j[jobs] 选项