SwiftのAccelerateフレームワーク

2.4K Views

May 31, 24

スライド概要

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

profile-image

https://usami-k.github.io/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

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

2.

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

3.

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

4.

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

5.

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

6.

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

7.

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

8.

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

9.

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

10.

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

11.

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

12.

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

13.

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

14.

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

15.

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

16.

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

17.

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

18.

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

19.

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

20.

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

21.

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

22.

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

23.

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

24.

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

25.

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