本文描述如何使用f1 RTL(Register Transfer Level)。
說明:
- 本文所述所有操作都必須由同一個帳號在同一地域裡執行。
- 強烈建議您使用RAM使用者操作FaaS執行個體。為了防止意外操作,您需要讓RAM使用者僅執行必要的操作。在操作FPGA鏡像及下載時,因為您需要從指定的OSS Bucket下載原始DCP工程,所以您必須為FaaS管理帳號建立一個角色,並授予臨時許可權,讓FaaS管理帳號訪問指定的OSS Bucket。如果需要對IP加密,必須授予RAM使用者KMS相關許可權。如果需要做許可權檢查,必須授予查看使用者資源的許可權。
前提條件
建立f1執行個體,確保執行個體能訪問公網,並且執行個體所在安全性群組中已經添加規則放行SSH(22)通信埠的訪問。
說明:f1執行個體只能使用我們共用給您的鏡像。詳細資料,請參見 建立f1執行個體。
您已經 登入ECS管理主控台,在f1執行個體的詳情頁上,獲取執行個體ID。
您必須先 開通OSS服務,並 建立一個OSS Bucket 用於上傳您的檔案。Bucket與f1執行個體必須屬於同一個帳號、同一個地域。
如果需要Data Encryption Service,您還需要 開通金鑰管理服務(KMS)。
使用RAM使用者操作FPGA,必須完成以下操作:
操作步驟
按以下步驟使用f1 RTL。
第 1 步. 遠端連線f1執行個體
第 2 步. 配置基礎環境
運行以下指令碼或直譯式程式配置基礎環境。
source /opt/dcp1_0/script/f1_env_set.sh
第 3 步. 編譯工程
運行以下命令:
cd /opt/dcp1_0/hw/samples/dma_afu
run.sh
說明:編譯時間間較長,請耐心等待。
第 4 步. 製作鏡像
按以下步驟製作鏡像:
運行命令初始化
faascmd
。#如果需要,添加環境變量及運行許可權
export PATH=$PATH:/opt/dcp1_0/script/
chmod +x /opt/dcp1_0/script/faascmd
# 將hereIsYourSecretId替換為您的AccessKey ID,hereIsYourSecretKey替換為您的AccessKey Secret
faascmd config --id=hereIsYourSecretId --key=hereIsYourSecretKey
# 將hereIsYourBucket換為華東1地域裡OSS Bucket名稱
faascmd auth --bucket=hereIsYourBucket
確認在/opt/dcp1_0/hw/samples/dma_afu目錄下,運行以下命令上傳gbs檔案。
faascmd upload_object --object=dma_afu.gbs --file=dma_afu.gbs
運行以下命令製作鏡像。
# 將hereIsYourImageName替換為您的鏡像名稱
faascmd create_image --object=dma_afu.gbs --fpgatype=intel --name=hereIsYourImageName --tags=hereIsYourImageTag --encrypted=false --shell=V0.11
第 5 步. 下載鏡像
按以下步驟下載鏡像到f1執行個體:
查看鏡像是否製作成功:運行命令
faascmd list_images
。
返回結果裡,如果出現"State":"success"
,表示鏡像製作成功。請記錄返回結果裡顯示的FpgaImageUUID,稍後會用到。運行命令獲取FPGA ID。
# 將hereIsYourInstanceId替換為您的f1執行個體ID
faascmd list_instances --instanceId=hereIsYourInstanceId
以下為返回結果。請記錄FpgaUUID。
運行命令下載FPGA鏡像到f1執行個體。
# 將hereIsYourInstanceID替換為剛剛保存的執行個體ID;將hereIsFpgaUUID替換為上一條命令中記下的FpgaUUID;將hereIsImageUUID替換為上一步記下的FpgaImageUUID
faascmd download_image --instanceId=hereIsYourInstanceID --fpgauuid=hereIsFpgaUUID --fpgatype=intel --imageuuid=hereIsImageUUID --imagetype=afu --shell=V0.11
運行命令檢查是否下載成功。
# 將hereIsYourInstanceID替換為剛剛保存的執行個體ID;將hereIsFpgaUUID替換為上一條命令中記下的FpgaUUID;
faascmd fpga_status --instanceId=hereIsYourInstanceID --fpgauuid=hereIsFpgaUUID
如果返回結果裡出現
"TaskStatus":"operating"
時,且FpgaImageUUID和下載鏡像時的FpgaImageUUID一致,說明下載成功。
第 6 步. 測試
依次運行以下命令。
cd /opt/dcp1_0/hw/samples/dma_afu/sw
make
sudo LD_LIBRARY_PATH=/opt/dcp1_0/hw/samples/dma_afu/sw:$LD_LIBRARY_PATH ./fpga_dma_test 0
如果您看到如圖所示的輸出結果,說明測試完成。
說明:如果沒有開啟Huge pages,運行以下命令啟用Huge pages。
sudo bash -c "echo 20 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages"