インテル® oneAPI ツールキット 2023.1 と oneAPI for NVIDIA*/AMD GPU プラグイン 2023.1 の改善

インテル® oneAPI

2023年3月1日に開催した「インテル® oneAPI ツールキットのアップデート~バージョン 2023 の注目機能と他社製 GPU 向けプラグインの紹介~」でインテル® oneAPI ツールキット 2023 と Codeplay 社の oneAPI for NVIDIA* GPU/AMD* GPU プラグイン 2023 を使用した、GPU へのオフロード機能を紹介しましたが、インテル® oneAPI ツールキット 2023.1 と oneAPI for NVIDIA* GPU/AMD* GPU プラグイン 2023.1 では、いくつかの問題が改善されているため急遽ここで紹介したいと思います。

  1. コンパイラー・ドライバーに clang++ 以外に icpx が利用できるようになりました。

    引き続き clang++ も利用できますが、この機会に早めに icpx に変更しておきましょう。また、-fsycl-targets に nvptx64-nvidia-cuda, spir64 のように複数のデバイスを指定し、バックエンドで適切に処理できるようになっています。つまりこの例で生成した simple という実行形式ファイルは、CPU、インテル® インテグレーテッド・グラフィックス、インテル® ディスクリート・グラフィックス、および NVIDIA* GPU で実行することができます。

  2. SYCL* で生成されたアプリケーションのランタイム制御環境変数の変更

    上記で生成したアプリケーションを実行するとプログラムはデフォルトデバイスにカーネルをオフロードしますが、従来は環境変数 SYCL_DEVICE_FILETER を使用して、SYCL_DEVICE_FILETER=cuda のようにターゲットデバイスを変更できました。インテル® oneAPI ツールキット 2023.1 に含まれるコンパイラーのランタイム環境でこの環境変数を使用すると、以下のように警告が出力されます。現時点では SYCL_DEVICE_FILETER はまだ機能していますが、将来削除されるかもしれません。

    これからは、SYCL_DEVICE_FILETER の代わりに ONEAPI_DEVICE_SELECTOR を使用してください。

    ただし、この環境変数の使い方は SYCL_DEVICE_FILETER とは異なるため、こちら (英語) のサイトを参照してください。すぐに慣れるでしょう。ちなみにこの環境変数の使い方は OpenMP* 使用時の環境設定と共通化されています。

急遽改善点を使用開始ましたが、これからも重要な点は随時更新していきます。

タイトルとURLをコピーしました