gpt4 book ai didi

iphone - iOS - 使用 Accelerate.framework 对向量进行按位异或

转载 作者:行者123 更新时间:2023-12-03 20:30:27 25 4
gpt4 key购买 nike

我正在尝试执行 bitwise XOR预定值和数组的每个元素之间。

这显然可以在像这样的循环中完成(在伪代码中):

int scalar = 123;
for(int i = 0; i < VECTOR_LENGTH; i++) {
int x_or = scalar ^ a[i];
}

但我开始了解使用 Accelerate.framework 的性能增强.

我正在查看文档 Accelerate.framework ,但我还没有看到做基于元素的 bitwise XOR有人知道这是否可能吗?

最佳答案

加速不执行有问题的操作。不过,您可以很容易地编写自己的矢量代码来完成此操作。一个不错的方法是使用 clang 向量扩展:

#include <stddef.h>
typedef int vint8 __attribute__((ext_vector_type(8),aligned(4)));
typedef int vint4 __attribute__((ext_vector_type(4),aligned(4)));
typedef int vint2 __attribute__((ext_vector_type(2),aligned(4)));

int vector_xor(int *x, size_t n) {
vint8 xor8 = 0;
while (n >= 8) {
xor8 ^= *(vint8 *)x;
x += 8;
n -= 8;
}
vint4 xor4 = xor8.lo ^ xor8.hi;
vint2 xor2 = xor4.lo ^ xor4.hi;
int xor = xor2.lo ^ xor2.hi;
while (n > 0) {
xor ^= *x++;
n -= 1;
}
return xor ^ 123;
}

这非常好,因为 (a) 它不需要使用内在函数,并且 (b) 它不会将您束缚于任何特定的架构。它为您编译的任何架构生成相当不错的代码。另一方面,它将您与 clang 联系起来,而如果您使用内在函数,您的代码也可以与其他编译器一起使用。

关于iphone - iOS - 使用 Accelerate.framework 对向量进行按位异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20922684/

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