ここでは、f1 インスタンスで RTL (Register Transfer Level) コンパイラを使用する方法について説明します。

  • ここに記載されているすべての操作は、同じリージョンの 1 つのアカウントで実行する必要があります。
  • f1 インスタンスを RAM ユーザーとして使用することを強く推奨します。 不要な操作を避けるには、RAM ユーザーに必要な操作のみを実行する権限を与える必要があります。 RAM ユーザーのロールを作成し、OSS バケットにアクセスするため、そのロールに一時的な権限を付与する必要があります。 IP アドレスを暗号化する場合は、RAM ユーザーが KMS (Key Management Service) を使用できるようにします。 RAM ユーザーが権限を確認するためには、アカウントのリソースを表示する権限を RAM ユーザーに与えます。

前提条件

  • f1 インスタンスを作成し、セキュリティグループのルールを追加して、インスタンスの SSH ポート 22 へのインターネットアクセスを許可します。
    共有しているイメージのみが、f1 インスタンスで使用できます。 詳しくは「f1 インスタンスの作成」をご参照ください。
  • ECS コンソールにログインして、インスタンス ID を取得します。
  • OSS を有効にして OSS バケットを作成し、ファイルをアップロードします。 OSS バケットと f1 インスタンスは、1 つのアカウントで所有され、同じリージョンで運用される必要があります。
  • 暗号化するには、KMS (Key Management Service) を有効にします。
  • FPGA を RAM ユーザーとして操作するには、事前に次の手順を実行します。

手順

f1 インスタンスで RTL コンパイラを使用するには、次の手順を実行します。

手順 1. f1 インスタンスへの接続

f1 インスタンスに接続します

手順 2. 基本環境の設定

スクリプトを実行して、基本環境を設定します。

source /opt/dcp1_1/script/f1_env_set.sh

手順 3. プロジェクトのコンパイル

次のコマンドを実行して、プロジェクトをコンパイルします。
cd /opt/dcp1_1/hw/samples/dma_afu
afu_synth_setup --source hw/rtl/filelist.txt build_synth
cd build_synth/
run.sh
プロジェクトのコンパイルには長い時間がかかります。

手順 4. イメージの作成

イメージを作成するには、次の手順を実行します。

  1. 次のコマンドを実行して faascmd を初期化します。
    
    # If needed, add the environment variable and grant permission to run the commands.
    export PATH=$PATH:/opt/dcp1_1/script/
    chmod +x /opt/dcp1_1/script/faascmd
    # Replace hereIsMySecretId with your AccessKey ID. Replace hereIsMySecretKey with your AccessKey Secret. 
    faascmd config --id=hereIsMySecretId --key=hereIsMySecretKey
    faascmd config --id=hereIsYourSecretId --key=hereIsYourSecretKey
    # Replace hereIsYourBucket with the OSS bucket name in the China East 1 region.
    faascmd auth --bucket=hereIsYourBucket
  2. "/opt/dcp1_0/hw/samples/dma_afu" ディレクトリに入っていることを確認し、コマンドを実行して gbs ファイルをアップロードします。
    faascmd upload_object --object=dma_afu.gbs --file=dma_afu.gbs
  3. コマンドを実行してイメージを作成します。
    
    #  Replace hereIsYourImageName with your image name.
    faascmd create_image --object=dma_afu.gbs --fpgatype=intel --name=hereIsYourImageName --tags=hereIsYourImageTag --encrypted=false --shell=V1.1

手順 5. イメージのダウンロード

イメージをダウンロードするには、次の手順を実行します。

  1. faascmd list_images コマンドを実行して、イメージが作成されたかどうかを確認します。
    返された結果に "State":"success" がある場合、イメージが作成されたことを意味します。 FpgaImageUUID を記録します。 FpgaImageUUID を記録します。
  2. コマンドを実行して、FPGA ID を取得します。
    
    # Replace hereIsYourInstanceId with your f1 instance ID.
    faascmd list_instances --instanceId=hereIsYourInstanceId
    返された結果に FpgaUUID を記録します。
  3. コマンドを実行して、イメージを f1 インスタンスにダウンロードします。
    
    # hereIsYourInstanceID を f1 インスタンス ID に置き換えます。 Replace hereIsFpgaUUID with your FpgaUUID. Replace hereIsImageUUID with your FpgaImageUUID.
    faascmd download_image --instanceId=hereIsYourInstanceID --fpgauuid=hereIsFpgaUUID --fpgatype=intel --imageuuid=hereIsImageUUID --imagetype=afu --shell=V0.11
  4. コマンドを実行して、イメージがダウンロードされているかどうかを確認します。
    
    # Replace hereIsYourInstanceID with your f1 instance ID. Replace hereIsFpgaUUID with your FpgaUUID.
    faascmd fpga_status --instanceId=hereIsYourInstanceID --fpgauuid=hereIsFpgaUUID
    返された結果に "TaskStatus":"operating" があり、表示された FpgaImageUUID が、記録された FpgaImageUUID と同じ場合、イメージはダウンロードされています。

手順 6. テスト

テストを行うためにコマンドを 1 つずつ実行します。

cd /opt/dcp1_1/hw/samples/dma_afu/sw
make
sudo LD_LIBRARY_PATH=/opt/dcp1_1/hw/samples/dma_afu/sw:$LD_LIBRARY_PATH ./fpga_dma_test 0
次の結果が返された場合、テストは完了です。
大量ページ機能が有効になっていない場合は、次のコマンドを実行して有効にします。
sudo bash -c "echo 20 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages"