![]() |
1
12
类型
这些类型基本上都是等价的,并且都具有相同的大小和对齐特征,因此您可以跨语言使用它们。这实际上是simd框架的设计目标之一。 既然你没问我,我就改天再谈包装好的。
[1] 金属是一种不寻常的情况,因为它定义了
|
![]() |
2
2
如果你能避免的话,
不要
使用单个SIMD向量表示单个几何体
当您有许多 相同的 每一个SIMD向量中的东西,因为它们实际上存储在16字节或32字节的向量寄存器中,其中两个向量之间的“垂直”操作很便宜(压缩加法或乘法),但“水平”操作大多只能通过洗牌+垂直操作来完成。
例如4的向量
见 https://stackoverflow.com/tags/sse/info ,尤其是这些幻灯片: SIMD at Insomniac Games (GDC 2015) 有关规划数据布局和程序设计以并行执行许多类似操作而不是尝试加速单个操作的详细信息。 这条规则的一个例外是 只有 加/减来转换坐标,因为即使使用结构数组,这仍然是一个纯粹的垂直操作。因此,对于基于16字节向量的CPU短向量SIMD来说是很好的。(例如,一个向量中的第二个元素只与另一个向量中的第二个元素交互,因此不需要洗牌。) GPU SIMD是不同的,我认为交叉数据没有问题。我不是GPU专家。 (我不使用Objective C或Metal,所以我无法帮助您了解它们的类型名的详细信息,这正是底层CPU硬件的擅长之处。对于x86sse/AVX、ARM NEON/AArch64 SIMD或PowerPC Altivec,这基本上是相同的。水平操作速度较慢。) |
|
Forest Lam · 我应该怎么做才能在这里看到分布式驱动器段? 1 年前 |
![]() |
Andrew · 我需要帮助为这个问题编写代码 2 年前 |
![]() |
Gen Tan · 节点-v显示节点的旧版本 2 年前 |
![]() |
xdavidliu · XCode项目对C++标准的选择没有得到尊重 2 年前 |
![]() |
Yannick · Ruby(或FFI?)执行Jekyll命令时出错 3 年前 |
![]() |
FreyGeospatial · 显示Mac终端中隐藏的文件和文件夹 3 年前 |
![]() |
viedev · SwiftUI:macOS上文本字段中文本过长的问题 3 年前 |