最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

使用 C++ API 部署 TVM 模塊

2023-08-15 22:06 作者:HyperAI超神經(jīng)  | 我要投稿

更多 TVM 中文文檔可訪問 →https://tvm.hyper.ai/


使用 C++ API 部署 TVM 模塊

apps/howto_deploy?中給出了部署 TVM 模塊的示例,執(zhí)行下面的命令運行該示例:

獲取 TVM Runtime 庫

唯一要做的是鏈接到 target 平臺中的 TVM runtime。 TVM 給出了一個最小 runtime,它的開銷大約在 300K 到 600K 之間,具體值取決于使用模塊的數(shù)量。大多數(shù)情況下,可用 libtvm_runtime.so 文件去構建。

若構建 libtvm_runtime 有困難,可查看?tvm_runtime_pack.cc(集成了 TVM runtime 的所有示例)。用構建系統(tǒng)來編譯這個文件,然后將它包含到項目中。

查看?apps?獲取在 iOS、Android 和其他平臺上,用 TVM 構建的應用示例。

動態(tài)庫 vs. 系統(tǒng)模塊

TVM 有兩種使用編譯庫的方法,查看?prepare_test_libs.py?了解如何生成庫,查看?cpp_deploy.cc?了解如何使用它們。

  • 把庫存儲為共享庫,并動態(tài)加載到項目中。

  • 將編譯好的庫以系統(tǒng)模塊模式綁定到項目中。

動態(tài)加載更加靈活,能快速加載新模塊。系統(tǒng)模塊是一種更 static 的方法,可用在動態(tài)庫加載不可用的地方。

部署到 Android

為 Android Target 構建模型

針對 Android target 的 Relay 模型編譯遵循和 android_rpc 相同的方法,以下代碼會保存 Android target 所需的編譯輸出:

deploy_lib.so、deploy_graph.json、deploy_param.params 將轉(zhuǎn)到 Android target。

適用于 Android Target 的 TVM Runtime

參考?此處?為 Android target 構建 CPU/OpenCL 版本的 TVM runtime。參考這個?Java?示例來了解 Android Java TVM API,以及如何加載和執(zhí)行模型。

將 TVM 集成到項目中

TVM runtime 具有輕量級和可移植性的特點,有幾種方法可將 TVM 集成到項目中。

下文介紹如何將 TVM 作為 JIT 編譯器集成到項目中,從而用它在系統(tǒng)上生成函數(shù)的方法

DLPack 支持

TVM 的生成函數(shù)遵循 PackedFunc 約定,它是一個可以接受位置參數(shù)(包括標準類型,如浮點、整數(shù)、字符串)的函數(shù)。PackedFunc 采用?DLPack?約定中的 DLTensor 指針。唯一要做的是創(chuàng)建一個對應的 DLTensor 對象。

集成用戶自定義的 C++ 數(shù)組

在 C++ 中唯一要做的就是將你的數(shù)組轉(zhuǎn)換為 DLTensor,并將其地址作為 DLTensor* 傳遞給生成的函數(shù)。

集成用戶自定義的 Python 數(shù)組

針對 Python 對象 MyArray,需要做:

  • 將 _tvm_tcode 字段添加到返回 tvm.TypeCode.ARRAY_HANDLE 的數(shù)組中

  • 在對象中支持 _tvm_handle 屬性(以 Python 整數(shù)形式返回 DLTensor 的地址)

  • 用 tvm.register_extension 注冊這個類


使用 C++ API 部署 TVM 模塊的評論 (共 條)

分享到微博請遵守國家法律
攀枝花市| 鄂尔多斯市| 赤峰市| 方正县| 北海市| 鸡东县| 金沙县| 涟水县| 昭觉县| 渝北区| 留坝县| 栾川县| 海伦市| 合作市| 开阳县| 柘荣县| 新泰市| 北京市| 营口市| 开江县| 高陵县| 三明市| 安庆市| 海宁市| 资兴市| 祁阳县| 郯城县| 桐梓县| 和静县| 耒阳市| 儋州市| 二连浩特市| 丁青县| 江门市| 色达县| 麻城市| 多伦县| 涪陵区| 牟定县| 平南县| 筠连县|