动态分配SIMD Vector作为双精度数组

时间:2013-05-21 05:07:35

标签: c vector simd

我是向量的新手,我一直在阅读gcc documentation试图了解它。

是否可以在运行时动态分配向量的大小?看起来好像你必须在typedef中这样做:

typedef double v4sf __attribute__((vector_size (16)));

我想将向量的值设置为双精度数组。我试过这样:

v4sf curr_vect = double_array;

double_array显然是一个双打数组。但这无法编译。是否可以做这些事情中的任何一个?

1 个答案:

答案 0 :(得分:2)

如果您的平台符合POSIX标准,则可以使用posix_memalign() function实现对齐的动态内存分配:

double *p;
if (posix_memalign((void **)&p, 16, sizeof(*p) * 16) != 0) {
    perror("posix_memalign");
    abort();
}

p[0] = 3.1415927;
// ...

free(p);