ここでは、OpenCL (Open Computing Language) を使用してイメージファイルを作成し、FPGA チップにイメージをダウンロードする方法を紹介します。
注
- ここに記載されているすべての操作は、同じリージョンの 1 つのアカウントで実行する必要があります。
- f1 インスタンスを RAM ユーザーとして使用することを強く推奨します。 不要な操作を避けるには、RAM ユーザーに必要な操作のみを実行する権限を与える必要があります。 RAM ユーザーのロールを作成し、OSS バケットにアクセスするため、ロールに一時的な権限を付与する必要があります。 IP アドレスを暗号化する場合は、RAM ユーザーが KMS (Key Management Service) を使用できるようにします。 RAMユーザーが権限を確認するには、アカウントのリソースを表示する権限を与えます。 始める前に、以下を完了してください。
前提条件
- f1 インスタンスを作成し、セキュリティグループのルールを追加して、インスタンスの SSH ポート 22 へのインターネットアクセスを許可します。
注 共有しているイメージのみが、f1 インスタンスで使用できます。 詳しくは「f1 インスタンスの作成」をご参照ください。
- ECS コンソールにログインして、インスタンス ID を取得します。
- OSS バケットを作成して、カスタムビットストリームファイルをアップロードします。 OSS バケットと f1 インスタンスは、同じリージョンの 1 つのアカウントで所有している必要があります。
- ビットストリームを暗号化するには、KMS (Key Management Service) を有効にします。
- f1 インスタンスを RAM ユーザーとして操作するには、次の操作を実行する必要があります。
- RAM ユーザーを作成し、許可を付与します。
- RAM ロールを作成し、許可を付与します。
- AccessKey を作成します。
手順
FPGA Server Example の環境を設定するには、次の手順を実行します。
手順 1. f1 インスタンスへの接続
手順 2. 基本環境のインストール
次のスクリプトを実行して、基本環境をインストールします。
source /opt/dcp1_0/script/f1_env_set.sh
手順 3. OpenCL サンプルのダウンロード
以下の手順に従って、公式 opencl のサンプルをダウンロードします。
- "/opt/tmp" ディレクトリを作成し、現在のディレクトリをそのディレクトリに変更します。
mkdir -p /opt/tmp cd /opt/tmp
現在、 /opt/tmp ディレクトリに入っています。 - コマンドを1つずつ実行して、OpenCL Example のファイルをダウンロードして解凍します。
wget https://www.altera.com/content/dam/altera-www/global/en_US/others/support/examples/download/exm_opencl_matrix_mult_x64_linux.tgz tar -zxvf exm_opencl_matrix_mult_x64_linux.tgz
次の図は、解凍後のディレクトリを示しています。 - 現在のディレクトリを "matrix_mult" ディレクトリに変更し、コンパイルのコマンドを実行します。
cd matrix_mult aoc -v -g --report ./device/matrix_mult.cl
コンパイルのプロセスには数時間かかります。 新しいコンソールを開き、
top
コマンドを実行すると、インスタンス上のプロセスやシステムリソースの使用状況をモニターし、コンパイルプロセスのステータスを見ることができます。
手順 4. OSS バケットへの設定ファイルのアップロード
以下の手順に従って、設定ファイルをアップロードします。
- コマンドを実行して faascmd を初期化します。
# If needed, add the environment variable and grant the permission to run the commands export PATH=$PATH:/opt/dcp1_1/script/ chmod +x /opt/dcp1_1/script/faascmd # Replace hereIsYourSecretId with your AccessKey ID. Replace hereIsYourSecretKey with your AccessKey Secret faascmd config --id=hereIsYourSecretId --key=hereIsYourSecretKey # Replace hereIsYourBucket with the bucket name of your OSS in the Region China East 1. faascmd auth --bucket=hereIsYourBucket
- 現在のディレクトリを "matrix_mult/output_files" ディレクトリに変更し、設定ファイルをアップロードします。
cd matrix_mult/output_files # Now you are accessing/opt/tmp/matrix_mult/matrix_mult/output_files faascmd upload_object --object=afu_fit.gbs --file=afu_fit.gbs
- gbs を使用して FPGA イメージを作成します。
# Replace hereIsYourImageName with your image name. Replace hereIsYourImageTag with your image tag. faascmd create_image --object=dma_afu.gbs --fpgatype=intel --name=hereIsYourImageName --tags=hereIsYourImageTag --encrypted=false --shell=V1.1
faascmd list_images
コマンドを実行して、イメージが作成されたかどうかを確認します。 返された結果で"State":"success"
が表示されている場合は、イメージが作成されたことを意味します。 FpgaImageUUID を記録します。
手順 5. f1 インスタンスへのイメージのダウンロード
f1 インスタンスにイメージをダウンロードするには、次の手順を実行します。
- コマンドを実行して、FPGA ID を取得します。
# Replace hereIsYourInstanceId with your f1 instance ID. faascmd list_instances --instanceId=hereIsYourInstanceId
返された結果のサンプル: 返された結果に FpgaUUID を記録します。 - コマンドを実行して、イメージを f1 インスタンスにダウンロードします。
# Replace hereIsYourInstanceID with your f1 instance ID. Replace hereIsFpgaUUID with your FPGA UUID. Replace hereIsImageUUID with your image UUID. faascmd download_image --instanceId=hereIsYourInstanceID --fpgauuid=hereIsFpgaUUID --fpgatype=intel --imageuuid=hereIsImageUUID --imagetype=afu --shell=V0.11
- コマンドを実行して、イメージがダウンロードされているかどうかを確認します。
# Replace hereIsYourInstanceID with your f1 instance ID. Replace hereIsFpgaUUID with your FPGA UUID. faascmd fpga_status --fpgauuid=hereIsFpgaUUID --instanceId=hereIsYourInstanceID
返された結果に "TaskStatus": "operating" が存在する場合、イメージがダウンロードされたことを意味します。
手順 6. FPGA チップへの FPGA イメージのダウンロード
FPGA イメージを FPGA チップにダウンロードするには、次の手順を実行します。
- 手順 1 でコンソールを開きます。 閉じている場合、手順 1 を繰り返します。
- OpenCL のランタイム環境を設定するには、次のコマンドを実行します。
sh /opt/dcp1_1/opencl/opencl_bsp/linux64/libexec/setup_permissions.sh
- コマンドを実行して親ディレクトリに戻ります。
cd .. /.. # Now, you are at the /opt/tmp/matrix_mult directory
- コマンドを実行してコンパイルします。
make # Output the environment configuration export CL_CONTEXT_COMPILER_MODE_ALTERA=3 cp matrix_mult.aocx ./bin/matrix_mult.aocx cd bin host matrix_mult.aocx
次の結果が返された場合は、設定が成功したことを意味します。 最後の行は
Verification: PASS
でなければならないことにご注意ください。[root@iZbpXXXXXZ bin]# ./host matrix_mult.aocx Matrix sizes: A: 2048 x 1024 B: 1024 x 1024 C: 2048 x 1024 Initializing OpenCL Platform: Intel(R) FPGA SDK for OpenCL(TM) Using 1 device(s) skx_fpga_dcp_ddr : SKX DCP FPGA OpenCL BSP (acl0) Using AOCX: matrix_mult.aocx Generating input matrices Launching for device 0 (global size: 1024, 2048) Time: 40.415 ms Kernel time (device 0): 40.355 ms Throughput: 106.27 GFLOPS Computing reference output Verifying Verification: PASS