マルチスレッド・ベクトル演算のデザイン例

お勧めの用途:

  • デバイス: 不明

  • Quartus®: バージョン 16.1

author-image

投稿者:

このデザイン例では、あるクラスの 2 つのインスタンスを 2 つの別個のスレッドで実行します。各インスタンスは異なるカーネルを使用します。最初のインスタンスは、ベクトル加算カーネルを実行して、C = A + B を行います。ここで、A、B、C は N 要素ベクトルです.2 番目のインスタンスは、メンバーワイズ・ベクトル乗算カーネルを実行して、C = A * B (memberwise) を行います。カーネルは意図的にシンプルに保たれ、最適化はされません。

2 つの別個のプログラムを同時に使用するようデバイスをプログラミングすることはできないため、問題のインスタンスはどちらも同じ OpenCL™ プログラムを共有します (つまり、同じコンテキスト内で動作しています)。ただし、この例のように、2 つのスレッドが別個のコマンドキューを持つことは可能です。簡潔さを維持するため、2 つのスレッドは同じコードの 2 つのインスタンス上で、異なる引数を使って実行されますが、一般的には 2 つの別個のクラスを実行できます。

この例では、基本的な OpenCL アプリケーション・プログラミング・インターフェース (API) を紹介することに加え、複数の OpenCL デバイスを利用可能な場合には、問題の分割にも対応しています。利用可能なデバイスが M 台ある場合、各デバイスが N/M ポイントで動作するように問題が分割されます。ホストプログラムは、すべてのデバイスが同じタイプであることを前提としています (つまり、同じバイナリを使用できますが、コードを一般化して異なるデバイスタイプを簡単にサポートできます)。

ダウンロード

このデザイン例は、OpenCL™ デバイス (.cl) およびホスト・アプリケーション用のソースコードを提供します。ホスト・アプリケーションをコンパイルするため、Linux* パッケージには Makefile が含まれており、Windows* パッケージには Microsoft* Visual Studio* 2010 プロジェクトが含まれています。

以下のダウンロードは、この例のために提供されています。

このデザインの使用には、ハードウェア・リファレンス・デザイン・ライセンス契約の使用条件が適用されます。

ソフトウェア要件とハードウェア要件

このデザイン例には、以下のツールが必要です。

  • インテル® FPGA ソフトウェア・バージョン 17.1 以降
  • インテル® FPGA for OpenCL™ バージョン 17.1 以降
  • Linux* の場合: GNU make および gcc
  • Windows* の場合: Microsoft* Visual Studio* 2010

インテル® のデザインツールをダウンロードするには、OpenCL™ ダウンロードページをご覧ください。基盤となるオペレーティング・システムの要件は、インテル® FPGA SDK for OpenCL™ の要件と同じです。

OpenCL および OpenCL ロゴは Apple Inc. の商標であり、Khronos の許可を得て使用しています。

* 製品は Khronos の公開仕様に基づいており、Khronos コンフォーマンス・テスト・プロセスに合格しています。現在のコンフォーマンス条件は、www.khronos.org/conformance で確認できます。