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

前言

阿里云虚拟化团队异构计算和高性能计算团队一直致力于将计算资源"平民化";平民化这个词我第一次是从高性能计算团队何万青老师那边听到的,他们在做的E-HPC就是要让所有云上用户都能够瞬间拥有一个小型的超算集群,使得使用超算不再仅仅是一些超算中心和高校的特权;我们异构计算团队则致力于将目前最快,最新的计算设备在云上提供给用户,之前的产品为GPU云服务器EGS;大概半年前我们正式推出了FPGA云服务器FaaS;经过内测,公测,现在终于正式上线,用户只需要开通白名单就可以和使用ECS虚拟机一样使用FPGA资源了!

FaaS介绍

FaaS,全名FPGA as a Service,是一种在云上使用FPGA的方式;我们现在支持两种不同的实例,分别为:

实例型号 FPGA型号
F1 intel A10
F2 Xilinx ku115

F2从入门到放弃

准备

新建子帐号(可选)

建议用户新建一个子帐号,并使用子帐号来操作阿里云资源,通过授权子帐号必要的权限,来保证安全!

  1. 登陆阿里云RAM控制台

  2. 在左侧边栏位置选择[用户管理] -> [新建用户]

  3. 在弹出的创建用户的表单中填写:用户名,显示名,邮箱,电话等信息,选中为该用户自动生成AccessKey,点击确定

  4. 在弹出的窗口中保存用户的AK/AS,这里请一定要记住AK/AS,后续操作都会需要用到这个信息!

  5. 至此,RAM子帐号已经创建好,接下来需要给该子帐号授权!
  6. 在RAM控制台里,选中左侧的[用户管理]标签,可以看到刚刚新建的RAM子帐号,点击[授权]按钮,进行子帐号授权

  7. 至少给该子帐号授予如下权限:AliyunOSSFullAccess, AliyunECSFullAccess, AliyunRAMFullAccess & AliyunSTSAssumeRoleAccess;选中后点击确定即可

开通OSS,并创建一个专用的bucket

FaaS的镜像相关操作依赖于阿里云OSS存储,因此用户必须开通OSS服务;同时我们建议用户新建一个专有的bucket,用来存储您自己的FPGA镜像中间结果

开通OSS(如果已经开通请忽略这一步)
  1. 登陆OSS售卖页面,点击立即开通

在华东1区新建一个bucket

建议用户新建一个bucket,专门用于FaaS服务,因此这个bucket会对aliyun官方管理帐号开通读写权限,因此不建议用户存储和FaaS不相关内容;请记住这个bucket名字,在后续操作中会经常用到

  1. 登陆OSS管理控制台
  2. 点击左上方的"+"号,新建一个bucket

  3. 在右侧弹出的对话框中给这个bucket起一个名字,选择区域为华东1,点击确定

  4. 可以在左侧看到刚刚创建的bucket

购买

To 预算比较紧张,购买按量付费的用户: 考虑到F2实例价格比普通ECS价格高一些,因此建议用户在调试,编译阶段采用普通ECS;建议使用阿里云计算型实例,4核以上;在完成调试和编译后,真正需要下载到FPGA里运行时,再购买F2实例;

  1. 目前购买F2实例仍然需要开白名单,请用户提工单(或者联系阿里云BD)提供自己的阿里云帐号
  2. 开通白名单后,在阿里云官网购买页面直接购买,请选择华东1,可用区B,VPC网络;F2目前支持按量付费包年包月两种售卖方式;实例规格请选择异构计算FPGA计算型


  3. Xilinx的开发环境,我们准备了一个镜像,用户直接使用该镜像创建实例即可;该镜像后期会在镜像市场免费提供给用户,目前还只能通过共享镜像的方式提供,因此用户在选择镜像时,请选择共享镜像;如果在共享镜像里看不到镜像,需要提工单(或者联系阿里云BD)

F2 实例OpenCL开发最佳实践

这里我们以使用普通计算型实例做编译和仿真,以F2实例作为最终运行为例;当然,编译和仿真也完全可以在F2实例上完成,这样更简单

编译,仿真

对于按量用户,建议使用更加便宜的普通ECS实例(建议使用计算型4核以上实例)进行编译和仿真,因为这时候不需要真正使用到FPGA;购买普通ECS实例和购买F2实例类似,只是在选择实例规格时,选择型号不同,但是依然要使用我们共享的镜像

  1. 首先配置SDx环境

    source /opt/Xilinx/SDx/2017.2/settings64.sh
  2. 运行SDx自带demo:
    cd /opt/Xilinx/SDx/2017.2/examples/vadd
    

    查看在当前目录下sdaccel.mk里面的platform(第60行)是否为

    XDEVICE=xilinx_kcu1500_4ddr-xpr_4_0
    

    改common.mk文件

    vim ../common/common.mk
    

    把第61行

    CLCC_OPT += $(CLCC_OPT_LEVEL) ${DEVICE_REPO_OPT} --platform ${XDEVICE} -o ${XCLBIN} ${KERNEL_DEFS} ${KERNEL_INCS}
    

    改成

    CLCC_OPT += $(CLCC_OPT_LEVEL) ${DEVICE_REPO_OPT} --platform ${XDEVICE} -o ${XCLBIN} ${KERNEL_DEFS} ${KERNEL_INCS} --xp param:compiler.acceleratorBinaryContent=dcp
    

    软件仿真

    make -f sdaccel.mk run_cpu_em
    

    看结果是否PASSED

    直接运行

    export  XCL_EMULATION_MODE=true    #一定要设置这个环境变量,不然会报错,找不到设备
    ./vadd bin_vadd_cpu_emu.xclbin
    #如果报如下错:Error: Unable to find Target Device xilinx_kcu1500_4ddr-xpr_4_0;请检查XCL_EMULATION_MODE是否为true,如果没有,请设置:export  XCL_EMULATION_MODE=true
    

    硬件仿真

    make -f sdaccel.mk cleanall
    make -f sdaccel.mk run_hw_em
    

    看仿真结果是否PASSED

    直接运行

    export  XCL_EMULATION_MODE=true    #一定要设置这个环境变量,不然会报错,找不到设备
    ./vadd bin_vadd_cpu_emu.xclbin
    #如果报如下错:Error: Unable to find Target Device xilinx_kcu1500_4ddr-xpr_4_0;请检查XCL_EMULATION_MODE是否为true,如果没有,请设置:export  XCL_EMULATION_MODE=true
    

    编译

    make -f sdaccel.mk cleanall
    make -f sdaccel.mk xbin_hw
    
    //其他一些操作
    /*
    make -f sdaccel.mk xbin_hw  #生成最终的二进制文件,时间比较长,差不多4个小时才能完成
    make -f ./sdaccel.mk help  #查看帮助文档
    #Compile and run CPU emulation using default xilinx:adm-pcie-7v3:1ddr:3.0 DSA
    make -f sdaccel.mk run_cpu_em   //即:软件仿真
    #Compile and run hardware emulation using default xilinx:adm-pcie-7v3:1ddr:3.0 DSA
    make -f sdaccel.mk run_hw_em  //硬件仿真
    #Compile host executable only
    make -f sdaccel.mk host   //只编译host代码
    #Compile XCLBIN file for system run only
    make -f sdaccel.mk xbin_hw   //这个最重要,编译生成可以下载到FPGA内的二进制文件
    #Clean working diretory
    #make -f sdaccel.mk clean
    #Super clean working directory
    #make -f sdaccel.mk cleanall
    */
    

    ps:此处编译的时间会比较久,建议通过screen或者nohub等方式,防止ssh timeout退出。

  3. 配置安全烧写环境
    source /root/xbinst_oem/F2_env_setup.sh
    faascmd config --id=<accessID> --key=<accessKey>  #id/key为阿里云accessID/accessKey,上述新建子帐号曾经保存过
    
    faascmd auth --bucket=<bucket_name>  #新建的OSS bucket 名字
    
  4. 编译成功后打包结果
    #如果/root/xbinst_oem/目录里没有sdaccel_package.sh,先下载:wget http://fpga-tools.oss-cn-shanghai.aliyuncs.com/sdaccel_package.sh
    /root/xbinst_oem/sdaccel_package.sh -xclbin=/opt/Xilinx/SDx/2017.2/examples/vadd/bin_vadd_cpu_emu.xclbin
    

  5. 上传压缩包到自己的OSS指定的bucket
    faascmd upload_object --object=<在bucket中名字,建议和file一致> --file=<打包生成的结果,一个tar包>
    
  6. 新建一个可以在F2上运行的FPGA image
    faascmd create_image --object=<在bucket中名字,建议和file一致> --fpgatype=xilinx --name=hereIsFPGAImageName --tags=hereIsFPGAImageTag --encrypted=false --shell=V1.0
    
  7. 查看fpga image是否已经可以下载
    faascmd list_images
    

    我们看到状态已经是success,可以下载了。记下FPGAIamgeUUID,一会下载的时候需要用

下载

如何编译和仿真是在另外一台ECS上完成的,这里首先要购买一台F2实例;具体的购买过程参考购买章节

  1. 首先配置安全烧写环境(如果之前已经设置过,跳过)

    source /root/xbinst_oem/F2_env_setup.sh
    
    faascmd config --id=<accessID> --key=<accessKey>  #id/key为阿里云accessID/accessKey,上述新建子帐号曾经保存过
    
    faascmd auth --bucket=<bucket_name>  #新建的OSS bucket 名字
    
  2. 获取fpgauuid
    faascmd list_instances --instanceId=hereIsYourInstanceId
    

    vm instance Id:可以在阿里云控制台找到

  3. 下载fpga image
    faascmd download_image  --instanceId=hereIsYourInstanceId --fpgauuid=hereIsFpgaUUID --fpgatype=xilinx --imageuuid=hereIsImageUUID --imagetype=afu --shell=V1.0
    
  4. 查看是否下载成功
    faascmd fpga_status --fpgauuid=hereIsFpgaUUID --instanceId=hereIsYourInstanceId
    

    板卡上的FpgaImageUUID已经跟需要下载的image一致,并且TaskStatus已经valid,说明下载已经成功。

5.跑host程序

make -f sdaccel.mk host
unset XILINX_SDX
./vadd bin_vadd_hw.xclbin

时间: 2024-07-29 07:39:16

FPGA资源平民化 - 阿里云FaaS F2使用指南的相关文章

FPGA资源平民化 - 阿里云FaaS 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.x

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

[TOC] 1. 配置基础环境 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 行

阿里云市场头条投稿指南

[投稿收益] 商家免费提报内容,通过云市场审核后发布于云市场头条,优质内容可获以上资源位推荐. 同时,云市场对积极参与的商家将给予线下活动.线上传播等优先资源支持权益. [投稿方式] 商家产生内容后,发送邮件至mkt.marketing@list.alibaba-inc.com,云市场收到邮件会给予回复,内容通过后次日即可发布. [稿件形式] 包括但不仅限于以下类型,云市场欢迎商家尝试新的内容形式. 1)资讯类:云市场入驻上架宣传.公司动态.产品动态.媒体采访等. 2)案例类:热点或知名客户案例

全国第一家FPGA云主机(FAAS)正式启动售卖,被阿里云抢先了。

阿里云FPGA云主机(FAAS)正式启动售卖 应用领域:人工智能应用.大数据处理.图形图像.基因计算.工业物联网等. 阿里云FPGA云主机正式面向市场售卖,欢迎关注:https://www.aliyun.com/product/ecs/fpga,购买体验. 阿里云FAAS简介:        基于阿里云弹性计算框架,用户可以几分钟内轻松创建FPGA实例,创建自定义的专用硬件加速器.由于FPGA硬件的可重配特性,用户可以对已创建的FPGA硬件加速应用,进行快速擦写和重配,达到低时延硬件与弹性伸缩最

认识阿里云FPGA云服务器F1

阿里云F1环境 硬件 阿里云 FaaS F1 使用基于20nm工艺的Intel Arria 10 1150 FPGA,提供了良好的高速及并行性能支撑:DDR为64-bit SODIMM,运行频率2133MHz,两套内存能提供34GB/s的数据缓存带宽:和Host通信为8-Lane PCIe GEN3:同时提供丰富的内部可配时钟资源供开发使用.   硬件规格: 规格 描述 尺寸规格 169.5mm x 68.9mm, 标准半高半长,占单个槽位 FPGA型号 A10 1150 PCIe接口 PCIe

专访阿里云异构计算负责人:异构计算,GPU、FPGA、ASIC芯片将三分天下

在IT界,异构计算并不是一个新兴的词. 近十年来,计算行业经历了从32bit."x86-64".多核心.通用GPGPU以及2010年"CPU-GPU"异构计算的变迁.而最近几年,随着人工智能.高性能数据分析和金融分析等计算密集型领域的兴起,异构计算才突然火了起来. 因为传统通用计算的方式已经无法满足我们对计算能力的需求,异构计算被认为是现阶段挑起计算大梁的关键技术,阿里云异构计算产品解决方案就在这样的大环境下诞生了,这支团队的掌舵人正是张献涛. 张献涛,花名旭卿,武

告别繁荣缛节,阿里云资源编排支持API网关

阿里云ROS的API 网关资源11月初正式上线,资源编排(ROS) 支持在模板中定义API 网关资源,助力用户快速.便捷管理发布自己的API.目前,阿里云ROS 产品免费提供给广大用户. 资源编排服务 (Resource Orchestration Service 简称 ROS) 是一款帮助阿里云用户简化云计算资源管理和自动化运维的服务.用户遵循 ROS 定义的模板规范,编写模板文件,在模板中定义所需云计算资源的集合及资源间的依赖关系.资源配置细节等,ROS 通过编排引擎自动完成所有资源的创建和

【阿里云资讯】阿里云入驻中信云平台 输出技术支持与云资源

[8月30日讯] 8月29日,中信集团在京发布"互联网+转型"战略,宣布将大力建设提供平台服务和数据服务的中信产业云网.              阿里云成为中信产业云网的首批入驻服务提供商之一,为中信集团互联网+转型提供技术动力. 中信产业云网+阿里云 中信产业云网通过平台服务赋能,将从中信集团内向集团外把线下实体企业互连互通,加快实体企业资源和能力的在线化和数字化,助推更多新业态的涌现.阿里云作为中信产业云网的合作伙伴,将公共云具备的弹性伸缩.海量扩展的优势延伸至中信基础设施云平台

【集锦】2016年阿里云在线直播精华合集

每期阿里云的技术分享课程都报名火爆,各路技术大咖进行了对于技术理解的深度分享,但是还是有很多小伙伴错过了现场直播.本文特意为大家整理了阿里云在线技术分享课程的精彩合集,错过了直播的小伙伴们快来补补课吧! 12月28日 阿里沈询:分布式事务原理与实践 分布式数据库之中,一个最重要待解决的问题就是分布式事务应该怎么支持.往往一提到分布式事务,就立刻会联想到性能低,速度慢,然而真的是这样么?有没有一些方式和方法,能够比较好的解决这个问题呢?阿里针对这个场景又是怎么去实践的呢?阿里中间件资深技术专家沈询