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
.