この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® oneAPI 2021.4 update available」の日本語参考訳です。
公開日: 2021 年 10 月 1 日
インテル® oneAPI ツールキットの最新のアップデート (2021.4) がリリースされました。
インテル® oneAPI ツールのリリースは今回で 4 回目となり、インテル® oneAPI の実装から約 1 年が経過しました。
インテル® oneAPI ツールは、数十年にわたって世界中の多くのアプリケーション開発に広く使用されてきたインテル® ソフトウェア製品をベースに、インテルが多大な貢献をしている複数のオープンソース・プロジェクトから構築されています。
インテル® oneAPI の大胆なビジョン
インテル® oneAPI は、ソフトウェア開発者にとってオープンなマルチベンダーのマルチアーキテクチャーの未来を確実にすることを目指す、CPU と XPU (アクセラレーター) のための大胆なビジョンです。このような未来の実現は、しばらく前から課題となっており、これまでになくオープン性が重要になっています。
oneAPI 仕様とイニシアチブ
oneAPI はオープンな仕様であり、アドバイザーや実装者の活発なコミュニティーがあり、全員がこのオープンでマルチベンダーのマルチアーキテクチャーに対応したアプローチにコミットしています。このコミュニティーは、onAPI がイニシアチブであることも意味しています。
oneAPI Technical Advisory Board (TAB) の議事録は GitHub* (英語) で公開されています。Advisory Board は、oneAPI 並列プログラミング・エコシステムの指針となる業界の専門家で構成された招待制のフォーラムです。oneAPI 仕様書 やアドバイザリー・ノート/スライド (英語) を確認し、コメントや質問を GitHub* の Issues として投稿することで、会話に参加することができます。
インテル® oneAPI 製品 – ツール
もちろん、仕様は実装されなければ意味がありません。インテル® oneAPI ツール (英語) は、インテル® アーキテクチャーで oneAPI をサポートするため、事前にビルドされ、検証されている製品です。
2021.4 アップデートでは、ハリウッド関係者 (インテル® OSPRay) とパフォーマンス・チューニングの専門家 (インテル® VTune™ プロファイラーのフレームグラフ) の両方にとって素晴らしいグラフィックス、標準規格 (SYCL*、OpenMP*、Fortran) の実装の拡張、および Python*、ライブラリー、コンパイラーによるパフォーマンスの向上などが含まれています。インテル® oneAPI ツールは、XPU をサポートするという oneAPI のビジョンに従って、CPU、GPU、FPGA などのサポートを常に拡大しています。
インテル® VTune™ プロファイラーのフレームグラフ
インテル® VTune™ プロファイラーのホットスポット解析タイプでフレームグラフ (Flame Graphs) がサポートされました。[Flame Graph] ウィンドウに切り替えて、アプリケーションの最もホットなコードパスを素早く特定できます。フレームグラフを使って、各関数とその呼び出し先で費やされた時間を解析することが可能です。詳細は、インテル® VTune™ プロファイラー・クックブックの「フレームグラフを使用したホット・コード・パスの解析」 (英語) を参照してください。フレームグラフの使い方を含む、さまざまなチューニング・レシピが紹介されています。または、Flame Graphs 機能のドキュメント (英語) を参照してください。
また、インテル® VTune™ プロファイラーの GPU オフロード解析 (英語) では、実行やデータ転送など、CPU からより多くのコンテキストが含まれるようになったことで、GPU での実行に関する情報がさらに充実しました。
インテル® Advisor クックブック
インテル® Advisor の開発チームによって用意されたこのオンライン・クックブックには、インテル® Advisor を使用して、多くの重要なパフォーマンス・チューニング・シナリオを実現する方法を紹介したレシピが満載です。今回のアップデート (2021.4) では、異なる GPU をサポートする際に、GPU アプリケーションのパフォーマンスをモデル化する機能が追加されました。これは、将来の GPU 設計で対処すべき潜在的なパフォーマンスの変化を特定するのに非常に役立ちます。インテル® Advisor クックブック (英語) に掲載されているこのレシピやその他のレシピを、ぜひご覧ください。
訳者注: インテル® Advisor クックブックとインテル® VTune™ プロファイラー・クックブックは日本語版も公開されています。
インテル® OSPRay: XPU と Python* の境界が曖昧に
インテル® oneAPI レンダリング・ツールキットでは、プラットフォーム全体を考慮することのメリットが発揮されています。CPU や GPU だけを考慮するのではなく、XPU (アクセラレーション機能全般) を取り入れることで、Jim Jeffers 氏は SIGGRAPH の講演で見事な結果を紹介してくれました。
最新のアップデートでは、インテル® OSPRay がアニメーション化された glTF シーンでカメラ・モーション・ブラーとトランスフォーム・モーション・ブラーをサポートし、インテル® OSPRay Studio 向けに Python* 3.7 バインディングが追加されました。
EuroVis 2021 会議と同時開催された VisGap ワークショップにおいて、高品質な物理ベースのレンダリングとサイエンティフィック・ビジュアライゼーションのワークフローを提供する柔軟なデザインのインテル® OSPRay Studio (英語) の開発者たちが、その動機、設計哲学、機能、対象となるユースケースと実世界のアプリケーション、そしてインテル® OSPRay の将来の可能性について語りました。彼らの論文 (英語) とプレゼンテーションのビデオ (英語) をご覧になることができます。
システムの状態を提供する診断ユーティリティー
皆様からのご要望にお応えして、インテル® oneAPI に新しいプレビュー機能である診断ユーティリティーが追加されました。これまで、このツールはサポートエンジニアが使用していましたが、今回ツールキットに追加されました。システムやインテル® oneAPI ツールの正常な動作を妨げる可能性のあるインストールの問題 (アクセス権限、バージョン、ドライバーの不一致など) を報告することで、システムの状態を診断できます。このプレビューリリースは、Linux* Ubuntu* 20.04 LTS、SLES 15 SP2、RHEL 8.2 でテストされています。今回のプレビューで皆様から寄せられたフィードバックを基に、今後のリリースで機能や対応プラットフォームを拡大していく予定です。
LLVM コンパイラー
先日、インテル® コンパイラーの LLVM への対応状況をお伝えしましたが、C/C++ コンパイラーでは、LLVM を採用したコンパイラーのほうが、採用していないクラシック・コンパイラーよりもパフォーマンスが優れています。
今回のリリースでは、インテル® Fortran コンパイラーの LLVM への移行が引き続き行われています。最適化のチューニングに加えて、Fortran 2008 と OpenMP* の機能についても大きな進展がありました。いつものように、機能ごとの対応状況を Fortran 言語と OpenMP* 機能の対応状況表に記載していますので、ご確認ください。インテル® Fortran コンパイラーの「リリースノート」 (英語) には、インテル® Fortran コンパイラー・クラシックと LLVM ベースのベータ版インテル® Fortran コンパイラーの両方の情報が記載されています。コンパイラーの出力はバイナリー互換であるため、従来の Fortran 製品から一度に移行することなく、アプリケーションの一部で LLVM ベースの新しいコンパイラーを評価することができます。
LLVM コンパイラーとの緊密な統合によって、高い価値がもたらされることを嬉しく思います。LLVM を全面的に採用することで、私たち全員が大きな恩恵を受けることができます。
Visual Studio* Code (VS Code) の拡張
開発者の一般的な作業を支援し、生産性向上に役立ついくつかの新しい拡張機能が追加されました。Visual Studio* Code のマーケットプレイスにアクセスして、サンプルコード・ブラウザー、GPU デバッグ、インテル® DevCloud を含む、インテル® oneAPI ツールキット用の便利な拡張パックをインストールしてください。リリースと同時に公開されたこれらの拡張機能は、2021.4 で最も効果的に動作します。ISPC (英語) ユーザーは、"ispc" と入力して拡張機能を見つけることができます。VS Code 用のインテルの拡張機能 (英語) の一覧は、オンラインカタログでも確認できます。
さまざまなパフォーマンスと XPU に対応
ツールには多数のパフォーマンス最適化が施されており、それらは「リリースノート」 (英語) にまとめられています。インテルでは、実際のアプリケーションで重要となる信頼性の高い最適化を提供するべく、ツールを開発しています。
ここでは、パフォーマンスおよび XPU 関連の機能の一部を紹介します (詳細は、「リリースノート」 (英語) を参照してください)。
- FPGA シミュレーション・フロー (英語) は、oneAPI デザインを業界標準の RTL シミュレーターで実行できるようにします。
- LLVM コンパイラー (C、C++、SYCL*/DPC++) や gcc で FP16 (インテル® AVX-512) をサポートしたり、今後リリース予定のインテルの XPU 向けに最適化するなど、数多くのクールな機能がインテル® oneAPI ツールで採用されています。これらは、オープンソース・リポジトリー (英語) で確認できます。
- インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) は、DPC++ および OpenMP* オフロード API を通じて、乱数ジェネレーター (RNG) の多項分布、ポアソンV分布、超幾何分布、負の二項分布、二項分布で GPU をサポートしました。
- インテル® Inspector では、C++ スタックフレームの可視化が改善され、libc および OpenCL* ライブラリーのレポートの精度が向上しました。
- インテル® oneAPI AI アナリティクス・ツールキットで導入された最新のスパース機能とプルーニング機能により、自然言語アルゴリズムのパフォーマンスを細かく調整できるようになりました。
- Python* ベースの scikit-learn* アルゴリズムを簡単にオフロードして、インテルの CPU や XPU などのヘテロジニアス・ハードウェアの最先端の機能を活用できます。
- インテル® オープン・ボリューム・カーネル・ライブラリー (インテル® Open VKL) 1.0 (英語) が含まれており、ARM* CPU でのインテル® Open VKL のネイティブな使用のサポートと、インターバルおよびヒット・イテレーター・コンテキスト、任意のボリューム属性の反復、設定可能なバックグラウンド値、トライキュービック・フィルターなどの新しい API が追加されています。
- インテル® oneAPI DPC++/C++ コンパイラーとインテル® oneAPI DPC++ ライブラリーでは、SYCL* 2020 機能と適合性の向上により、さまざまなハードウェア・アクセラレーター上でプログラミングの生産性を高めます。
- インテル® Advisor の GPU ルーフラインは、ユーザーコードの解析において、GPU を最大限に活用する実用的な推奨事項を提供します。
- また、既存の GPU コードを将来の GPU に移行した場合のパフォーマンス上のメリットを推定するモデル化機能が追加されました。
ツールの入手方法
アップデートは、オリジナル製品のダウンロードと同じ場所で入手できます。インテル® oneAPI ツールキットのサイト、またはコンテナー、apt-get、Anaconda*、その他のディストリビューション経由で入手できます。
これらのツールは、非常に有用なトレーニング・リソースを備えたインテル® DevCloud (英語) でも利用できます。このクラウド環境は、自前でシステムを構築することなく、無料でさまざまなインテルの CPU やアクセラレーターを使ってコードを開発、テスト、最適化できる素晴らしい場所です。
アップデートしてインテル® oneAPI のすべての機能を最大限に活用
このリリース (2021.4) は、バージョン 2021 製品の最後の四半期アップデートです。どのツールもアップデートする価値があります。この記事では、今回のアップデートの重要な変更点について説明しましたが、詳しくは「リリースノート」を参照してください。
アップデートして、インテル® oneAPI ツールの機能を最大限に活用することをお勧めします。最高のパフォーマンスを引き出すには、常に最新の状態を保つことが重要です。
ご質問は、コミュニティー・フォーラム (英語) に投稿いただくか、個別のサポートをご希望の場合は、有料のプライオリティー・サポートをご確認ください。
oneAPI で可能なヘテロジニアス・プログラミングに関する、ブログ (英語) もご覧ください。
oneAPI は、すべてのソフトウェア開発者を支援するためのものであり、喜びであり、未来でもあります。
製品および性能に関する情報
1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex/ (英語) を参照してください。