Part Number: TDA4VM
Hello,
We are working with PSDK 6.1.
We register and un-register our target kernels in the tivxInit() and tivxDeInit() functions, as shown below:
/* Initialize Host */
#if defined (C66)
tivxRegisterOpenVXCoreTargetKernels();
#ifdef BUILD_TUTORIAL
tivxRegisterTutorialTargetKernels();
tivxRegisterUserKernel001TargetC66Kernels();
tivxRegisterUserKernel002TargetC66Kernels();
tivxRegisterUserKernel003TargetC66Kernels();
tivxRegisterMsiVfsInferTargetC66Kernels();
#endif
#endif
While testing a new kernel (msi_vfs_infer), we observed the following runtime errors:
root@j7-evm:/opt/vision_apps# ./vx_app_msi_vfs_inter.out
Initializing vision app...
APP: Init ... !!!
APP_LOG: Mapping 0xb8000000 ...
APP_LOG: Mapped 0xb8000000 -> 0xffffb34a0000 of size 262144 bytes
MEM: Init ION ... !!!
MEM: Initialized ION (fd=4) !!!
MEM: Init ION ... Done !!!
IPC: Init ... !!!
APP_LOG: Mapping 0xb8040000 ...
APP_LOG: Mapped 0xb8040000 -> 0xffffb14e0000 of size 33292288 bytes
APP_LOG: Mapping 0x30e00000 ...
APP_LOG: Mapped 0x30e00000 -> 0xffffb39b0000 of size 3072 bytes
IPC: Init ... Done !!!
REMOTE_SERVICE: Init ... !!!
REMOTE_SERVICE: Init ... Done !!!
APP: Init ... Done !!!
0.004343 s: VX_ZONE_INIT:Enabled
0.004359 s: VX_ZONE_ERROR:Enabled
0.004362 s: VX_ZONE_WARNING:Enabled
0.004572 s: VX_ZONE_INIT:[tivxInit:75] Initialization Done !!!
0.004735 s: VX_ZONE_INIT:[tivxHostInit:35] Initialization Done for HOST !!!
Vision app successfully initialized!
Creating use-case.......
Use-case created successfully !!!
Verifying use-case.......
0.012750 s: VX_ZONE_ERROR:[ownContextSendCmd:550] sending object descriptor failed
0.012760 s: VX_ZONE_ERROR:[ownNodeKernelInit:456] Target kernel, TIVX_CMD_NODE_CREATE failed
0.012765 s: VX_ZONE_ERROR:[ownGraphNodeKernelInit:559] kernel init for node 0, kernel com.ti.msi_vfs.msi_vfs_inter ... failed !!!
0.012771 s: VX_ZONE_ERROR:[vxVerifyGraph:1967] Node kernel init failed
0.012776 s: VX_ZONE_ERROR:[vxVerifyGraph:2021] Graph verify failed
ERROR verifying use-case !!!
ERROR running use-case !!!
ERROR deleting use-case !!!
Use-case has been successfully executed!
0.012820 s: VX_ZONE_INIT:[tivxHostDeInit:40] De-Initialization Done for HOST !!!
0.012828 s: VX_ZONE_ERROR:[tivxObjectDeInit:168] tivxObjectDeInit: Is graph use failed
0.012833 s: VX_ZONE_ERROR:[tivxObjectDeInit:174] tivxObjectDeInit: Is node use failed
0.012837 s: VX_ZONE_ERROR:[tivxObjectDeInit:180] tivxObjectDeInit: Is kernel use failed
0.012846 s: VX_ZONE_ERROR:[tivxObjectDeInit:228] tivxObjectDeInit: Is image use failed
0.012852 s: VX_ZONE_ERROR:[tivxObjectDeInit:264] tivxObjectDeInit: Is scalar use failed
0.012856 s: VX_ZONE_ERROR:[tivxObjectDeInit:276] tivxObjectDeInit: Is error use failed
0.013936 s: VX_ZONE_INIT:[tivxDeInit:114] De-Initialization Done !!!
APP: Deinit ... !!!
REMOTE_SERVICE: Deinit ... !!!
REMOTE_SERVICE: Deinit ... Done !!!
IPC: Deinit ... !!!
[C6x_1 ] 51.455208 s: VX_ZONE_ERROR:[tivxTargetKernelInstanceAlloc:107] tivxTargetKernelInstanceAlloc: kernel com.ti.msi_vfs.msi_vfs_inter has not been registered on this CPU
[C6x_1 ] 51.455239 s: VX_ZONE_ERROR:[tivxTargetKernelInstanceAlloc:108] tivxTargetKernelInstanceAlloc: Please register this kernel on the appropriate target core
[C6x_1 ] 51.455265 s: VX_ZONE_ERROR:[tivxTargetNodeDescNodeCreate:753] tivxTargetNodeDescNodeCreate: target_kernel_instance is NULL
IPC: DeInit ... Done !!!
MEM: Deinit ION ... !!!
MEM: Alloc's: 1 alloc's of 2780160 bytes
MEM: Free's : 1 free's of 2780160 bytes
MEM: Open's : 0 allocs of 0 bytes
MEM: Deinit ION ... Done !!!
APP: Deinit ... Done !!!
root@j7-evm:/opt/vision_apps#
The test application and kernel started working fine after making the following changes in tivxInit() and corresponding changes in tivxDeInit():
/* Initialize Host */
#if defined (C66)
tivxRegisterOpenVXCoreTargetKernels();
#ifdef BUILD_TUTORIAL
tivxRegisterTutorialTargetKernels();
//tivxRegisterUserKernel001TargetC66Kernels();
//tivxRegisterUserKernel002TargetC66Kernels();
//tivxRegisterUserKernel003TargetC66Kernels();
//tivxRegisterUserKernel004TargetC66Kernels();
tivxRegisterMsiVfsInferTargetC66Kernels();
#endif
#endif
This is a great workaround for the unit testing.
But we require to register and use all of our existing user kernels in our DL-based vision app, and possibly add more in the future.
So there is a good chance that the runtime errors for new user kernel registration shown above may occur again.
How can we avoid/resolve these errors? Please advise.
Thank you.