c - 将 SIMD Vector 动态分配为 double 组

标签 c vector simd

我是 vector 新手,我一直在阅读 gcc documentation试图解决这个问题。

是否可以在运行时动态分配 vector 的大小?看来您必须在 typedef 中执行此操作,例如:

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

我想将 vector 的值设置为 double 组。我试过这样:

v4sf curr_vect = double_array;

其中 double_array 显然是一个 double 组。但这无法编译。可以做这些事情吗?

最佳答案

如果您的平台符合 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);

关于c - 将 SIMD Vector 动态分配为 double 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16662492/

相关文章:

c++ - 是否可以使用 C++11 的 for 循环从 vector 中删除?

c++ - `valarray` 是否能够利用 SIMD 支持?

c++ - 向量化 clang 中的函数

const 导致不兼容的指针类型。为什么只针对双指针?

c - 查找网格中 2 个节点之间的所有路径

c - 是否有可能在 C 中实现无限编译时间(即没有模板)?

C --> header 和变量

html - 在Shiny中使用renderUI显示矢量

c++ - 如何查找字符串中包含数字的单词

c++ - 像 `float[10][10]` 这样初始化的数组是否已针对 SIMD/SSE 进行内存对齐?