c - 在c中创建一个对齐的浮点向量
问题描述
我正在一个使用 SIMD 指令的项目中工作,但我不知道如何创建一个在内存中对齐的向量。我正在使用 128 位的数据包(每个数据包 4 个浮点数)。
float redVector[vectorSize];
我看到很多地方人们使用结构和属性属性......欢迎任何解释。感谢你们。
解决方案
假设您的编译器支持 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)));
推荐阅读
- haskell - 我将如何从 Haskell 的列表中删除某些内容
- acumatica - 如何修复 AR 老化敏感报告中的“无法解析表名:[PX.Objects.GL.FinPeriod]”错误
- r - 计算 model_matrix 中所有可能的交互
- asp.net-core - 如何解决“包罗万象的参数只能显示为路径模板的最后一段”。
- python - 我有多少行无注释代码?
- javascript - 抓取浏览器中呈现的文本
- go - 使用 ExampleTest 进行测试 - 预期的输出不匹配
- yii2-model - Yii2 Ajax 模态发布与 Ajax 验证工作但模型不保存
- laravel - Laravel:如何通过 updateOrCreate 获取新旧值
- javascript - Jquery“转到”在 php“while 循环”中无法正常工作