Linux* で setvars および oneapi-vars スクリプトを使用
統合ディレクトリー・レイアウトが 2024.0 で実装されました。複数のツールキット・バージョンがインストールされている場合、統合レイアウトにより、開発環境にその特定のツールキット・バージョンの一部としてリリースされたコンポーネントのバージョンが含まれるようにする機能が追加されます。
新しい統合ディレクトリー・レイアウトでは、共通フォルダーのコレクション (bin、lib、include、share など) にコンポーネントが一緒にインストールされます。これらの共通フォルダーは、ツールキットのバージョン番号に基づいて命名された最上位フォルダーにあります。以下に例を示します:
/opt/intel/oneapi/2024.0/
|-- bin
|-- lib
|-- include
...etc...2024.0 より前に使用されていたディレクトリー・レイアウトは、新規および既存のインストールで引き続きサポートされます。この以前のレイアウトは、コンポーネント・ディレクトリー・ レイアウトと呼ばれます。コンポーネント・ディレクトリー・ レイアウトまたは統合ディレクトリー・レイアウトを使用するオプションが提供されます。
コンポーネント・ディレクトリー・レイアウトと統合ディレクトリー・レイアウトの違い
ほとんどのコンポーネント・ツール・フォルダーには、oneAPI 開発作業をサポートするためそれぞれのコンポーネントに必要な環境変数を設定する env/vars.sh スクリプトが含まれています。たとえば、デフォルトのインストールでは、Linux* 上のインテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) の env/vars スクリプトは、コンポーネント・ディレクトリー・レイアウトの /opt/intel/oneapi/ipp/latest/env/vars.sh にあります。このパターンは、env\vars セットアップ・スクリプトを含むすべての oneAPI コンポーネントで共有されます。
コンポーネント・ディレクトリー・レイアウトでは、コンポーネント env/vars スクリプトを直接、またはまとめて呼び出すことができます。まとめて呼び出すには、oneAPI インストール・ディレクトリーにある setvars.sh スクリプトを使用します。例えば、Linux* マシンのデフォルトのコンポーネント・ディレクトリー・レイアウトインストールでは、/opt/intel/oneapi/setvars.sh です。統合ディレクトリー・レイアウトでは、開発環境を初期化する env/vars.sh スクリプトは使用されません。代わりに、各コンポーネントは、コンポーネントに共通の共有フォルダーに集約されます。つまり、各コンポーネントは、ヘッダーファイルを単一の共通 include フォルダーに集約し、ライブラリー・ファイルを単一の共通 lib フォルダーに集約します。
統合ディレクトリー・レイアウトの利点
統合ディレクトリー・レイアウトにより、setvars 設定ファイルを構成および維持したり、複数のインテル® oneAPI ツールキットをインストールしてゲームをプレイする必要がなくなり、異なるツールキット・バージョン間の切り替えがはるかに簡単になります。これは、一部の Windows* 開発者にとって厄介な問題である、Windows* 開発システム上の環境変数、特に PATH 変数長を制限する場合にも役立ちます。
統合ディレクトリー・レイアウト環境変数は、まとめて設定する必要があります。開発環境変数を初期化するには、oneapi-vars.sh スクリプトを使用します。Linux* マシン上のデフォルトの統合ディレクトリー・レイアウトのインストールでは、スクリプトは /opt/intel/oneapi/<toolkit-version>/oneapi-vars.sh にあります。<toolkit-version> は、インストールした oneAPI ツールキットのバージョン番号に対応します。
例:
/opt/intel/oneapi/2024.0/oneapi-vars.sh
/opt/intel/oneapi/2024.1/oneapi-vars.sh引数なしで setvars.sh スクリプトを source すると、コンポーネント・ディレクトリー・レイアウトのインストール内のすべての <component>/latest/env/vars.sh スクリプトが検索され source されます。これらのスクリプトを source した後、env コマンドで環境変数を確認できます。
引数なしで oneapi-vars.sh スクリプトを source すると、その oneapi-vars.sh スクリプトが配置されている特定のツールキット ・バージョンの環境が構成されます。また、統合ディレクトリーのインストールの一部であるオプションの /opt/intel/oneapi/<toolkit-version>/etc/<component>/vars.sh スクリプトも source されます。これらのスクリプトによって環境に加えられた変更は、oneapi-vars.sh スクリプトを source した後、env コマンドで確認できます。
注
setvars.sh/oneapi-vars.sh スクリプト (または個別の env/vars.sh スクリプト) により変更された環境は永続的ではありません。これらの変更は、setvars.sh/oneapi-vars.sh 環境スクリプトが source されたターミナルセッションでのみ有効です。
setvars と oneapi-vars の違いについては、統合ディレクトリー・レイアウト環境の初期化を参照してください。
コマンドライン引数
setvars.sh/oneapi-vars スクリプトは、いくつかのコマンドライン引数をサポートしており、--help オプションで引数の一覧を表示できます。以下に例を示します:
コンポーネント・ディレクトリー・レイアウト
システム全体へのインストールの場合:
./opt/intel/oneapi/setvars.sh --helpプライベート・インストールの場合:
.~/intel/oneapi/setvars.sh --help統合ディレクトリー・レイアウト
システム全体へのインストールの場合:
./opt/intel/oneapi/<version>/oneapi-vars.sh --helpプライベート・インストールの場合:
.~/intel/oneapi/<version>/oneapi-vars.sh --help--config=file 引数と setvars.sh / oneapi-vars.sh スクリプトから呼び出される vars.sh スクリプトへの追加引数をインクルードする機能を使用して、環境設定をカスタマイズできます。--config=file オプションは、setvars.sh スクリプトでのみサポートされます。
--config=file 引数は、特定のインテル® oneAPI コンポーネントの環境の初期化を制限するとともに、特定のバージョンの環境を初期化することもできます。例えば、インテル® インテグレーテッド・パフォーマンス・プリミティブ・ライブラリー (インテル® IPP)とインテル® oneAPI マス・カーネル・ライブラリー (oneMKL) の環境のみを設定するには、これら 2 つのインテル® oneAPI コンポーネントの vars.sh 環境スクリプトのみを呼び出すように setvars.sh/oneapi-vars スクリプトに指示する設定ファイルを渡します。詳しい説明と利用例については、Linux** で setvars.sh の設定ファイルを使用をご覧ください。
setvars.sh/oneapi-vars のヘルプ・メッセージに記載されていない、setvars.sh/oneapi-vars コマンドラインで渡される追加の引数は、呼び出されたすべての vars.sh スクリプトに渡されます。つまり、setvars.sh/oneapi-vars スクリプトが認識できない引数は、その引数は 1 つ以上のコンポーネント・スクリプトによって使用されるものと見なされ、それらの引数はすべてのコンポーネントの vars.sh スクリプトに渡されます。最もよく使用される追加の引数は、ia32 と intel64 です。これらは、インテル® コンパイラー、インテル® IPP、oneMKL、およびインテル® oneAPI スレッディング・ビルディング・ブロック ライブラリー (oneTBB) でアプリケーションのターゲット・アーキテクチャーを指示するために使用されます。
個々の vars.sh スクリプトを調べて、受け入れるコマンドライン引数があればそれを確認します。
実行方法
コンポーネント・ディレクトリー・レイアウト
source <install-dir>/setvars.sh統合ディレクトリー・レイアウト
source <install-dir>/<toolkit-version>/oneapi-vars.sh注
csh など非 POSIX シェルを使用する場合、次のコマンドを使用します:
コンポーネント・ディレクトリー・レイアウト
$ bash -c 'source <install-dir>/setvars.sh ; exec csh'統合ディレクトリー・レイアウト
$ bash -c 'source <install-dir>/<toolkit-version>/oneapi-vars.sh ; exec csh'環境変数が正しく設定されている場合、次のような確認メッセージが表示されます:

