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
下載鏡像到本地
# 將 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