oneDPL による C++ プログラミングの生産性とパフォーマンスの向上

インテル® oneAPI

この記事は、The Parallel Universe Magazine 48 号に掲載されている「More Productive and Performant C++ Programming with oneDPL」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


parallel_v48_07

プログラマーが新しいマルチコア・プロセッサーで直面する課題について、Herb Sutter 氏が「The Free Lunch Is Over (フリーランチは終わった)」 (英語) と述べた 2005年以来、我々は長い道のりを歩んできました。今日のコンピューティング・アーキテクチャーとアクセラレーターのポートフォリオは非常に豊富で、絶えず成長しています。半導体の根本的な制限と、強力で電力効率の良いコンピューティングに対する要望により、開発が推進されています。コンピューティングの世界は、ますますヘテロジニアスになり、プログラマーの課題を生み出しています。

C++ は、現在でも最も人気の高い 5 つのプログラミング言語の 1 つです (TIOBE (英語) のプログラミング言語ランキングでは、2022年1月時点で第 4 位です)。メモリー管理の完全な制御や汎用プログラミングのサポートなどの属性により、ヘテロジニアス・プログラミングの課題に取り組むための優れた言語として評価されています。プログラミング言語を選択する際の一般的な懸念事項は、開発者の生産性とコード保守のコストです。幸いなことに、以前の調査では、並列ビルディング・ブロックと C++ アルゴリズムを組み合わせると生産性の向上が期待できることが示されています。例えば、特定のアーキテクチャーに共通の機能とパターン (リダクションなど) を最適化した組込み実装は、パフォーマンスと開発者の生産性の両方を向上させます。業界最高レベルの oneDPL (英語) の実装は、オープンソースの LLVM プロジェクトに貢献しました。そのおかげで、マルチスレッドの世界における開発者の労力は大幅に削減されます。

進化したクラシック STL アルゴリズム

古いものと新しいものでコードを高速化

C++ 言語は進化しており、その標準テンプレート・ライブラリー (STL) も進化しています。例えば、5 年前に実行ポリシーがアルゴリズム・ライブラリーに追加されたことにより、既存の C++ コードでも最新のプロセッサーのユビキタスな並列処理の恩恵を受けることができます。oneDPL は、異なるベンダーが移植可能な方法で従来のアルゴリズムの高速化バージョンを実装できるようにする、進化した C++ STL と考えることができます。

oneDPL は、SYCL* を使用して C++ アルゴリズム・ライブラリーを実装します。

「SYCL* (「シクル」と読みます) は、ロイヤルティー・フリーのクロスプラットフォーム抽象化レイヤーであり、同じソースファイルに含まれるアプリケーションのホストコードとカーネルコードと標準の ISO C++ を使用して、ヘテロジニアス・プロセッサーに対応したコードを記述できます。」

SYCL* には、ダイレクト・アクセラレーター・プログラミングの学習曲線があります。C++ はプログラマーにメモリー管理の完全な制御を提供しますが、ホストメモリーとデバイスメモリーの分離という概念はありません。oneDPL は、ホストとデバイス間でデータを共有するための移植可能な方法として、SYCL* のメモリー抽象化に依存しています。oneDPL のアルゴリズム関数はすぐに使えて、C++ プログラマーには馴染み深く、さまざまなアクセラレーター向けに最適化されています。これにより、学習曲線が平坦になり、コードのパフォーマンスと開発者の生産性が向上します。


製品とパフォーマンス情報

1実際の性能は利用法、構成、その他の要因によって異なります。詳細については、www.Intel.com/PerformanceIndex (英語) を参照してください。

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