インテル ロゴ

intel oneAPI 数学カーネル ライブラリ

intel-oneAPI-Math-Kernel-Library-製品イメージ

インテル® oneAPI マス・カーネル・ライブラリーを始める

インテル® oneAPI マス・カーネル・ライブラリー (oneMKL) は、CPU と GPU 向けに高度に最適化され、広範囲に並列化されたルーチンの数学計算ライブラリーで最大のパフォーマンスを達成するのに役立ちます。 このライブラリには、CPU 上のほとんどのルーチン用の C および Fortran インターフェイスと、CPU と GPU の両方の一部のルーチン用の DPC++ インターフェイスがあります。 次のようなさまざまなインターフェイスで、いくつかの数学演算の包括的なサポートを見つけることができます。

CPU 上の C および Fortran の場合

  • 線形代数
  • 高速フーリエ変換 (FFT)
  • ベクトル演算
  • 直接および反復スパース ソルバー
  • 乱数ジェネレータ

CPU および GPU 上の DPC++ の場合 (詳細については、インテル® oneAPI マス・カーネル・ライブラリー - データ並列 C++ 開発者リファレンスを参照してください)。

  • 線形代数
    • ブラス
    • 選択されたスパース BLAS 機能
    • 選択された LAPACK 機能
  • 高速フーリエ変換 (FFT)
    • 1D、2D、および3D
  • 乱数ジェネレータ
    • 厳選された機能
  • 選択されたベクトル演算機能

始める前に
既知の問題と最新情報については、リリース ノート ページにアクセスしてください。
システム要件については、インテル® oneAPI マス・カーネル・ライブラリーのシステム要件ページをご覧ください。
DPC++ コンパイラーの要件については、インテル® oneAPI DPC++/C++ コンパイラーの概要を参照してください。

