动态分配SIMD向量数组是否安全



在普通C++中,我们可以使用标准库函数mallocnew关键字动态分配浮点数组。当我们想到SIMD向量时,它是像float32x4_t(用于ARM neon(这样的编译器扩展,动态分配这样的SIMD向量数组安全吗

uint32_t number_req = 32; 
float32x4_t *simd_arr = (float32x4_t *)malloc(sizeof(float32x4_t) * number_req); 

我试图限制代码中加载存储指令的数量。如果以上不是一个合法的方法,那么实现它的正确方法是什么?我们将非常感谢您的每一次帮助!提前非常感谢!

我试图限制代码中加载存储指令的数量。

以这种方式减少代码中加载/存储内部函数的数量对这没有帮助。

取消引用float32x4_t*完全等同于加载或存储本征,事实上可能相当于1向量对齐的加载本征是如何实现的。

何时可以在向量寄存器中保留向量类型取决于编译器,就像在普通整数寄存器中保留int对象一样。

加载/存储内部函数主要用于与编译器进行对齐通信,并使其对类型保持满意;看看编译器生成的asm,看看到底发生了什么。

您可能想要aligned_alloc,它是在C11中引入的,用于取代malloc

或memalign((,在所有Linux libc库中都可用

相关内容

  • 没有找到相关文章

最新更新