前言
阿里云虛擬化團(tuán)隊(duì)異構(gòu)計(jì)算和高性能計(jì)算團(tuán)隊(duì)一直致力于將計(jì)算資源"平民化";平民化這個詞我第一次是從高性能計(jì)算團(tuán)隊(duì)何萬青老師那邊聽到的,他們在做的E-HPC就是要讓所有云上用戶都能夠瞬間擁有一個小型的超算集群,使得使用超算不再僅僅是一些超算中心和高校的特權(quán);我們異構(gòu)計(jì)算團(tuán)隊(duì)則致力于將目前最快,最新的計(jì)算設(shè)備在云上提供給用戶,之前的產(chǎn)品為GPU云服務(wù)器EGS;大概半年前我們正式推出了FPGA云服務(wù)器FaaS;經(jīng)過內(nèi)測,公測,現(xiàn)在終于正式上線,用戶只需要開通白名單就可以和使用ECS虛擬機(jī)一樣使用FPGA資源了!
FaaS介紹
FaaS,全名FPGA as a Service,是一種在云上使用FPGA的方式;我們現(xiàn)在支持兩種不同的實(shí)例,分別為:
實(shí)例型號 | FPGA型號 |
---|---|
F1 | intel A10 |
F2 | Xilinx ku115 |
F2從入門到放棄
準(zhǔn)備
新建子帳號(可選)
建議用戶新建一個子帳號,并使用子帳號來操作阿里云資源,通過授權(quán)子帳號必要的權(quán)限,來保證安全!
1. 登陸阿里云RAM控制臺
2. 在左側(cè)邊欄位置選擇[用戶管理] -> [新建用戶]
3. 在彈出的創(chuàng)建用戶的表單中填寫:用戶名,顯示名,郵箱,電話等信息,**選中為該用戶自動生成AccessKey**,點(diǎn)擊確定
4. 在彈出的窗口中保存用戶的AK/AS,這里請一定要記住AK/AS,后續(xù)操作都會需要用到這個信息!
5. 至此,RAM子帳號已經(jīng)創(chuàng)建好,接下來需要給該子帳號授權(quán)!
6. 在RAM控制臺里,選中左側(cè)的[用戶管理]標(biāo)簽,可以看到剛剛新建的RAM子帳號,點(diǎn)擊[授權(quán)]按鈕,進(jìn)行子帳號授權(quán)
7. 至少給該子帳號授予如下權(quán)限:AliyunOSSFullAccess, AliyunECSFullAccess, AliyunRAMFullAccess & AliyunSTSAssumeRoleAccess;選中后點(diǎn)擊確定即可
開通OSS,并創(chuàng)建一個專用的bucket
FaaS的鏡像相關(guān)操作依賴于阿里云OSS存儲,因此用戶必須開通OSS服務(wù);同時我們建議用戶新建一個專有的bucket,用來存儲您自己的FPGA鏡像中間結(jié)果
開通OSS(如果已經(jīng)開通請忽略這一步)
1. 登陸OSS售賣頁面,點(diǎn)擊立即開通
在華東1區(qū)新建一個bucket
建議用戶新建一個bucket,專門用于FaaS服務(wù),因此這個bucket會對aliyun官方管理帳號開通讀寫權(quán)限,因此不建議用戶存儲和FaaS不相關(guān)內(nèi)容;**請記住這個bucket名字,在后續(xù)操作中會經(jīng)常用到**
1. 登陸OSS管理控制臺
2. 點(diǎn)擊左上方的"+"號,新建一個bucket
3. 在右側(cè)彈出的對話框中給這個bucket起一個名字,選擇區(qū)域?yàn)?*華東1**,點(diǎn)擊確定
4. 可以在左側(cè)看到剛剛創(chuàng)建的bucket
購買To 預(yù)算比較緊張,購買按量付費(fèi)的用戶: 考慮到F2實(shí)例價格比普通ECS價格高一些,因此建議用戶在調(diào)試,編譯階段采用普通ECS;建議使用阿里云計(jì)算型實(shí)例,4核以上;在完成調(diào)試和編譯后,真正需要下載到FPGA里運(yùn)行時,再購買F2實(shí)例;
1. 目前購買F2實(shí)例仍然需要開白名單,請用戶提工單(或者聯(lián)系阿里云BD)提供自己的阿里云帳號
2. 開通白名單后,在阿里云官網(wǎng)購買頁面直接購買,請選擇華東1,可用區(qū)B,VPC網(wǎng)絡(luò);F2目前支持**按量付費(fèi)**和**包年包月**兩種售賣方式;實(shí)例規(guī)格請選擇**異構(gòu)計(jì)算**,**FPGA計(jì)算型**
3. Xilinx的開發(fā)環(huán)境,我們準(zhǔn)備了一個鏡像,用戶直接使用該鏡像創(chuàng)建實(shí)例即可;該鏡像后期會在鏡像市場免費(fèi)提供給用戶,目前還只能通過共享鏡像的方式提供,因此用戶在選擇鏡像時,請選擇**共享鏡像**;如果在共享鏡像里看不到鏡像,需要提工單(或者聯(lián)系阿里云BD)
F2 實(shí)例OpenCL開發(fā)最佳實(shí)踐
這里我們以使用普通計(jì)算型實(shí)例做編譯和仿真,以F2實(shí)例作為最終運(yùn)行為例;當(dāng)然,編譯和仿真也完全可以在F2實(shí)例上完成,這樣更簡單編譯,仿真
對于按量用戶,建議使用更加便宜的普通ECS實(shí)例(建議使用計(jì)算型4核以上實(shí)例)進(jìn)行編譯和仿真,因?yàn)檫@時候不需要真正使用到FPGA;購買普通ECS實(shí)例和購買F2實(shí)例類似,只是在選擇實(shí)例規(guī)格時,選擇型號不同,但是**依然要使用我們共享的鏡像**
1. 首先配置SDx環(huán)境 source /opt/Xilinx/SDx/2017.2/settings64.sh2. 運(yùn)行SDx自帶demo:cd /opt/Xilinx/SDx/2017.2/examples/vadd
查看在當(dāng)前目錄下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
看結(jié)果是否PASSED
直接運(yùn)行export XCL_EMULATION_MODE=true #一定要設(shè)置這個環(huán)境變量,不然會報(bào)錯,找不到設(shè)備./vadd bin_vadd_cpu_emu.xclbin#如果報(bào)如下錯:Error: Unable to find Target Device xilinx_kcu1500_4ddr-xpr_4_0;請檢查XCL_EMULATION_MODE是否為true,如果沒有,請?jiān)O(shè)置:export XCL_EMULATION_MODE=true
硬件仿真make -f sdaccel.mk cleanallmake -f sdaccel.mk run_hw_em
看仿真結(jié)果是否PASSED
直接運(yùn)行export XCL_EMULATION_MODE=true #一定要設(shè)置這個環(huán)境變量,不然會報(bào)錯,找不到設(shè)備./vadd bin_vadd_cpu_emu.xclbin#如果報(bào)如下錯:Error: Unable to find Target Device xilinx_kcu1500_4ddr-xpr_4_0;請檢查XCL_EMULATION_MODE是否為true,如果沒有,請?jiān)O(shè)置:export XCL_EMULATION_MODE=true
編譯make -f sdaccel.mk cleanallmake -f sdaccel.mk xbin_hw
//其他一些操作/*make -f sdaccel.mk xbin_hw #生成最終的二進(jìn)制文件,時間比較長,差不多4個小時才能完成make -f ./sdaccel.mk help #查看幫助文檔#Compile and run CPU emulation using default xilinx:adm-pcie-7v3:1ddr:3.0 DSAmake -f sdaccel.mk run_cpu_em //即:軟件仿真#Compile and run hardware emulation using default xilinx:adm-pcie-7v3:1ddr:3.0 DSAmake -f sdaccel.mk run_hw_em //硬件仿真#Compile host executable onlymake -f sdaccel.mk host //只編譯host代碼#Compile XCLBIN file for system run onlymake -f sdaccel.mk xbin_hw //這個最重要,編譯生成可以下載到FPGA內(nèi)的二進(jìn)制文件#Clean working diretory#make -f sdaccel.mk clean#Super clean working directory#make -f sdaccel.mk cleanall*/
ps:此處編譯的時間會比較久,建議通過screen或者nohub等方式,防止ssh timeout退出。
3. 配置安全燒寫環(huán)境
source /root/xbinst_oem/F2_env_setup.shfaascmd config --id=
faascmd auth --bucket=
4. 編譯成功后打包結(jié)
#如果/root/xbinst_oem/目錄里沒有sdaccel_package.sh,先下載:wgethttp://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=<打包生成的結(jié)果,一個tar包>
6. 新建一個可以在F2上運(yùn)行的FPGA image
faascmd create_image --object=<在bucket中名字,建議和file一致> --fpgatype=xilinx --name=hereIsFPGAImageName --tags=hereIsFPGAImageTag --encrypted=false --shell=V1.0
7. 查看fpga image是否已經(jīng)可以下載
我們看到狀態(tài)已經(jīng)是success,可以下載了。記下FPGAIamgeUUID,一會下載的時候需要用
下載
如何編譯和仿真是在另外一臺ECS上完成的,這里首先要購買一臺F2實(shí)例;具體的購買過程參考**購買**章節(jié)
1. 首先配置安全燒寫環(huán)境(如果之前已經(jīng)設(shè)置過,跳過)source /root/xbinst_oem/F2_env_setup.sh
faascmd config --id=
faascmd auth --bucket=
2. 獲取fpgauuidfaascmd list_instances --instanceId=hereIsYourInstanceIdvm instance Id:可以在阿里云控制臺找到
3. 下載fpga imagefaascmd download_image --instanceId=hereIsYourInstanceId --fpgauuid=hereIsFpgaUUID --fpgatype=xilinx --imageuuid=hereIsImageUUID --imagetype=afu --shell=V1.0
4. 查看是否下載成功faascmd fpga_status --fpgauuid=hereIsFpgaUUID --instanceId=hereIsYourInstanceId
板卡上的FpgaImageUUID已經(jīng)跟需要下載的image一致,并且TaskStatus已經(jīng)valid,說明下載已經(jīng)成功。
5.跑host程序
make -f sdaccel.mk hostunset XILINX_SDX./vadd bin_vadd_hw.xclbin
原文標(biāo)題:FPGA資源平民化 - 阿里云FaaS F2使用指南
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論