首页 > 解决方案 > Swift 中的加速与并行加法

问题描述

在对向量法和法线法进行基准测试时,时间上存在差异。

普通法

let arrayA: [Float] = [1,2,3]
let arrayB: [Float] = [10,20,30]

let arrayResult:[Float] = zip(arrayA,arrayB).map() {$0 + $1}

Time required: 0.0025310516357421875

与加速

let p = double3(1, 2, 3)
let q = double3(10, 20, 30)

print(p + q)

Time required: 0.0009039640426635742

它是如何在内部工作的。新方法的速度提高了 2.79 倍。

标签: iosswiftxcodesimd

解决方案


SIMD 代表“单指令,多数据”。这意味着某些指令可以同时对多组数据进行操作。不同类型的硬件支持不同的 SIMD 指令。在您的情况下,您能够同时执行三个浮点加法运算。

https://developer.apple.com/documentation/accelerate/simd

https://en.wikipedia.org/wiki/SIMD


推荐阅读