はじめに
ガシガシプログラミングしてコンパイルしているみなさんには簡単なoneAPIインストール/アップデート!!!
やった事あるとか無いとか、知っている知らない関係なく、インストールしないといけない状況!!!
そんな方々(私もです・・・)のoneAPIインストール/アップデート方法のメモです。
ですので新しい情報はないです、、、
参考
oneAPIとは
oneAPIは複数のアーキテクチャ向けソフトウェア開発を容易にし、かつ最適なハードウェアを自由に選択できるクロスアーキテクチャ・プログラミング・モデルである
NVIDIAのcuda
、IntelのoneAPI
みたいな事ですかね???
環境
item | version |
---|---|
kernel | CentOS8系 |
oneAPI | BaseKit_2023.0.0.25537 |
Environment modules | / |
手順
- (1) oneAPIダウンロード
- (2) oneAPIインストール
- (3) oneAPIアップデート
- (3-1)oneAPI_プロダクト確認
- (3-2)oneAPI削除
- (4) Environment modules連携
- (5) 動作確認
(1) oneAPIダウンロード
oneAPIには4種類あります。
- Intel oneAPI Base Toolkit(DPC++/C++ Compiler)
- Intel® oneAPI HPC Toolkit(Intel® C++ Compiler Classic)
- Intel® AI Analytics Toolkit
- Intel® oneAPI IoT Toolkit
今回はBase Toolkitのインストール/アップデートを主に実行します。
Intel® C++ Compiler ClassicはHPC Toolkitでインストールされます。
プルダウンを選んでダウンロード
もしくはwget
でダウンロード出来ます。
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/19079/l_BaseKit_p_2023.0.0.25537_offline.sh
(2) oneAPIインストール
今回はofflineバージョンでインストールします。
OnlineまたはyumなどのPackage Managerでのインストールも可能。
インストールは簡単です。全てデフォルトで問題なければこれで終わりです。
sudo sh ./l_BaseKit_p_2023.0.0.25537_offline.sh
---
# エラー発生しますが、OpenCL使用していなければ無視して問題なし
Intel? Graphics Compute Runtime for OpenCL not found
# エラー発生しますが、Intel製GPU使用していなければ無視して問題なし
You have no relevant GPU driver.・・・
---
画面非表示/インストールディレクトリ指定。
# -s(サイレント) -a(action) --silent(サイレント) --eula(ソフトウェア利用許諾契約=Yes) --install-dir(/opt/oneapi/intel/oneapi/)
# -sと--silentの違いは-sはコマンド実行を非表示? --silentはインストール表示を非表示?
./l_BaseKit_p_2021.4.0.3422_offline.sh -s -a --silent --eula accept --install-dir /opt/oneapi/intel/oneapi/
インストール完了すると下記ディレクトリが作成されます。
# インストールディレクトリを指定しているので二つに分かれています。
/opt/intel/ ← このディレクトリがデフォルト
├── oneapi
│ └── installer
└── packagemanager
# インストールディレクトリ指定
/opt/oneapi/intel/oneapi/
├── advisor
├── ccl
├── clck
├── compiler
├── conda_channel
├── dal
├── debugger
├── dev-utilities
├── diagnostics
├── dnnl
├── dpcpp-ct
├── dpl
├── etc
├── inspector
├── ipp
├── ippcp
├── itac
├── licensing
├── logs
├── mkl
├── mpi
├── tbb
├── vpl
└── vtune
インストール自体は非常に簡単です
アップデートがちょっと、、、
(3) oneAPIアップデート
PackageManagerを使用していればアップデートは簡単らしいのですが、offlineインストールしているとちょっとややこしいです。
そのまま./l_BaseKit_p_2023.0.0.25537_offline.sh
実行すると、バージョン毎にディレクトリが作成されます。
後述するEnvironment modules
を使用していると大変やっかいです。旧バージョンまで表示されてしまいます。
試しにインストールすると、各ディレクトリ毎に下記のような結果になります。
+ /opt/oneapi/intel/oneapi/
+├── compiler
+│ ├── 2021.x.x-xxxx
+│ └── latest -> 2021.x.x-xxxx
- /opt/oneapi/intel/oneapi/
-├── compiler
-│ ├── 2021.x.x-xxxx
-│ ├── 2023.0.0
-│ └── latest -> 2023.0.0
そこで一度oneAPI
を削除してからインストール実施します。
(3-1)oneAPI_プロダクト確認
# インストールされているバージョンと同バージョンの方が分かりやすいですが、
# 最新バージョンで問題ありません。
./l_BaseKit_p_2023.0.0.25537_offline.sh -s -a --list-products
---
ID Version Installed Name
=====================================================================================
intel.oneapi.lin.basekit.product 2021.x.x-xxxx true Intel oneAPI Base Toolkit
intel.oneapi.lin.basekit.product 2023.0.0-25537 false Intel oneAPI Base Toolkit
---
Installed列がtrueの行が、インストールされているproduct-Versionになります。
今回の場合は2021.x.x-xxxxバージョンはインストール済み
今回はBaseKit_p_2023.0.0.25537を用いて確認しているため、BaseKit_p_2023.0.0.25537行が表示されています。
異なるバージョンで確認した場合は、実行したToolkitバージョンの行が表示されるので同一バージョンの方が見やすい
(3-2) oneAPI削除
--list-products
で確認した情報をもとにremove
します。
# --product-id = ID部分
# --product-ver = Version部分
/opt/intel/oneapi/installer/installer -s --action remove --product-id intel.oneapi.lin.basekit.product --product-ver 2021.x.x-xxxx
インストールディレクトリ指定していた場合は/opt/oneapi/intel/oneapi/
と
標準で/opt/intel
、あとキャッシュディレクトリ関係が削除
されます。
インストールディレクトリを手動で削除は推奨されないようですので、installer
を用いて削除するのが無難です
削除完了すれば、あとはインストール実施すれば完了。
(4) Environment modules連携
下記スクリプト実施でEnvironment modules用ファイル
が自動生成されます。
./modulefiles-setup.sh
---
/opt/oneapi/intel/oneapi/
├── ・・・
├── modulefiles
└── ・・・
---
modulefiles-setup.shを実行したディレクトリを見に行くので異なるバージョンもそのまま作成されます
(5) 動作確認
コンパイルとかよくわからないのでバージョン確認だけ・・・
# インテル® C++ コンパイラー (クラシック)
./icc -v
---
icc version 2021.8.0 (gcc version 8.4.1 compatibility)
---
# インテル® oneAPI DPC++/C++ コンパイラー
./dpcpp -v
---
Intel(R) oneAPI DPC++/C++ Compiler 2023.0.0 (2023.0.0.20221201)
・・・
---
ひとまず実行出来ました。
参考になれば
ではまた