tvm 在 android gpu 上的速度問題
tvm android gpu opencl
2019/5/6
tvm 當前版本是 0.6.dev.
android手機上,gpu是由 opencl 來驅動的。
在帶有gpu的android手機上,可以用tvm來呼叫 opencl 做模型推導(例子)。
tvm載入模型後,用opencl進行第一次推理的時候,會非常慢. 5m的模型,需要40秒.
用cpu的話,就沒這個問題。
網上一種說法是,opencl在第一次執行的時候,需要動態編譯指令。
tvm呼叫opencl api來進行模型推理運算,確實很快(幾個毫秒)。
但要從gpu內取出推理結果,卻很慢很慢(128個資料,需要200毫秒).
gpu運算的結果,是存在gpu 記憶體內的.
要讀取gpu記憶體,需要呼叫 opencl api,把資料複製到cpu記憶體才行.
這個時候,opencl api會很慢很慢.
網上一種說法是,此時opencl在等待gpu運算完畢,才能複製出gpu 記憶體。
無論是什麼原因,反正很慢.
並且由於opencl是各手機廠商提供的庫,其他人也沒法修正.
參見末尾的參考1和參考2.
根據我的測試,要執行tvm cpu/gpu,android版本要高(8.0).
低版本的android,tvm直接崩潰,而不是返回錯誤碼。
我沒法提前知道那些android系統能執行tvm.
迴避辦法:我需要做乙個android service,放到另乙個程序執行tvm,測試一下tvm能否正常工作。
tvm 目前是0.6.dev,還在開發階段。
對老手機(android 5/6, armv7),執行會崩潰.
android 手機上,即使不使用 tvm gpu,還是可以使用 tvm cpu的。
參考1: any tips on copying data from cpu to gpu, bottleneck?
參考2: how to make the gpu to cpu memory copy faster? #979
在Ubuntu18 04上安裝tvm
工欲善其事,必先利其器。在開始學習和使用tvm之前,必定是要先安裝乙個的 不過直至2020年8月,tvm發布的最新版本還是0.的,尚未發布正式版。安裝上也有許多坑要填,不過按照官方文件上操作也基本是穩的。本文接下來的內容將簡要介紹一下筆者安裝tvm的過程。平台及版本 前排建議 如果不喜歡折騰,盡量別...
ERP在中國(上)
編者按 有關erp的引入是許多企業頗為關注的問題。自從1981年瀋陽第一工具機廠從德國工程師協會引進了第一套mrpii軟體以來,mrpii erp在中國的應用與推廣已經歷了近20年。從起步 探索到現在,尤其是在1998年,erp在各行各業開始變得耳熟能詳。但是究竟何為erp,erp的未來將是怎樣的,...
MinGW lapack 在windows 上安裝
方案一 mingw makefiles 配置好以後直接在build資料夾下,執行cmd.exe shell,mingw32 make j5,之後執行mingw32 make install 安裝檔案到c program files x86 lapack,勾選build shared libs 方案二...