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
外部リンク