ステップ 1: インテル® oneAPI マス・カーネル・ライブラリーをインストールする
インテル® oneAPI ベース・ツールキットからインテル® oneAPI マス・カーネル・ライブラリーをダウンロードします。
Python* ディストリビューションについては、インテル® ディストリビューション for Python* およびインテル® パフォーマンス・ライブラリーを pip および PyPI でインストールするを参照してください。
Python ディストリビューションの場合、次の制限に注意してください。
Linux* および macOS* 上の PIP ディストリビューション用の oneMKL devel パッケージ (mkl-devel) は、動的ライブラリーのシンボリックリンクを提供しません (詳細については、PIP GitHub イシュー #5919 を参照してください)。
oneMKL 開発パッケージ (詳細については、oneMKL Link Line Advisor を参照) を使用して動的または単一の動的ライブラリーをリンクする場合、oneMKL ライブラリーの完全な名前とバージョンでリンク行を変更する必要があります。
pkg-config ツールを使用したコンパイルとリンクについては、インテル® oneAPI マス・カーネル・ライブラリーと pkg-config ツールを参照してください。
oneMKL リンクライン exampシンボリックリンクを介して oneAPI Base Toolkit を使用してファイルを作成します。

  • リナックス:
    icc app.obj -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64-lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl
  • MacOSの:
    icc app.obj -L${MKLROOT}/lib -Wl,-rpath,${MKLROOT}/lib-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread
    -lm -ldl
    oneMKL リンク ライン exampライブラリの完全な名前とバージョンを介して PIP devel パッケージを含むファイル: Linux:
    icc app.obj ${MKLROOT}/lib/intel64/libmkl_intel_lp64.so.1 ${MKLROOT}/lib/intel64/libmkl_intel_thread.so.1 ${MKLROOT}/lib/intel64/libmkl_core.so.1 -liomp5 -lpthread -lm -ldl
  • MacOSの:
    icc app.obj -Wl,-rpath,${MKLROOT}/lib${MKLROOT}/lib/intel64/libmkl_intel_lp64.1.dylib $ {MKLROOT}/lib/intel64/libmkl_intel_thread.1.dylib
    ${MKLROOT}/lib/intel64/libmkl_core.1.dylib -liomp5 -lpthread -lm-ldl

ステップ 2: 関数またはルーチンを選択する
問題に最も適した関数またはルーチンを oneMKL から選択します。 次のリソースを使用します。

リソース リンク: 目次

Linux* 用 oneMKL 開発者ガイド
Windows* 用 oneMKL 開発者ガイド
macOS* 用の oneMKL 開発者ガイド

開発者ガイドには、次のようないくつかのトピックに関する詳細情報が含まれています。

  • アプリケーションのコンパイルとリンク
  • カスタム DLL の構築
  • スレッド
  • メモリ管理

oneMKL 開発者リファレンス – C
言語 oneMKL 開発者リファレンス – Fortran 言語
oneMKL 開発者リファレンス – DPC++ 言語

  • 開発者リファレンス (C、Fortran、および DPC++ 形式) には、すべてのライブラリ ドメインの関数とインターフェイスの詳細な説明が含まれています。

インテル® oneAPI マス・カーネル・ライブラリー関数検索アドバイザー

  • LAPACK Function Finding Advisor を使用して、特定の問題に役立つ LAPACK ルーチンを調べます。 例えばamp操作を次のように指定した場合:
    • ルーチンのタイプ: 計算
    • 計算問題: 直交因数分解
    • マトリックス タイプ: 一般
    • 操作:QR因数分解を行う

ステップ 3: コードをリンクする
oneMKL Link Line Advisor を使用して、プログラムの機能に応じてリンク コマンドを構成します。
いくつかの制限と追加要件:
DPC++ 向けインテル® oneAPI マス・カーネル・ライブラリーは、mkl_intel_ilp64 インターフェイス・ライブラリーとシーケンシャルまたは TBB スレッドの使用のみをサポートします。

Linux で静的リンクを使用する DPC++ インターフェイスの場合
icpx -fsycl -fsycl-device-code-split=per_kernel -DMKL_ILP64 ${MKLROOT}/lib/intel64/libmkl_sycl.a -Wl,–start-group ${MKLROOT}/lib/intel64/libmkl_intel_ilp64.a ${MKLROOT}/lib/intel64/
libmkl_ .a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,–end-group -lsycl -lOpenCL -lpthread -ldl -lm
例えばampファイル、ilp64 インターフェイスと TBB スレッドを使用して main.cpp をビルド/静的にリンクします。
icpx -fsycl -fsycl-device-code-split=kernel ごと -DMKL_ILP64 -I${MKLROOT}/include main.cpp $
{MKLROOT}/lib/intel64/libmkl_sycl.a -Wl,–start-group ${MKLROOT}/lib/intel64/
libmkl_intel_ilp64.a ${MKLROOT}/lib/intel64/libmkl_tbb_thread.a ${MKLROOT}/lib/intel64/
libmkl_core.a -Wl,–end-group -L${TBBROOT}/lib/intel64/gcc4.8 -ltbb -lsycl -lOpenCL -lpthread -lm -ldl

Linux で動的リンクを使用する DPC++ インターフェイスの場合
icpx -fsycl -DMKL_ILP64 -L$ {MKLROOT}/lib/intel64 -lmkl_sycl -lmkl_intel_ilp64 -lmkl_ -lmkl_core -lsycl -lOpenCL -lpthread -ldl -lm
例えばampファイル、ilp64 インターフェイスと TBB スレッドを使用して main.cpp をビルド/動的にリンクします。
icpx -fsycl -DMKL_ILP64 -I${MKLROOT}/include main.cpp -L${MKLROOT}/lib/intel64 -lmkl_sycl -lmkl_intel_ilp64 -lmkl_tbb_thread -lmkl_core -lsycl -lOpenCL -ltbb -lpthread -ldl -lm

Windows で静的リンクを使用する DPC++ インターフェイスの場合
icpx -fsycl -fsycl-device-code-split=per_kernel -DMKL_ILP64 「%MKLROOT%」\lib\intel64\mkl_sycl.lib
mkl_intel_ilp64.lib mkl_ .lib mkl_core_lib sycl.lib OpenCL.lib
例えばampファイル、ilp64 インターフェイスと TBB スレッドを使用して main.cpp をビルド/静的にリンクします。
icpx -fsycl -fsycl-device-code-split=per_kernel -DMKL_ILP64 -I”%MKLROOT%\include” main.cpp”%MKLROOT%”\lib\intel64\mkl_sycl.lib mkl_intel_ilp64.lib mkl_tbb_thread.lib mkl_core.lib sycl .lib OpenCL.lib tbb.lib

Windows で動的リンクを使用する DPC++ インターフェイスの場合
icpx -fsycl -DMKL_ILP64 「%MKLROOT%」\lib\intel64\mkl_sycl_dll.lib mkl_intel_ilp64_dll.lib mkl_ _dll.lib mkl_core_dll.lib tbb.lib sycl.lib OpenCL.lib
例えばampファイル、ilp64 インターフェイスと TBB スレッドを使用して main.cpp をビルド/動的にリンクします。
icpx -fsycl -fsycl-device-code-split=per_kernel -DMKL_ILP64 -I"%MKLROOT%\include" main.cpp "%MKLROOT%"\lib\intel64\mkl_sycl_dll.lib mkl_intel_ilp64_dll.lib mkl_tbb_thread_dll.lib mkl_core_dll.lib tbb .lib sycl.lib OpenCL.lib

OpenMP オフロードをサポートする C/Fortran インターフェイスの場合
GPU への OpenMP オフロード機能を備えた C/Fotran インテル® oneAPI マス カーネル ライブラリ インターフェイスを使用します。
この機能の詳細については、C OpenMP オフロード開発者ガイドを参照してください。
C/Fortran oneMKL コンパイル/リンク行に次の変更を追加して、GPU への OpenMP オフロード機能を有効にします。

  • 追加のコンパイル/リンク オプション: -fiopenmp -fopenmp-targets=spir64 -mllvm -vpo-paropt-use-raw-dev-ptr -fsycl
  • 追加の oneMKL ライブラリ: oneMKL DPC++ ライブラリ

例えばampファイル、ilp64 インターフェイスと OpenMP スレッドを使用して Linux で main.cpp をビルド/動的にリンクします。
icx -fiopenmp -fopenmp-targets=spir64 -mllvm -vpo-paropt-use-raw-dev-ptr -fsycl -DMKL_ILP64 -m64 -I$(MKLROOT)/include main.cpp L${MKLROOT}/lib/intel64 - lmkl_sycl -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lsycl -lOpenCL -lstdc++ -lpthread -lm -ldl
サポートされている他のすべての構成については、インテル® oneAPI マス・カーネル・ライブラリーのリンク・ライン・アドバイザーを参照してください。

もっと見る

リソース: 説明

チュートリアル: 行列の乗算にインテル® oneAPI マス・カーネル・ライブラリーを使用:

  • チュートリアル – C 言語
  • チュートリアル – Fortran 言語

このチュートリアルでは、oneMKL を使用して行列を乗算し、行列乗算のパフォーマンスを測定し、スレッドを制御する方法を示します。

インテル® oneAPI マス・カーネル・ライブラリー (oneMKL) リリースノートは、スレッド化を制御します。
リリース ノートには、新機能や変更された機能など、oneMKL の最新リリースに固有の情報が含まれています。 リリース ノートには、リリースに関連する主要なオンライン情報リソースへのリンクが含まれています。 次の情報も参照できます。

  • リリースの新機能
  • 製品内容
  • テクニカル サポートの取得
  • ライセンスの定義

インテル® oneAPI マス・カーネル・ライブラリー
インテル® oneAPI マス・カーネル・ライブラリー (oneMKL) 製品ページ。 サポートとオンライン ドキュメントについては、このページを参照してください。

インテル® oneAPI マス・カーネル・ライブラリー・クックブック
インテル® oneAPI マス・カーネル・ライブラリーには、行列の乗算、連立方程式の解、フーリエ変換の実行など、さまざまな数値問題の解決に役立つ多くのルーチンが含まれています。

インテル® oneAPI マス・カーネル・ライブラリーのベクトル統計に関する注意事項
このドキュメントにはオーバーが含まれていますview、VS に含まれる乱数ジェネレーターの使用モデルとテスト結果。

インテル® oneAPI マス・カーネル・ライブラリー ベクトル統計 乱数ジェネレーターのパフォーマンス・データ
ベクトル統計 (VS) 乱数発生器 (RNG) を使用して取得したパフォーマンス データには、CPE (要素あたりのクロック数) 測定単位、基本乱数発生器 (BRNG)、生成された分布発生器、および生成されたベクトルの長さが含まれます。

インテル® oneAPI マス・カーネル・ライブラリー ベクトル演算のパフォーマンスと精度のデータ
ベクトル数学 (VM) は、ベクトル引数の初等関数を計算します。 VM には、ベクトルを操作する計算コストの高いコア数学関数 (累乗、三角関数、指数関数、双曲線関数など) の高度に最適化された実装のセットが含まれています。

インテル® oneAPI マス・カーネル・ライブラリーの要約統計に関するアプリケーション・ノート
要約統計は、インテル® oneAPI マス・カーネル・ライブラリーのベクトル統計ドメインのサブコンポーネントです。 要約統計は、初期統計分析のための機能を提供し、多次元データセットの並列処理のためのソリューションを提供します。

ラパックExampレ
このドキュメントはコードexを提供しますamponeMKL LAPACK (Linear Algebra PACKage) ルーチンのファイル。

通知と免責事項
パフォーマンス テストで使用されるソフトウェアとワークロードは、Intel マイクロプロセッサでのみパフォーマンスを発揮するように最適化されている場合があります。 SYSmark や MobileMark などのパフォーマンス テストは、特定のコンピューター システム、コンポーネント、ソフトウェア、操作、および機能を使用して測定されます。 これらの要因のいずれかを変更すると、結果が異なる場合があります。 他の製品と組み合わせた場合のその製品のパフォーマンスを含む、検討中の購入を完全に評価するのに役立つ他の情報とパフォーマンス テストを参照する必要があります。 詳細については、次を参照してください。 ベンチマーク.
インテルのテクノロジーでは、有効なハードウェア、ソフトウェア、またはサービスのアクティベーションが必要になる場合があります。
絶対に安全な製品やコンポーネントはありません。
費用と結果は異なる場合があります。
© インテル コーポレーション。 Intel、Intel ロゴ、およびその他の Intel マークは、Intel Corporation またはその子会社の商標です。 他の名前およびブランドは、他者の所有物であると主張される場合があります。

製品・性能情報
パフォーマンスは、使用、構成、およびその他の要因によって異なります。 詳細はこちら www.Intel.com/PerformanceIndex.
通知改訂 #20201201
この文書によって、いかなる知的財産権に対するライセンス(明示的または黙示的、禁反言またはその他の方法による)も付与されることはありません。
記載されている製品には、エラッタと呼ばれる設計上の欠陥やエラーが含まれている可能性があり、製品が公表されている仕様から逸脱する可能性があります。現在特徴付けられているエラッタは、リクエストに応じて入手できます。
インテルは、商品性、特定の目的への適合性、および非侵害の黙示の保証、および履行過程、取引過程、または商取引での使用から生じる保証を含むがこれらに限定されない、すべての明示的および黙示的保証を否認します。

ドキュメント / リソース

intel oneAPI 数学カーネル ライブラリ [pdf] ユーザーガイド
oneAPI マス カーネル ライブラリ、マス カーネル ライブラリ、カーネル ライブラリ、ライブラリ

参考文献

コメントを残す

あなたのメールアドレスは公開されません。 必須項目はマークされています *