Intel Math Kernel Library

Intel oneAPI Math Kernel Library (oneMKL) は、インテルが開発している、科学・工学・金融アプリケーション向けに提供される最適化（高速化）された数学ルーチンを含むライブラリである。提供される中心的な数学関数にはBLAS、LAPACK、、スパースソルバー（疎行列）、FFT、ベクトル演算が含まれている。インテルのCPUおよびGPUをサポートしている。オペレーティングシステムはWindows、Linuxで利用可能である。対応プログラミング言語はC言語、C++、Fortran。

 沿革 
インテルは2003年5月9日にMath Kernel Libraryを公開し、それをblas.libと名づけた。ロシアと米国に存在する開発グループが開発を行った。ライブラリはスタンドアローンとバンドルされたバージョンの双方が存在する。

2015年8月31日より、コミュニティライセンスが作られ無償で利用できるようになった。

2020年12月リリースの 2021.1 より、GPU のサポートが追加になり、名称が Intel Math Kernel Library (Intel MKL) から Intel oneAPI Math Kernel Library (oneMKL) に変更になった。

バージョン2024.0よりmacOSの対応が削除された。

 提供機能 
下記機能を提供しているDeveloper Reference for Intel® Math Kernel Library 2018 - C。
 BLASとSparse BLAS
 LAPACK
 ScaLAPACK
 スパースソルバー
 拡張固有値ソルバー
 ベクトル数学関数
 統計
 フーリエ変換
 PBLAS
 偏微分方程式
 非線形最適化問題
 BLACS
 データフィッティング
MKLにはFFTWおよびLAPACKと互換性のあるインターフェイスを持った関数群が実装されている。

 かつて提供されていた機能 
バージョン2020でディープラーニングの機能は削除された。後継は Intel oneAPI Deep Neural Network Library (oneDNN) 。
 ディープラーニング（これをTensorFlowから利用できるようにした物をインテルは配布しているTensorFlow* Optimizations on Modern Intel® Architecture | Intel® SoftwareIntel Optimized Tensorflow Wheel Now Available | Intel® Software。Apache MXNetInstalling and Building MXNet with Intel® MKL | Intel® Software、Intel Optimized Caffeeintel/caffe: This fork of BVLC/Caffe is dedicated to improving performance of this deep learning framework when running on CPU, in particular Intel® Xeon processors (HSW+) and Intel® Xeon Phi processors、Intel Software Optimization for Theanointel/Theano: This fork of Theano/Theano is dedicated to improve its performance on CPU device, in particular Intel® Xeon® processors and Intel® Xeon Phi™ processors.、Intel neon FrameworkNervanaSystems/neon: Intel® Nervana™ reference deep learning framework committed to best performance on all hardware、Intel Data Analytics Acceleration Library (DAAL) などからも利用できる。類似したライブラリとしてIntel MKL-DNN01org/mkl-dnn: Intel(R) Math Kernel Library for Deep Neural Networks (Intel(R) MKL-DNN)があり、こちらを利用した物としてはIntel Chainerintel/chainer: A flexible framework of neural networks for deep learningなどがある。）

 対応デバイス 
対応デバイスは以下の通り。
 CPU
 Intel Xeon
 Intel Core
 Intel Atom
 GPU
 Intel UHD Graphics（第11世代インテルCoreプロセッサー以降）
 Intel Iris Xe graphics
 Intel Arc graphics
 Intel Data Center GPU Flex シリーズ
 Intel Data Center GPU Max シリーズ

古いCPUは対応しておらず、例えば、Itaniumのサポートは10.2Intel® MKL 10.3 Release Notes | Intel® Software で終了し、Xeon Phi x100のサポートは2017 Update 4Intel® Math Kernel Library (Intel® MKL) 2018 Release Notes | Intel® Softwareで終了した。

また、AMDなどインテル以外の会社のCPUはサポートしていない。AMD からも同様の物として AMD Optimizing CPU Libraries (AOCL) がリリースされているほか、BLASに関してはOpenBLASがAMDのCPUをサポートしている。

 批判 
インテルはインテルのプロセッサと非インテルのプロセッサ上でオープンソースのライブラリやAMDのライブラリよりもパフォーマンスが優位であるとの主張を実証するため、ベンチマークを公開した。にもかかわらず64ビットバージョンのMKLは非インテルプロセッサでの最適化があまりなされていないとの批判が根強い。関連する議論は英語版ウィキペディアの記事 "criticism of Intel C++ compiler" を参照のこと。

 oneMKL インターフェイス 
oneAPI Math Kernel Library (oneMKL) Interfaces を Apache License 2.0 のオープンソースで配布しているoneapi-src/oneMKL: oneAPI Math Kernel Library (oneMKL) Interfaces - GitHub。こちらから、Intel の CPU, GPU に加えて、NVIDIA と AMD の GPU に対して、oneMKL での API で呼び出しが可能になる。AMD の CPU (AMD Optimizing CPU Libraries) には非対応。対応 OS は Linux と Windows。

 脚注 

 関連項目 
 （サポートと議論用フォーラムがある。）
 数値解析ソフトウェア
 Intel C++ Compiler
 Intel Parallel Studio
 Intel Threading Building Blocks
 Intel Integrated Performance Primitives
 OpenBLAS

 外部リンク 


Category:インテル
Category:数値解析ソフトウェア
Category:C++数値計算ライブラリー
Category:数値線形代数