閱讀329 返回首頁    go 阿裏雲 go 技術社區[雲棲]


F1 OpenCL使用教程

FPGA Server 配置 Example 環境說明

1. 安裝基礎環境

使用 SSH 登陸到服務器;安裝基礎環境

yum install -y python-devel screen
pip install aliyun-python-sdk-ram
pip install aliyun-python-sdk-faas
pip install oss2

隨後,使用 vim 編輯/usr/lib/python2.7/site3packages/aliyunsdkcore/endpoints.xml

在第 648 行下添加一行代碼

<Product><ProductName>faas</ProductName><DomainName>faas.cn3hangzhou.aliyuncs.com</DomainName></Product>

接下來,安裝 faascmd 腳本

vi /usr/local/bin/faascmd

將代碼粘貼進入後,保存退出,執行如下代碼

chmod a+x /usr/local/bin/faascmd

放在 /usr/local/bin 下可以直接執行 faascmd 命令,而無需加入前方的路徑

2. 安裝 DCP 的 SDK 和驅動

screen -S aliyunfaas
cd /opt/dcp1_0/script
sh install_sdk.sh

3. 配置環境變量

sh ini_driver.sh 
source intel_fpga_env.sh
source intel_quartus_env.sh

4. 下載官方的 OpenCL Example

mkdir -p /opt/tmp
cd /opt/tmp

此時,你應該在/opt/tmp目錄下

路徑

然後執行命令下載 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

編譯過程可能會持續數個小時,你可以再開一個console窗口,使用top監控係統占用,確定編譯狀態。

5. 上傳

首先,需要初始化faascmd

# 將 hereIsMySecretId 換為你的OSS SecretID,hereIsMySecretKey 換為你的 OSS 的SecretKey
faascmd config --id=hereIsMySecretId --key=hereIsMySecretKey
# 將hereIsMyBucket換為華東1區的OSS的 Bucket 名
faascmd auth --bucket=hereIsMyBucket

其次,上傳配置文件,進入 matrix_mult/output_files

cd matrix_mult/output_files # 此時你應該在/opt/tmp/matrix_mult/matrix_mult/output_files
faascmd uplad_object --object=afu_fit.gbs --file=afu_fit.gbs

接下來,使用 gbs 製作 FPGA image

# 將hereIsFPGAImageName換為你自己的鏡象名,將 hereIsFPGAImageTag 換為你自己的鏡像的標簽
faascmd create_image --object=afu_fit.gbs --fpgatype=intel --name=hereIsFPGAImageName  --tags=hereIsFPGAImageTag --encrypted=false --shell =V1.0  

查看鏡像是否製作成功

當 State 為 success 時,說明創建成功。記下這裏的 FpgaImageUUID,稍後會用到

6. 下載

首先,我們要獲取 FPGA ID

# 將 hereIsYourInstanceId 替換為你的 FPGA 雲服務器的實例 ID 
faascmd list_instances --instanceId=hereIsYourInstanceId


這裏記下 FpgaUUID

實例ID 可以在 FPGA 雲服務器詳情頁獲取

下載鏡像到本地

# 將 hereIsYourInstanceID 替換為剛剛保存的實例ID;將 hereIsFpgaUUID 替換為上一條命令中記下的 FpgaUUID;將 hereIsImageUUID 替換為上一步記下的 FpgaImageUUID
faascmd download_image  --instanceId=hereIsYourInstanceID --fpgauuid=hereIsFpgaUUID --fpgatype=intel --imageuuid=hereIsImageUUID --imagetype=afu --shell=V1.0

下載後,可以執行如下命令來檢查是否下載成功

# 將 hereIsYourInstanceID 替換為剛剛保存的實例ID;將 hereIsFpgaUUID 替換為上一條命令中記下的 FpgaUUID;
faascmd fpga_status --fpgauuid=hereIsFpgaUUID --instanceId=hereIsYourInstanceID

當 TaskStatus 為 valid 時,說明下載成功

7. 燒錄

此處需要第三步的環境,如果剛剛的窗口已經關閉,需要重新去執行第三步的環境變量操作

配置 OpenCL 的運行環境

 sh /opt/dcp1_0/opencl/dcp_opencl_bsp/linux64/libexec/setup_permissions.sh  

返回 上上級目錄

cd ../.. # 此時你應該在 /opt/tmp/matrix_mult

執行編譯命令

make
# 輸出環境配置
export CL_CONTEXT_COMPILER_MODE_ALTERA=3
cp matrix_mult.aocx ./bin/matrix_mult.aocx
cd bin
host matrix_mult.aocx

當你看到如下輸出時,則說明配置完成

[root@iZbp15n6gzuzccly816f9rZ 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

關鍵在於最後的Verification: PASS.

最後更新:2017-10-27 16:04:08

  上一篇:go  F1 RTL使用教程
  下一篇:go  幾款常用規則引擎的簡單對比及演示