首页 > 解决方案 > 在c中创建一个对齐的浮点向量

问题描述

我正在一个使用 SIMD 指令的项目中工作,但我不知道如何创建一个在内存中对齐的向量。我正在使用 128 位的数据包(每个数据包 4 个浮点数)。

float redVector[vectorSize];

我看到很多地方人们使用结构和属性属性......欢迎任何解释。感谢你们。

标签: cmemoryvector

解决方案


假设您的编译器支持 C11,您可以使用_Alignas()

_Alignas(16) float redVector[vectorSize];

有些人更喜欢 C++ 兼容

#include <stdalign.h>

alignas(16) float redVector[vectorSize];

Pre C11 gcc 可以使用

float redVector[vectorSize] __attribute__((__aligned__(16)));

推荐阅读