gpt4 book ai didi

c++ - SIMD 内部函数 : aligned operation different than unaligned?

转载 作者:搜寻专家 更新时间:2023-10-31 00:11:56 25 4
gpt4 key购买 nike

我开始学习一些关于 SIMD 内在函数的知识。我注意到对于某些函数,存在对齐和未对齐版本,例如 _mm_store_si128_mm_storeu_si128。我的问题是,这些函数的执行方式是否不同?如果不同,为什么会有两个不同的版本?

最佳答案

我会说“始终保持一致(只要可能)”,这样无论如何您都会被覆盖。一些平台不支持未对齐访问,其他平台会显着降低性能。如果您选择对齐访问,则在任何情况下都将获得最佳性能。在某些平台上可能会有少量内存成本,但这是非常值得的,因为如果你选择 SIMD,那意味着你追求性能。我想不出为什么要实现未对齐的代码路径。也许如果你必须处理一些旧的设计,它不是在考虑 SIDM 的情况下构建的,但我会说这种可能性微乎其微。

我想说这同样适用于标量,在任何情况下正确对齐都是正确的,并且在实现最佳性能时为您省去一些麻烦...

至于为什么未对齐的访问可能会变慢甚至不受支持 - 这是因为硬件的工作方式。假设您有一个 64 位整数和一个 64 位内存 Controller ,如果您的整数正确对齐,内存 Controller 可以一次性访问它。但如果它是偏移的,内存 Controller 将不得不执行 2 个操作,而且 CPU 可能需要移动数据以正确组合它。由于这是次优的,一些平台甚至不隐含地支持它作为提高效率的手段。

关于c++ - SIMD 内部函数 : aligned operation different than unaligned?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32066199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com