gpt4 book ai didi

c - 这个结构叫什么?简单的 SoA?

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:45 24 4
gpt4 key购买 nike

我看到了 AoS(结构数组)之间的常见比较:

struct xyz
{
ALIGNED float x, y, z, ignored;
};
ALIGNED struct xyz AoS[n];

和 SoA(数组结构):

struct SoA
{
ALIGNED_AND_PADDED float x[n];
ALIGNED_AND_PADDED float y[n];
ALIGNED_AND_PADDED float z[n];
};

那么这种数据表示形式应该叫什么?

struct xyz4
{
ALIGNED float x[4];
ALIGNED float y[4];
ALIGNED float z[4];
};
ALIGNED struct xyz4[n/4] ???;

“高效缓存 SoA”?一个奥索阿? SoAoS? “PITA 代码”?一般来说,这似乎是最有效的解决方案,提供具有大量缓存命中率的 SoA 类型 SIMD。

最佳答案

该数据结构有多个名称,例如数组的混合结构(参见 Extending a C-like Language for Portable SIMD Programming)或数组结构的数组 (AoSoA)。

AoS 不适用于 SIMD。 SoA 是一种改进,但在某些情况下仍然不够。解决方案是阵列的混合结构。正如您所说,它可能是一个 PITA,但如果您想从 SIMD 中获得最高效率(除非收集和分散指令变得高效),有时您必须使用它。

关于c - 这个结构叫什么?简单的 SoA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30022824/

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