インテル® C++ コンパイラーが Khronos SYCL* 2020 準拠の最初のコンパイラーに

インテル® DPC++/C++ コンパイラー

この記事は、The Parallel Universe Magazine 56 号に掲載されている「Our Intel® C++ Compiler Is the First to Earn Khronos SYCL* 2020 Conformance」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


parallel_v56_06

インテル® C++ コンパイラーが Khronos SYCL* 2020 準拠の最初のコンパイラーに

GPU アクセラレーターが、AI から HPC、画像処理に至るまで、さまざまな並列ワークロードの重要なソリューションとなっていることは皆さんご存じでしょう。最近まで、これらのプラットフォーム向けのプログラミング・モデルは、アプリケーション開発者を単一ベンダーのハードウェアに縛り付ける固有の言語により支配されてきました。Khronos Group は、GPU やその他のオフロード・アクセラレーターをプログラミングする、新しいマルチベンダーのオープンな標準である SYCL* を定義することにより、この問題を解決しました。SYCL* は最新の C++ プログラミング機能をベースとしており、あらゆるベンダーの GPU デバイスや、フィールド・プログラマブル・ゲート・アレイ (FPGA) などのほかのアクセラレーター・デバイスをターゲットにできる API を提供します。

Khronos Group が 2021年の初めに SYCL* 2020 仕様を承認した後、各ベンダーは仕様への完全準拠を達成するために懸命に取り組んできました。インテルは最近、インテル® oneAPI DPC++/C++ コンパイラーの 2024.1 リリースで準拠を達成した最初のベンダーになりました。

Khronos Group は、準拠であると主張するベンダーの言葉をただ受け入れているのではありません。SYCL* の仕様の公開に加えて、Khronos Group は包括的な SYCL* 準拠テストスイートも提供しています。準拠であると主張するには、ベンダーはまずコンパイラーがこのテストスイートに合格したことを証明する必要があります。この厳しさがアプリケーション・コードをあるベンダーのコンパイラーから別のベンダーのコンパイラーに移植する際に役立っていることを考えると、業界にとって有益な厳しさと言えるでしょう。

C++ with SYCL* で記述されたアプリケーションは異なるベンダーのハードウェア間で移植可能ですが、その責任はコンパイラーとアプリケーション開発者が負うことになります。根本的な課題は、GPU の機能がベンダーごとに異なり、アクセラレーターの種類 (GPU や FPGA など) によっても異なることです。これらの違いを明らかにしないと、ほとんどの場合、コードのパフォーマンスが低下したり、ベンダーによりパフォーマンスが大幅に異なることが歴史的に証明されています。

SYCL* はこれらの違いを隠すのではなく、これらの違いをプログラマーに明らかにします。そしてアプリケーション開発者が、異なるベンダー間での移植性が重要かどうかを判断します。開発者が単一ベンダーのハードウェア上でのみアプリケーションを実行する場合は、そのハードウェアでサポートされている機能を単純に使用できます。開発者が移植可能なアプリケーションを作成したい場合は、SYCL* 言語の豊富なクエリーメカニズムを使用して各デバイスで提供される機能を条件付きで利用することにより、各ハードウェア・デバイスのパフォーマンスを最大限に引き出すことができます。SYCL* の利点は、さまざまな種類のアクセラレーターで使用できる共通のプログラミング言語を提供しながら、各アクセラレーターに固有の機能を利用できることです。

初の SYCL* 準拠コンパイラーの発表により、開発者はこの移植性を利用できるようになりました。アプリケーション開発者は、コードが仕様に準拠するほかのコンパイラーに移植可能であることを保証しながら、SYCL* 2020 仕様のフルセットの機能を利用できます。

アクセラレーターの世界で、SYCL* コンパイラーがどのような意味を持っているのかを問う必要があります。まず、SYCL* をサポートする C++ コンパイラーです。C++ コンパイラーは、OpenMP* などの別の標準の、ほかの並列化やオフロードもサポートしていることがあります。アクセラレーターへのデータと計算のオフロードを制御する追加のサポートを備えた C++ でプログラミングしていると知っておくことが重要です。次に、準拠であることがコンパイラーとランタイムの組み合わせにより証明されていることです。Khronos のウェブサイトには、厳しい提出、レビュー、受理を通過した準拠製品が詳細な情報とともにリストされています (リンクはこの記事の最後を参照)。

最後に、SYCL* と、この最初の SYCL* 準拠コンパイラーについて詳しく学ぶための優れたリソースのリストを紹介します。

SYCL* の仕様は、khronos.org/sycl (英語) から入手できます。

準拠製品のリストは、khronos.org/conformance/adopters/conformant-products/sycl (英語) に掲載されています。

インテル® oneAPI DPC++/C++ コンパイラーは、www.xlsoft.com/jp/products/intel/compilers/dpcpp/ から入手できます。

SYCL* の学習には、tinyurl.com/book-SYCL (英語) の無料の電子書籍と sycl.tech (英語) のリソースが役立ちます。

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