本頁介紹了實現神經網絡API(NNAPI)驅動程序的最佳做法,以允許應用程序開發人員廣泛採用NNAPI。
縮短啟動時間
如果您的驅動程序在首次使用時改變了模型的權重,請確保驅動程序支持編譯緩存,這會減少應用程序啟動時用於編譯的時間。這很重要,因為如果啟動時間過長,應用程序可能會避免使用硬件加速。例如,某些應用程序的權重超過100 MB,每次啟動時進行轉換都會浪費很多。
減少最小延遲
為確保模型使用硬件加速,重要的是減少驅動程序中的最小延遲。許多應用程序使用多次執行的小型模型,並且如果執行工作負載的最小延遲過高(例如幾毫秒),則模型可能會在CPU上運行工作負載,而這只需要一到兩毫秒,而不是使用硬件加速度。注意代價高昂的線程同步。
使用NN HAL SchedTune組
從Android 11或更高版本開始,AOSP包含一個專用的NN HAL SchedTune組,該組允許進程間NN HAL進程使用大內核,類似於預定義的top-app
cgroup中的同進程實現。使用此SchedTune組可減少驅動程序開銷,尤其是對於小型機型。
要使用SchedTune組,請將以下行添加到NN HAL進程的init.rc
文件中:
writepid /dev/stune/nnapi-hal/tasks