C - 将所有分配的双阵列对齐至32 bytes
C++ - align all allocated double arrays to 32bytes
我有一个很大的代码,我想通过AVX指令优化某些操作。根据我的测试,改进应高达4倍。
但是,该代码与新操作员使用普通的旧数组(无std :: vector(。
double * tmp = new double[size];
问题是,对于AVX,我需要所有的双阵列对齐到32个bytes边界。解决方案是用aligned_alloc
(或MSVC中的_aligned_malloc
(替换所有new
,并用足够的释放功能替换释放功能。问题是我必须仔细研究所有代码并找到所有new
,希望不要忘记一个代码,将来每个人都不得不忘记使用Aligned Alocator。
还有其他方法吗?我曾经想过仅适用于double
的new
运算符,但我不确定这是正确的方法,如果是这样,则如何正确/安全地执行此操作。
i无法用自己的对齐的静态器切换到std::vector
,因为将数组作为输入参数的某些外部外部libs。
还有其他方法吗?是的,_mm_loadu_*
和_mm_storeu_*
,其中u
代表非对齐。
相关文章:
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 如何创建一个QTableWidgetItem,用长文本右对齐,左边有省略号
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?
- 64位机器上的C++内存对齐
- 为什么我可以将变量存储在不是其最小对齐方式的倍数的地址?
- 使 std::vector 分配对齐内存的现代方法
- C++ cout 将双精度对齐到精度 2 并正确对齐
- 在 64 位边界上对齐C++结构数组?
- 使用 g++7 构建的代码在访问未对齐的内存时崩溃
- 在 capnp FlatArrayMessageReader 的对齐内存缓冲区中接收 zmq 消息
- 是否值得对齐变量?
- 初始化派生结构的基部分/意外打包派生结构字段以对齐基结构的间隙
- 对齐和对齐的实际用例C++关键字
- 如何减少代码的运行时间以对齐文本?
- 指向包含对齐 C 结构C++类的 C 指针的对齐问题
- Linux C++ 中的页面对齐内存分配
- C++ 类层次结构中的"对齐"是什么意思?
- C - 将所有分配的双阵列对齐至32 bytes
- 如何对齐2d阵列元素以形成3*3矩阵
- std::阵列对齐