![]() |
爱吹牛的墨镜 · 盼了多年,沈阳这条地铁确定不建了吗?官方回复 ...· 2 月前 · |
![]() |
乖乖的小熊猫 · 上海市社区矫正委员会召开第二次全体会议_监狱 ...· 5 月前 · |
![]() |
刚毅的皮带 · 我,香港80后机长,因为疫情,失去年薪240 ...· 7 月前 · |
![]() |
拉风的椅子 · 孙维首次在天涯发表的声明原文(2005年12 ...· 1 年前 · |
![]() |
聪明伶俐的黄豆 · 全程高能,魔术+悬疑的俄罗斯电影《杀掉那个魔 ...· 1 年前 · |
软件 context 华为 应用开发 |
https://developer.huawei.com/consumer/cn/doc/hiai-Guides/integration-0000001105764366 |
![]() |
任性的大象
1 年前 |
已复制- buildscript {
- repositories {
- jcenter{
- url "https://jcenter.bintray.com/"
- }
- google()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.1.1'
- }
- }
-
- allprojects {
- repositories {
- google()
- jcenter()
- maven {url 'https://developer.huawei.com/repo/'}
- }
- }
-
- task clean(type: Delete) {
- delete rootProject.buildDir
- }
已复制- dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation 'com.android.support.constraint:constraint-layout:1.0.2'
- implementation 'com.huawei.hiai.hiai-engine:huawei-hiai-computecapability:11.0.2.300'
- implementation 'com.android.support:recyclerview-v7:27.1.1'
- implementation 'com.android.support:cardview-v7:27.1.1'
- implementation 'com.android.support:appcompat-v7:27.1.1'
- }
在应用级根目录下打开混淆配置文件“proguard-rules.pro”,加入排除computecapability aar的混淆配置脚本。
已复制- -keep class com.huawei.hiai.computecapability.IComputeCapabilityDynamicLoader {*;}
- -keep class com.huawei.hiai.computecapability.ComputeCapabilityDynamicClient {*;}
已复制- #include "cloud_service.h"
调用CloudService:: Enable(void* jniEnv, void* context) ,在模型管家 Init 接口前调用该接口。
该接口第一个参数为应用层JNIEnv,第二个参数为应用层Context对象。若是深度学习框架集成,这两个参数可以传递void*,由应用层开发人员透传。
已复制
- shared_ptr<AiModelMngerClient> client = make_shared<AiModelMngerClient>();
- if (!client ) {
- LOGE("Create model manager client fail.");
- return;
- }
- jobject context = env->NewGlobalRef(jcontext);
- bool ret = CloudService::Enable(env, context);
- if (!ret) {
- LOGW("Cloud service enable failed. Will run as normal mode.");
- }
- ret = client->Init(nullptr);
JNIEnv参数直接传递JNI函数接口中的JNIEnv即可,以Demo为例详述Context的参数传递过程。
已复制- public static native ArrayList<ModelInfo> loadModelSync(ArrayList<ModelInfo> modelInfo, Context context);
已复制- @Override
- protected ArrayList<ModelInfo> loadModel(ArrayList<ModelInfo> modelInfo) {
- return ModelManager.loadModelSync(modelInfo, this);
- }
已复制- env->DeleteGlobalRef(context);
已复制- include $(CLEAR_VARS)
- LOCAL_MODULE := hiai_enhance
- LOCAL_SRC_FILES := $(DDK_LIB_PATH)/libhiai_enhance.so
- include $(PREBUILT_SHARED_LIBRARY)
-
- LOCAL_SHARED_LIBRARIES := hiai \
- hiai_enhance \
若 步骤4 Enable接口返回值为true,表示可以使能计算能力增强功能。若返回false,表示不使能计算能力增强功能。
打印Log:“CloudCollabCompile start”表示使用端云协同-NPU算子库动态升级的能力做模型编译。
已复制- dnnacl_graph_optimizer.cpp PreGraphSaveOptimize(265)::"[dnnacl] optimize romVersion: 100.510.010.029!"
- dnnacl_graph_optimizer.cpp PreGraphSaveOptimize(273)::"PreGraphSaveOptimize success !"
- seq_block_mem_assigner.cpp AssignMemory(568)::"out, workspace, reuse, concat size:[1,0,0,0]"
- model_memory_assign.cpp MemoryCalculate(394)::" ModelMemAssign::sub graph max memory_size is 618496!"
- seq_block_mem_assigner.cpp AssignMemory(568)::"out, workspace, reuse, concat size:[3,0,1,0]"
- model_memory_assign.cpp MemoryCalculate(407)::" ModelMemAssign::main graph memory_size is 622592!"
- dnnacl_graph_compiler.cpp CloudCollabCompile(153)::"CloudCollabCompile start."
需要在步骤2中使用最新版本computecapability aar。Enable接口返回值为true后,调用CloudService:: GetComputeCapabilityVersion ()来获取计算能力增强版本号。
已复制- string versionName=CloudService::GetComputeCapabilityVersion();