エラーメッセージが表示された場合、不足している依存関係やアクセス許可のエラーを特定するシステムチェックを行うインテル® oneAPI ツールキットの診断ユーティリティーを使用してトラブルシューティングを行います。詳細は、こちら (英語) を参照してください。
または、モジュールファイル・スクリプトを使用して開発環境を設定します。モジュールファイル・スクリプトは、すべての Linux* シェルで機能します。
コンポーネントのリストとコンポーネントのバージョンを調整するには、setvars 設定ファイルを使用して開発環境を設定します。
複数の実行
個々の env/vars.sh スクリプトの多くは、PATH、CPATH、およびそのほかの環境変数に変更を加えるため、最上位の setvars.sh / oneapi-vars スクリプトでは、同じセッション内で複数回呼び出すことはできません。これは、特に $PATH 環境変数が原因で環境変数の文字数が長くなりすぎないようにします。
この動作は、setvars.sh / oneapi-vars に --force フラグを渡すことで上書きできます。この例では、ユーザーは setvars.sh / oneapi-vars を 2 回実行しようとします。setvars.sh / oneapi-vars はすでに実行されているため、2 番目のインスタンスは停止します。
コンポーネント・ディレクトリー・レイアウト
$ source <install-dir>/setvars.sh
initializing oneAPI environment ...(SNIP: lot of output)
oneAPI environment initialized ::$ source <install-dir>/setvars.sh
WARNING: setvars.sh has already been run.Skipping re-execution. To force a re-execution of setvars.sh, use the '--force' option. Using '--force' can result in excessive use of your environment variables3 番目のインスタンスでは、ユーザーが setvars.sh --force を実行し、初期化が成功します。
$ source <install-dir>/setvars.sh --force
initializing oneAPI environment ...(SNIP: lot of output)
code-block:: oneAPI environment initialized ::--force 引数を使用して setvars.sh を実行すると、次に示すように、bash バージョン 3.x および 4.x で引数汚染が発生する可能性があります:
source <install-dir>/setvars.sh --force
initializing oneAPI environment ...(SNIP: lot of output)
oneAPI environment initialized ::
$ echo ${@}
advisor=latest ccl=latest compiler=latest dal=latest debugger=latest dev-utilities=latest dnnl=latest dpcpp-ct=latest dpl=latest ipp=latest ippcp=latest mkl=latest mpi=latest tbb=latest vtune=latest注: setvars.sh が bash バージョン 5.x、zsh、ksh、または dash でソース化されている場合、これは問題になりません。
この問題を回避するには、SETVARS_ARGS 環境変数を介してシェルのコマンドライン・オプションを渡します。
以下に例を示します:
$ SETVARS_ARGS="--force" source <install-dir>/setvars.sh
initializing oneAPI environment ...(SNIP: lot of output)
oneAPI environment initialized ::
$ echo ${@}
$統合ディレクトリー・レイアウト
$ source <install-dir>/<version>/oneapi-vars.sh
initializing oneAPI environment ...(SNIP: lot of output)
oneAPI environment initialized ::$ source <install-dir>/<toolkit-version>/oneapi-vars.sh
WARNING: setvars.sh has already been run.Skipping re-execution.To force a re-execution of setvars.sh, use the '--force' option.Using '--force' can result in excessive use of your environment variables3 番目のインスタンスでは、ユーザーが setvars.sh --force を実行し、初期化が成功します。
$ source <install-dir>/ ``oneapi-vars.sh`` --force
initializing oneAPI environment ...(SNIP: lot of output)
oneAPI environment initialized ::oneapi-vars.sh で --force 引数を使用して実行すると、bash バージョン 3.x および 4.x で引数汚染が発生する可能性があります:
$ source <install-dir>/<toolkit-version>/oneapi-vars.sh --force
initializing oneAPI environment ...(SNIP: lot of output)
oneAPI environment initialized ::
$ echo ${@}
advisor=latest ccl=latest compiler=latest dal=latest debugger=latest dev-utilities=latest dnnl=latest dpcpp-ct=latest dpl=latest ipp=latest ippcp=latest mkl=latest mpi=latest tbb=latest vtune=latest注: setvars.sh が bash バージョン 5.x、zsh、ksh、または bash でソース化されている場合、これは問題になりません。
この問題を回避するには、SETVARS_ARGS 環境変数を介してシェルのコマンドライン・オプションを渡します。
以下に例を示します:
$ SETVARS_ARGS="--force" source <install-path>/<toolkit-version>/oneapi-vars.sh
.. code-block:: initializing oneAPI environment ...(SNIP: lot of output)
.. code-block:: oneAPI environment initialized ::
$ echo ${@}
$統合ディレクトリー・レイアウトの環境変数の初期化
統合ディレクトリー・レイアウトが 2024.0 で実装されました。変更についての詳細は、このページの上部にあるLinux* で setvars および oneapi-vars スクリプトを使用するを参照してください。
統合ディレクトリー・レイアウトの環境の初期化は、setvars.sh スクリプトではなく、oneapi-vars.sh スクリプトによって行われます。oneapi-vars の使用方法は setvars と似ていますが、微妙な違いがいくつかあります。
setvars スクリプトと oneapi-vars スクリプトの主な違いは、setvars スクリプトでは環境変数 (ONEAPI_ROOT 以外) が定義されないのに対し、oneapi-vars スクリプトでは共通の環境変数が定義される点です。
コンポーネント・ディレクトリー・レイアウトでは、各コンポーネントが機能するのに必要な環境変数を定義する役割を持ちます。たとえば、コンポーネント・ディレクトリー・レイアウトでは、各コンポーネントはリンク可能なライブラリー・フォルダーを LD_LIBRARY_PATH に追加し、ヘッダーを CPATH などにインクルードします。コンポーネントは、常に次の場所にある個別の vars スクリプトを使用してこれを実行します:
$ONEAPI_ROOT/<component-name>/<component-version>/env/vars.sh統合ディレクトリー・レイアウトは、外部向けの include、lib、bin フォルダーを共通フォルダーのセットに結合します。このシナリオでは、最上位の oneapi-vars スクリプトは、これらの共通フォルダーを見つけるのに必要な環境変数を定義します。たとえば、setvars は LD_LIBRARY_PATH を $ONEAPI_ROOT/lib として定義し、CPATH を $ONEAPI_ROOT/include として定義します。
モジュールファイルは 2024.0 リリースでも引き続きサポートされており、setvars.sh を使用して環境設定を初期化する代わりに使用できます。Modulefiles スクリプトは Linux* でのみサポートされます。
ONEAPI_ROOT 環境変数
ONEAPI_ROOT 環境変数は、いずれかのスクリプトが source されるときに、setvars.sh および oneapi-vars.sh スクリプトによって設定されます。ONEAPI_ROOT 環境変数がすでに設定されている場合、setvars.sh は setvars.sh または oneapi-vars.sh スクリプトを実行したターミナルセッションでそれを上書きします。この変数は、oneapi-cli サンプルブラウザーと Eclipse* および Visual Studio Code* サンプルブラウザーによって使用され、oneAPI ツールとコンポーネントを検出するのに役立ちます。特に SETVARS_CONFIG 機能が有効ある場合に setvars.sh スクリプトを検出するのに有用です。SETVARS_CONFIG 機能の詳細については、Eclipse* で setvars.sh スクリプトを自動化をご覧ください。
2024.0 リリースでは、インストーラーは ONEAPI_ROOT 変数を環境に追加しません。これをデフォルト環境に追加するには、ローカルシェルの初期化ファイル、または /etc/environment ファイルで変数を定義します。