tvm 在 android gpu 上的速度問題

2021-09-21 06:47:58 字數 1057 閱讀 9463

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 方案二...