【发布时间】:2017-03-19 05:27:22
【问题描述】:
是否可以告诉编译器vector[index] 对特定索引具有 128 位内存对齐?
或者,我们不能用索引来做,必须用指针来做?
【问题讨论】:
-
我认为编译器会通过查看数组存储的数据类型来知道这一点
-
支持比基本对齐更大的对齐(即
alignof(std::max_align_t)将始终取决于实现。也就是说,C++17 增加了对扩展对齐的更好支持,只要您使您的type 对齐,元素也会如此。另一方面,如果您的类型较小并且您只想对齐 some 元素,那么 a) 您应该重新设计代码以利用类型系统,并且 b) 您可能需要编写一些手动代码。 -
@Nana Osaberima:你的意思是只使用 128 位元素的向量吗?那么,只要我们能“告诉”编译器第 0 个元素对齐,编译器就会知道每个元素都对齐了?唔。该怎么做?
-
在 b) 中@KerrekSB 所说的行中,您可以编写自己的类型、重载括号运算符并对索引 index 进行条件对齐移位。
-
@Pedro Boechat:即使索引指向对齐的内存地址,编译器也可能不知道...
标签: c++ vector simd memory-alignment