前言
阿里云虛擬化團隊異構計算和高性能計算團隊一直致力于將計算資源"平民化";平民化這個詞我第一次是從高性能計算團隊何萬青老師那邊聽到的,他們在做的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.sh2. 運行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 cleanallmake -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 cleanallmake -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 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內的二進制文件#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.shfaascmd config --id=
faascmd auth --bucket=
4. 編譯成功后打包結
#如果/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=<打包生成的結果,一個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是否已經可以下載
我們看到狀態已經是success,可以下載了。記下FPGAIamgeUUID,一會下載的時候需要用
下載
如何編譯和仿真是在另外一臺ECS上完成的,這里首先要購買一臺F2實例;具體的購買過程參考**購買**章節
1. 首先配置安全燒寫環境(如果之前已經設置過,跳過)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已經跟需要下載的image一致,并且TaskStatus已經valid,說明下載已經成功。
5.跑host程序
make -f sdaccel.mk hostunset XILINX_SDX./vadd bin_vadd_hw.xclbin
原文標題:FPGA資源平民化 - 阿里云FaaS F2使用指南
文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論