インテルoneAPI

複数のアーキテクチャに対応した統一プログラミングモデル

概要

高レベルのソフトウェアツールフローをサポートすることは、異種アーキテクチャの活用を望む顧客ベースの増加にとって重要です。インテルの新しいoneAPIは、他のハイレベルなツールと同様の性能を提供しながら、コードの再利用を中心に設計されています。インテルのoneAPIプログラミング・モデルについて、また、複数のアーキテクチャにまたがるアクセラレーション 、より簡単な開発を可能にすることでプログラミングの課題を解決する方法についてご紹介します。

本日、BittWare の一部製品でサポートされました。

プログラミングの課題

マルチアーキテクチャー対応

今日の HPC 環境では、ワークロードを実行するために、CPU、GPU、FPGA、および特殊なアクセラレータなど、複数のハードウェアアーキテクチャが利用可能です。すべてのワークロードに最適な単一のアーキテクチャはないため、アーキテクチャを組み合わせて使用することで、多くのシナリオで最高のパフォーマンスを発揮することができます。しかし、このようなアーキテクチャの多様性は、いくつかの課題にもつながっています:

それぞれのアーキテクチャには、別々のプログラミングモデルやツールチェインが必要です:

  • 必要なトレーニングおよびライセンス - コンパイラ、IDE、デバッガ、分析/監視ツール、デプロイツール - アーキテクチャごと
  • クロスアーキテクチャのソースコードのデバッグ、監視、保守に挑戦する。
  • 独自のIPやアーキテクチャにまたがる統合が困難で、コードの再利用ができない。

ソフトウェア開発の複雑さは、アーキテクチャの選択の自由を制限する。

  • 参入障壁を克服するための技術的専門知識に必要な単発的な投資

oneAPIがお手伝いできること

OneAPIは、多様なアーキテクチャの開発を簡素化する統一プログラミングモデルを提供します。oneAPIプログラミングモデルでは、開発者は同じ言語とライブラリを使って異なるハードウェア・プラットフォームをターゲットにすることができ、同じセットのデバッグおよび性能分析ツールを使って異なるプラットフォーム上でコードを開発し最適化できます。

プラットフォームやハードウェア・アーキテクチャを問わず同じ言語を使用することで、ソースコードの再利用が容易になります。たとえ、異なるハードウェア・アーキテクチャに移行する際にプラットフォーム固有の最適化が必要であっても、コードの翻訳は必要ありません。また、共通の言語とツールセットを使用することで、新しい開発者のトレーニングが早くなり、デバッグが早くなり、生産性が向上します。

intel_onapi_benefits.png
  • エミュレーションと レポートによるパフォーマンスチューニングとタイミングクロージャー
  • VTune™ Profilerによるランタイム解析
  • マクロプラグマヘッダなど、組み込みの言語機能で実装された複雑なハードウェア・パターン
  • アーキテクチャやベンダーを超えたコードの再利用
  • 既存の高性能言語と互換性がある
  • 使い慣れたシーケンシャルプログラミング言語の活用:立ち上げと デバッグ時間の改善
  • IDEの統合:EclipseVSVS Code

oneAPIを使った2次元FFTのデモ

このソフトウェア指向のツールフローで、より速く開発し、コードを再利用する。

HBM2を搭載した520N-MXカードの2D FFTデモで、oneAPIの利用をご検討ください。ページ下部のコードダウンロードをリクエストしてください!

データパラレル C++

標準ベースのクロスアーキテクチャ言語

oneAPI言語は、並列プログラミングの生産性を高めるために設計された高水準言語であるData Parallel C++で、幅広い互換性のためにC++言語をベースとしています。DPC++はプロプライエタリな言語ではなく、オープンな業界横断的イニシアチブによって開発が進められています。

CPUやアクセラレータを問わず、妥協のない並列プログラミングの生産性と性能を提供するための言語です:

  • 特定のアクセラレータのためのカスタムチューニングを可能にしながら、ハードウェアターゲット間でコードの再利用を可能にします。
  • 単一アーキテクチャの独自言語に代わる、オープンな業界横断型言語

