gpt4 book ai didi

c - Neon 内在功能是通过从所有元素中减去最小元素来防止溢出[无循环]

转载 作者:行者123 更新时间:2023-11-30 16:52:17 25 4
gpt4 key购买 nike

我想找出一种巧妙的方法来防止在 C for ARM 中使用 Neon Intrinsic 时发生溢出。以下是逐个元素执行的逻辑:

min = array[0]
for(i=1;i<64;i++)
{
if(min > array[i])
{
min = array[i];
}
}
for(i=0;i<64;i++)
{
array[i] -= min;
}

我想要一个替代解决方案,通过以 SIMD 方式执行操作,消除逐个元素操作的需要。谢谢。

注意:在我的例子中,我使用了四个 uint8x16_t 数据类型 vector 。我想从中找到一个最小值并执行标准化(即,我的数组有 64 个元素,分为四个 uint8x16_t vector )。

最佳答案

  1. 多次使用 vmin_u8 来累积 vector 中的最小值(例如 8x8)

  2. 对同一 vector 使用 vpmin_u8 'n' 次 - 冒泡排序(此处,n = 8)

  3. 使用 vdup_8(sorted_result[0]) 构造目标长度的 vector

  4. 使用 vsub_u8 进行减法 => 标准化。

    --ffox

关于c - Neon 内在功能是通过从所有元素中减去最小元素来防止溢出[无循环],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41331630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com