//参考sample_runtime_group_rfcnalex.c
/*PhyAddr和VirAddr关系*/
VirAddr = (HI_U8*) HI_MPI_SYS_Mmap(PhyAddr, u32Size);//将物理地址映射到虚拟地址
//设置开辟空间,为Forward提供输入输出空间HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S
//参考sample_runtime_group_rfcnalex.c
//设置开辟空间,为Forward提供输入输出空间HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S
//HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_PTR为HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S的引用&
HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S stGroupSrc;
HI_RUNTIME_GROUP_BLOB_S astGroupInputBlobs[1];
HI_RUNTIME_BLOB_S astInputBlobs[2];
//1.三个结构体之间的关系:
/*从上往下为包含关系,HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S包含HI_RUNTIME_GROUP_BLOB_S
,HI_RUNTIME_GROUP_BLOB_S又包含HI_RUNTIME_BLOB_S。*/
//2.使用方法如下:
memset(&astGroupInputBlobs[0], 0, sizeof(astGroupInputBlobs));
//将HI_RUNTIME_GROUP_BLOB_S指针赋给HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S
stGroupSrc.u32BlobNum=1;
stGroupSrc.pstBlobs = &astGroupInputBlobs[0];
//将HI_RUNTIME_BLOB_S指针赋给
//HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S的第一个元素下的“HI_RUNTIME_GROUP_BLOB_S”
strncpy(stGroupSrc.pstBlobs[0].acOwnerName, "", MAX_NAME_LEN);
strncpy(stGroupSrc.pstBlobs[0].acBlobName, "data", MAX_NAME_LEN);
stGroupSrc.pstBlobs[0].pstBlob = &astInputBlobs[0];
//HI_RUNTIME_BLOB_S设为0
memset(astInputBlobs, 0x0, sizeof(astInputBlobs));
//给HI_RUNTIME_BLOB_S开辟空间
s32Ret = SAMPLE_RUNTIME_SetBlob(&pstInputBlobs[0], HI_RUNTIME_BLOB_TYPE_U8, 1, 800, 600, 3, ALIGN_16);
SAMPLE_CHK_RETURN(HI_SUCCESS != s32Ret, s32Ret, "SAMPLE_RUNTIME_SetBlob faster rcnn failed!\n");
//给最里层的HI_RUNTIME_BLOB_S赋值
s32Ret = SAMPLE_RUNTIME_ReadSrcFile(pcSrcFile, &(pstInputBlobs[0]));
SAMPLE_CHK_RETURN(HI_SUCCESS != s32Ret, s32Ret, "ReadSrcFile failed!\n");
//最后推理
s32Ret = HI_SVPRT_RUNTIME_ForwardGroupASync(hGroupHandle, &stGroupSrc, &stGroupDst, 0, rfcn_alexnet_forward_finish);
HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S stGroupSrc;
HI_RUNTIME_GROUP_BLOB_S astGroupInputBlobs[1];
HI_RUNTIME_BLOB_S astInputBlobs[2];
//1.三个结构体之间的关系:
/*从上往下为包含关系,HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S包含HI_RUNTIME_GROUP_BLOB_S
,HI_RUNTIME_GROUP_BLOB_S又包含HI_RUNTIME_BLOB_S。*/
//2.使用方法如下:
memset(&astGroupInputBlobs[0], 0, sizeof(astGroupInputBlobs));
//将HI_RUNTIME_GROUP_BLOB_S指针赋给HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S
stGroupSrc.u32BlobNum=1;
stGroupSrc.pstBlobs = &astGroupInputBlobs[0];
//将HI_RUNTIME_BLOB_S指针赋给
//HI_RUNTIME_GROUP_SRC_BLOB_ARRAY_S的第一个元素下的“HI_RUNTIME_GROUP_BLOB_S”
strncpy(stGroupSrc.pstBlobs[0].acOwnerName, "", MAX_NAME_LEN);
strncpy(stGroupSrc.pstBlobs[0].acBlobName, "data", MAX_NAME_LEN);
stGroupSrc.pstBlobs[0].pstBlob = &astInputBlobs[0];
//HI_RUNTIME_BLOB_S设为0
memset(astInputBlobs, 0x0, sizeof(astInputBlobs));
//给HI_RUNTIME_BLOB_S开辟空间
s32Ret = SAMPLE_RUNTIME_SetBlob(&pstInputBlobs[0], HI_RUNTIME_BLOB_TYPE_U8, 1, 800, 600, 3, ALIGN_16);
SAMPLE_CHK_RETURN(HI_SUCCESS != s32Ret, s32Ret, "SAMPLE_RUNTIME_SetBlob faster rcnn failed!\n");
//给最里层的HI_RUNTIME_BLOB_S赋值
s32Ret = SAMPLE_RUNTIME_ReadSrcFile(pcSrcFile, &(pstInputBlobs[0]));
SAMPLE_CHK_RETURN(HI_SUCCESS != s32Ret, s32Ret, "ReadSrcFile failed!\n");
//最后推理
s32Ret = HI_SVPRT_RUNTIME_ForwardGroupASync(hGroupHandle, &stGroupSrc, &stGroupDst, 0, rfcn_alexnet_forward_finish);