C++をベースにしています:

  • CおよびC++の一般的で馴染みのあるコンストラクトを使用し、C++の生産性を向上させます。
  • Khronos GroupのSYCL*を搭載し、データ並列処理とヘテロジニアスプログラミングをサポートします。

言語拡張を推進するコミュニティプロジェクト

  • データ並列プログラミングを簡略化する拡張機能
  • 進化し続けるためのオープンな共同開発 

oneAPI用FPGA開発フロー

DPC++のコードを、そのコードで指定されたハードウェア・アーキテクチャを実装するタイミングクローズのFPGAデザインに変換するために必要なバックエンドのコンパイル処理には、何時間もかかることがあります。そのため、FPGAの開発フローは、フルコンパイルの実行を最小限に抑えるように調整されています。

  1. 最初のステップは機能検証で、テストベンチを使ってコードが正しいかどうかをチェックします。これは、開発プラットフォーム上のエミュレーション(FPGAをターゲットにしたコードをCPU上でコンパイル・実行すること)を使って行われます。これにより、バグが発見され、修正する必要がある場合のターンアラウンドタイムを大幅に短縮することができます。そのためには、標準的なCPUデバッガ(Intel® Distribution for GDBなど)を使用することができます。
  2. 機能検証が完了すると、コンパイラが生成するレポートを通じて静的性能解析が行われます。レポートには、デザインにおけるメモリ、パフォーマンス、データフローのボトルネックを特定するために必要なすべての情報と、ボトルネックを解決するための最適化手法の提案が含まれています。また、ターゲットFPGAにおけるデザインの面積とタイミングの見積もりも提供されます。
  3. 静的解析の結果が満足のいくものであった場合、フルコンパイルが行われます。コンパイラーは、生成されたハードウェアに要求に応じてプロファイリング・ロジックを挿入できます。プロファイリング・ロジックは、メモリとパイプ・アクセスの動的プロファイリング・データを生成し、後にVtuneパフォーマンス・アナライザーが他の方法では発見できないデータパターン依存のボトルネックを特定するために使用することができます。
 

無料オンデマンドウェビナー

インテル® oneAPI™を使用して、FPGAで高性能なコンピュートアクセラレーション 。

登録後すぐに視聴できます!

oneAPIについてもっと知る

oneAPIとは?

oneAPIは、業界を超えたオープンな標準ベースの統一プログラミングモデルで、アプリケーションの高速化、生産性の向上、イノベーションの促進を実現するために、アクセラレータアーキテクチャに共通の開発者体験を提供します。oneAPI業界イニシアチブでは、oneAPI仕様とエコシステム全体での互換性のあるoneAPI実装に関するコラボレーションを奨励しています。

図書館

oneAPIは、計算とデータを多用するドメイン向けのライブラリを提供します。ディープラーニング、サイエンティフィックコンピューティング、ビデオ分析、メディア処理などが含まれます。

ハードウェア抽象化レイヤー

低レベルハードウェアインタフェースは、言語ランタイムがハードウェアアクセラレータを利用するための機能とサービスのセットを定義します。

仕様

oneAPI仕様は、既存の開発者向けプログラミングモデルを拡張し、多様なハードウェアスルー言語、ライブラリAPIセット、および低レベルのハードウェアインタフェースを可能にし、クロスアーキテクチャプログラミングをサポートします。互換性を促進し、開発者の生産性とイノベーションを可能にするため、oneAPI仕様は業界標準を基に構築され、オープンでクロスプラットフォームな開発者スタックを提供します。

520N-MXでoneAPIを使えばすぐにでも始められる

FPGAでoneAPIを始めよう

oneAPIを使った開発を始めるには、3つのコンポーネントが必要です。oneAPI Base ToolkitとFPGA ADd-Onは、いずれもインテルから入手できます。BittWare FPGAカード用のBSPは、BittWare's developer siteで入手可能です。 

インテルのoneAPIベースツールキット

oneAPI Base Toolkit用インテルFPGAアドオン。

FPGAカードBSPからBittWare

動画

Craig Petrieが語るBittWare のoneAPIへの対応について

 

価格や詳細についてご興味のある方は、こちらをご覧ください。

当社のテクニカルセールスチームは、在庫状況や構成情報を提供したり、技術的な質問に答えたりする準備ができています。