FPGA资源平民化 - 阿里云FaaS F1 OpenCL使用指南

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: TODO

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.

相关文章
|
1月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
110 14
|
1月前
|
存储 人工智能 运维
正式收官!阿里云函数计算携手优酷,用 AI 重塑影视 IP 创新边界
近日,阿里云联合优酷发起的 Create@影视 IP x AI 应用创新大赛,将网剧《少年白马醉春风》这一热门影视 IP 与阿里云 AI 技术相结合,由阿里云函数计算提供 AIGC 技术支持参赛者基于网剧《少年白马醉春风》IP 或“少年江湖”精神内核,用 AI 生成角色场景设计、手办设计、破次元合照、数字人等多样化的作品。
|
23天前
|
SQL 分布式计算 Serverless
阿里云 EMR Serverless Spark 版正式开启商业化
阿里云 EMR Serverless Spark 版正式开启商业化,内置 Fusion Engine,100% 兼容开源 Spark 编程接口,相比于开源 Spark 性能提升300%;提供 Notebook 及 SQL 开发、调试、发布、调度、监控诊断等一站式数据开发体验!
73 3
阿里云 EMR Serverless Spark 版正式开启商业化
|
20天前
|
人工智能 运维 大数据
阿里云“触手可及,函数计算玩转 AI 大模型”解决方案评测报告
阿里云“触手可及,函数计算玩转 AI 大模型”解决方案评测报告
60 2
|
1月前
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
230 12
|
2月前
|
前端开发 小程序 Serverless
异步任务处理系统问题之阿里云函数计算FC的应用场景有哪些
异步任务处理系统问题之阿里云函数计算FC的应用场景有哪些
|
2月前
|
存储 运维 安全
函数计算产品使用问题之如何获取到访问其他阿里云服务所需的AccessKey、SecretKey或STS Token
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
145 7
|
5月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
176 2
|
5月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。

热门文章

最新文章