---
title: SwiftのAccelerateフレームワーク
tags:  #ios #mobileact  
author: [USAMI Kosuke](https://convert.docswell.com/user/usami-k)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GE5GQ8PDE4.jpg?width=480
description: Mobile Act OSAKA 13 https://mobileact.connpass.com/event/317166/  Mobile Act OSAKA 13 に参加しました #MobileAct - usami-kの日記 https://usami-k.hatenablog.com/entry/2024/06/01/145834
published: May 31, 24
canonical: https://convert.docswell.com/s/usami-k/ZM1JQ8-swift-accelerate-framework
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GE5GQ8PDE4.jpg)

SwiftのAccelerateフレームワーク
宇佐見公輔（usami-k）
2024-05-31
Mobile Act OSAKA 13
SwiftのAccelerateフレームワーク
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/972YPKZM7R.jpg)

自己紹介
iOSアプリ開発エンジニア
Mobile Act OSAKAの発起人
2013〜2021：フェンリル
2022〜現在：ゆめみ
SwiftのAccelerateフレームワーク
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/DJYG5NRPJM.jpg)

近況(1)
おもしろ同人誌バザール、技書博、技術書典に、技術同人誌を個人で
出展しました
SwiftのAccelerateフレームワーク
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/V7NGNXDME8.jpg)

近況(2)
iOSDC Japan 2024
パンフレット原稿採択
されました（執筆中）
トークも応募する予定
SwiftのAccelerateフレームワーク
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/YJ9WR8GWJ3.jpg)

Accelerateフレームワークとは
SwiftのAccelerateフレームワーク
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJ8NW8VRED.jpg)

Accelerateフレームワークとは
Appleが提供する数値計算ライブラリ群
CPUのベクタ演算機能を活用
iOS 4 / macOS 10.3 / tvOS 9 / watchOS 2 / visionOS 1
https://developer.apple.com/jp/accelerate/
https://developer.apple.com/documentation/accelerate/
SwiftのAccelerateフレームワーク
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LJLPNR52ER.jpg)

Accelerate vs Metal
CPUのベクタ演算機能を活用：Accelerate
GPUのベクタ演算機能を活用：Metal
両者は機能がが重なっている
実のところ、GPUが使えるならMetalのほうが効率が良い
https://developer.apple.com/jp/metal/
https://developer.apple.com/documentation/metal/
SwiftのAccelerateフレームワーク
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/47M4XR39EW.jpg)

Accelerateフレームワークの機能
機械学習：BNNS
画像処理：vImage
デジタル信号処理：vDSP
ベクトルに対する関数演算：vForce
線形代数：BLAS / LAPACK / Sparse Solvers
SwiftのAccelerateフレームワーク
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/P7RWNRQ9E9.jpg)

BNNS
SwiftのAccelerateフレームワーク
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/PJXPNR53EX.jpg)

BNNS
BNNS＝Basic Neural Network Subroutines
CPU上でニューラルネットワークの演算を高速に実行
BNNSよりも以下を使うほうが良い。
Core ML
内部でMetalやAccelerateを使っている
Metal Performance Shaders Graph（MPS Graph）
GPU上でニューラルネットワークの演算を高速に実行
SwiftのAccelerateフレームワーク
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/3JKDNR6N7D.jpg)

vImage
SwiftのAccelerateフレームワーク
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LE3RV86Z75.jpg)

vImage
CPU上で画像処理を高速に実行
vImageよりも以下を使うほうが良い。
Core Image
内部でMetalやAccelerateを使っている
Metal
GPU上で画像処理を高速に実行
SwiftのAccelerateフレームワーク
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/8EDY8MV4EG.jpg)

vDSP
SwiftのAccelerateフレームワーク
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/V7P68RVVJ8.jpg)

vDSP
DSP＝Digital Signal Processing
主に音声処理で使われる
高速フーリエ変換（FFT）
デジタルフィルタリング
その他、ベクトルに対する算術演算（加減乗除）
SwiftのAccelerateフレームワーク
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/2JV3NRZREQ.jpg)

音声関連
再生・録音
Media Playerフレームワーク
AVFoundationフレームワーク
音声処理
Core Audio：デバイス入出力
vDSP：信号処理
SwiftのAccelerateフレームワーク
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/5EG3KM467L.jpg)

vDSPの事例
同僚が「iPhoneで楽器チュー
ナを作ってみる」という記事
を書いています。
「ゆめみ大技林 &#039;22」は無償
で頒布中です。
「&#039;23」「&#039;23 (2)」「&#039;24」も頒
布中。
SwiftのAccelerateフレームワーク
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/4JQ5NRG27P.jpg)

vForce
SwiftのAccelerateフレームワーク
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/K749G85PE1.jpg)

vForce
ベクトルに対する関数演算
let num = 1_000_000
let input = (0..&lt;num).map { Float($0) }
// vForceを使っていない計算
let output = input.map { sqrt($0) }
// vForceを使った計算
let output = vForce.sqrt(input)
SwiftのAccelerateフレームワーク
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/LJ1KD2WX7G.jpg)

vForceの書きかた2種類
UnsafePointer を使う書きかた（C言語由来）
var num = Int32(1_000_000)
var input = (0..&lt;num).map { Float($0) }
var output = [Float](repeating: 0, count: input.count)
vvsqrtf(&amp;output, &amp;input, &amp;num)
UnsafePointer を使わない書きかた
let output = vForce.sqrt(input)
SwiftのAccelerateフレームワーク
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GJWDYR6K72.jpg)

BLAS / LAPACK / Sparse Solvers
SwiftのAccelerateフレームワーク
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4EZGXRYNJ3.jpg)

BLAS / LAPACK
BLAS＝Basic Linear Algebra Subroutines
線形代数の数値演算ライブラリのAPI仕様
LAPACK＝Linear Algebra PACKage
BLASの上位パッケージ
BLASやLAPACKのAPIを実装したライブラリが多く存在している
Accelerateもそういった実装のひとつ
SwiftのAccelerateフレームワーク
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/Y76Y4RD9EV.jpg)

Sparse Solvers
線形代数の数値演算で、疎行列の扱
いに特化したライブラリ
疎行列＝多くの成分が0の行列
行列のサイズが大きくても効率的に
計算できる
扱う行列が疎行列かどうかは開発者
が判断して、ライブラリを選択する
SwiftのAccelerateフレームワーク
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/G75GQ83D74.jpg)

Accelerateのまとめ・活用箇所
SwiftのAccelerateフレームワーク
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/9J2YPKKMJR.jpg)

Accelerateのまとめ
ベクトルや行列に対する数値演算に適している
デジタル信号処理：vDSP
ベクトルに対する関数演算：vForce
線形代数：BLAS / LAPACK / Sparse Solvers
機械学習や画像処理ができるが最適解ではない
それらはCore ML、Core Image、Metalが良い
SwiftのAccelerateフレームワーク
24


# Page. 25

![Page Image](https://bcdn.docswell.com/page/DEYG5NNPEM.jpg)

Accelerateの活用箇所
Apple製のライブラリで以下のものにAccelerateが活用されている
Apple Archive（ファイル圧縮）
Spatial（軽量な3D数学ライブラリ）
Quadrature（定積分の近似計算）
SwiftのAccelerateフレームワーク
25


