Intel oneAPI Math Kernel Library (Intel oneMKL ) は、以前は Intel Math Kernel Library と呼ばれていましたが、科学、工学、金融アプリケーション向けに最適化された数学ルーチンのライブラリです。コアとなる数学関数には、BLAS、LAPACK、ScaLAPACK、スパースソルバー、高速フーリエ変換、ベクトル演算などがあります。[ 5 ] [ 6 ]
このライブラリは x86 CPU と Intel GPU [ 2 ]をサポートしており、 WindowsおよびLinuxオペレーティングシステムで利用可能です。[ 5 ] [ 6 ] [ 7 ]
Intel oneAPI Math Kernel Library は、以前は oneMKL Interfaces として知られていたoneAPI Math Library (oneMath)と混同してはならない。oneMath は、 DPC++ アプリケーションが、実行時に定義された複数のハードウェア アーキテクチャおよびベンダーにオフロードできる oneMKL ルーチンを呼び出すことを可能にするオープンソースのラッパー ライブラリである。 [ 8 ]
Intelは1994年11月にoneAPI Math Kernel Libraryをリリースし、当初はIntel BLAS Libraryと名付けました。[ 9 ] 1996年にはIntel Math Kernel Libraryに改名され、2020年4月までその名称が使われていましたが、その後、複数のハードウェアアーキテクチャをサポートするoneAPIイニシアチブの一部となり、現在のIntel oneAPI Math Kernel Libraryという名称になりました。
このライブラリは、oneAPIツールキットの一部として、またスタンドアロン形式でも利用可能であり、再配布を許可するIntel簡易ソフトウェアライセンス[ 3 ]の条件に基づき無償で提供されています。 [ 10 ] Intel oneMKLの商用サポートは、 oneAPIベースツールキットの一部として購入した場合に利用できます。
Appleがx86 CPUから移行したことに伴い、macOS向けに提供されているIntel oneMKLの最終リリースはバージョン2023.2.2であり、2024年末までに提供終了となる予定です。
Intel C++ コンパイラ およびIntel DPC++ コンパイラによって生成された MKL およびその他のプログラムは、関数マルチバージョニングと呼ばれる技術でパフォーマンスを向上させています。関数は、多くの x86命令セット拡張用にコンパイルまたは記述され、実行時に「マスター関数」がCPUID命令を使用して、現在の CPU に最も適したバージョンを選択します。しかし、マスター関数が Intel 以外の CPU を検出する限り、CPU がサポートすると主張する命令セットに関係なく、ほぼ常に最も基本的な (そして最も遅い) 関数を選択します。このため、このシステムは2009 年以来「AMD を弱体化させる」ルーチンというあだ名が付けられています。 [ 11 ] 2020 年現在IntelのMKLは、Windows上の多くのプリコンパイル済み数学アプリケーション( NumPy、SymPyなど)とともにデフォルトでインストールされる数値ライブラリです。 [ 12 ] [ 13 ] MATLABはMKLに依存していますが、リリース2020a以降、MKLによるAVX2の完全なサポートをIntel以外の(AMD)CPUでも保証する回避策を実装しました。[ 14 ]
Intel oneMKLには以下の機能カテゴリがあります: [ 15 ]
かつて、oneMKLにはディープニューラルネットワーク機能が含まれていましたが、2020年バージョンで削除され、オープンソースのIntel oneAPIディープニューラルネットワークライブラリが誕生しました。[ 16 ]
インターフェースは、oneMKL仕様に準拠したoneMKLデータ並列C++(DPC++)インターフェースのオープンソース実装です。デバイス固有のライブラリを基盤として、複数のデバイス(バックエンド)と連携して動作します。