たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

DNNのCPU推論実装

BLAS: Intel MKL, OpenBLAS

MKL-DNN

PyTorch

TorchScript

libtorchから呼び出せるJIT-compiled モデル.
最初の20ループくらいで最適化が走るっぽい (ref).
Fused-opsとかいろいろ.

BLAS

PyTorchは pip install時のCMakeでBLASライブラリを自動検出して利用.

並列計算

以下の2タイプをサポート

  • inter-op parallelism
  • intra-op parallelism

inter-op parallelisum: AsyncTask & multi-threads で並列計算可能. torchの演算をAsyncTaskに入れてawaitする感じ.

intra-op parallelism: torchの演算を内部でparallel実行. でっかい1つの行列計算とか.
内部的にはATen/MKL/MKL-DNNの並行計算機能を利用. これらはOpenMP or TBBに依存.
デフォルトではOpenMP ON1

参考文献


  1. “Pre-built PyTorch releases are compiled with OpenMP support.” PyTorch. CPU THREADING AND TORCHSCRIPT INFERENCE.