Accelerate
Accelerateフレームワークは、CPUのベクトル処理機能を活用して、ハイパフォーマンスでエネルギー効率に優れた演算をCPU上で実現します。Accelerateは、最適化された大規模な数学的演算や画像演算を実行するため、機械学習、データ圧縮、信号処理などを活用するアプリを開発できます。
機械学習
AccelerateフレームワークのBNNSライブラリは、トレーニングや推論用のニューラルネットワークの構築に使う関数のコレクションです。このライブラリはiOS、macOS、tvOS、watchOSの各プラットフォームがサポートしているすべてのCPUでハイパフォーマンスと低エネルギー消費を実現するように最適化されたルーチンを提供します。BNNSには、機械学習用の豊富なレイヤタイプ、損失関数、アクティベーション関数、およびサポートルーチンが含まれています。
画像処理
vImageは、ハイパフォーマンスの画像処理フレームワークです。このフレームワークには、画像を操作する関数(畳み込み、幾何学的変換、ヒストグラム操作、形態変換、アルファ合成)に加え、フォーマット変換などの操作を行うユーティリティ関数が含まれています。
vImageは、CPUのベクトルプロセッサを使って画像処理を最適化します。ベクトルプロセッサを利用できない場合、vImageは利用可能な次点のオプションを使用します。このフレームワークを使用すると、ベクトル化コードを記述しなくても、ベクトルプロセッサのメリットを活用できます。
デジタル信号処理
vDSPフレームワークには、デジタル信号処理や大規模な配列での汎用演算のために高度に最適化された関数のコレクションが含まれています。デジタル信号処理関数の例としては、フーリエ変換や双2次フィルタ処理などがあります。算術関数には、合計、平均値、最大値などを求める積和関数やリダクション関数があります。
ベクトルおよび行列の演算
vForceを使うと、ベクトルに対して算術関数や超越関数を実行できます。これらはベクトル化された関数であるため、vForceの演算は、同じベクトルに対してループで同じ演算を実行するよりも、はるかに高速でエネルギー効率に優れています。
simdライブラリは、小規模なベクトルや行列の演算用の型と関数を提供します。型には、整数や浮動小数点数のベクトルや行列が含まれます。このライブラリの関数は、基本的な算術演算、要素ごとの数学的演算、幾何学的演算、および線形代数演算を提供します。
simdは、最大16要素(単精度値の場合)または8要素(倍精度値の場合)を含むベクトルと、最大4x4の要素サイズの行列をサポートします。
線形代数
Accelerateフレームワークは、密ベクトルおよび密行列に対して線形代数演算を実行するためのBLASライブラリとLAPACKライブラリを提供します。AccelerateのBLASとLAPACKの実装では、CPUの処理能力が抽象化されているため、これらの実装用に記述されたコードは、実行時に利用可能なプロセッサに適した命令を実行します。つまり、BLASとLAPACKはどちらもハイパフォーマンスと低エネルギー消費を実現するように最適化されています。
BLASには、ベクトル間演算、行列-ベクトル間演算、および行列間演算などの線形代数プリミティブが含まれています。LAPACKでは、固有値問題や特異値問題、行列因数分解のほか、線形連立方程式や線形最小二乗問題の解を求めることができます。
ロスレス圧縮では
AppleArchiveは、所有権、アクセス/権限設定、フラグ、時間、拡張属性、エラー訂正などのファイル属性を含む高速圧縮機能を備えています。AppleArchiveには、以下の特徴があります。
- すべてのコアを使用し、エネルギー効率に優れ、結果を高速に生成するマルチスレッド処理
- ファイルとその属性を転送し、ファイルシステムの圧縮、フルクローン、スパースファイルなど、Apple File System(APFS)の機能が利用可能な場合にそれらを使用する機能
- エラー訂正、ダイジェスト、マニフェスト、外部データストレージなどのためにアーカイブを使用できる柔軟なエンコード形式
- インメモリアーカイブ処理、ストリーミングアクセス、ランダムアクセス、バックツーバックのアーカイブと抽出に関するAPIサポート
Spatial
Spatialは、軽量な3D数学ライブラリであり、3Dプリミティブを扱うためのシンプルなAPIを提供します。3Dのポイント、サイズ、四角形のプリミティブや、アフィン変換と射影変換が含まれます。その機能の多くはCore Graphicsの2Dジオメトリサポートと似ていますが、Spatialの場合は3Dをサポートしています。Spatialはsimdをベースにしているため、ハイパフォーマンスの3D演算を利用できます。
Sparse Solvers
AccelerateフレームワークのSparse Solvers(疎行列ソルバー)ライブラリを使用すると、係数行列が疎行列(ほとんどの要素がゼロである行列)である連立方程式に対して線形代数演算を実行できます。
科学やテクノロジーの問題の多くでは、大規模な連立方程式の解を必要とします。こうした方程式が線形である場合、通常、行列方程式Ax = bで表現されます(方程式が非線形の場合でも、多くの場合、一連の線形近似により問題を解くことができます)。
定積分
Quadratureは、有限または無限の区間にわたる関数の定積分の近似値を提供します。
Quadrature(求積法)は、曲線の下にある領域の面積を求めることを意味する歴史のある用語です。多くの場合、領域を簡単に計算できる小さな図形(四角形など)に分割し、これらの小さな領域の面積を合計して近似結果を得ていました。
現代の用語では、このプロセスは定積分と呼ばれます。AccelerateフレームワークのQuadrature機能は、区間内の一連の点で関数を評価することにより、有限または無限の区間における関数の定積分の近似値を求めます。
-
ビデオ
-
ドキュメント
最新のチュートリアル、記事、APIリファレンスを参照できます。
-
サンプルコード
AccelerateのAPIの実装方法を示したサンプルコードを入手できます。
-
フォーラム
Accelerateについて、質問を投稿してAppleのエンジニアやほかのデベロッパとディスカッションしましょう。