tegra_multimedia_api and argus samples show interop : argus->IEGLOutputStream->eglstream->Acquire frame
or argus->IEGLOutputStream->IFrameConsumer->Acquire frame
In cross process ,just as my other topic:Cross eglstream copy CUeglFrame failed
this is the cpu performance:producer 2.0，consumer 5.3
(just gpu to cpu copy cuMemcpy3D
consumer:>cuEGLStreamConsumerAcquireFrame->cuGraphicsResourceGetMappedEglFrame-> cuMemcpy3D ->cuEGLStreamConsumerReleaseFrame
if i need 3 comsuer(yolo detect/face detect /ros usage ) for the 1 camera argus producer,it will cost much(2.0+3*5.3=17.9),how can i deal with this problem on my cross process ? any zero-copy method?The yolo/face/ros usage are developed by different person on 3 separate processes. IImageNativeBuffer dma-buf can Cross process processing？any zero-copy method
cudaHistogram cpu【1.3% ~2.0%】,so the argus and eglstream cost little;gpu data process will not cost cpu;
en,cpu cost much for the GPU to CPU memcpy copy!so just for my project usecase,i need to avoid date copy (zero copy)or just copy once!
so how can i deal with my problems on the best performance? one process for argus to producer camera frame;one yolo detect frame consumer process,the second face detect frame consumer process,and the third ros frame consumer process.
cudaHistogram sample,the wrapper of CUDA_RESOURCE_DESC for “histogram.cu”,it is simple applications;how can i use the wrapper of CUDA_RESOURCE_DESC on complex applications?
Eg:the cudaHistogram process get the wapper of CUDA_RESOURCE_DESC
the yolo detect process need the frame date,the wapper data ;
the face detect process also need the frame date,the wapper data ;
the Ros Visual navigation process also need the frame date,the wapper data ;
Is there a more appropriate technical route for one producer process and more consumer process?the cross process application
the argus camera frame data need to shared by multiple processes applications with zero copy
In fact,if my project is interop,multiple thread,it is easy;just use NvBuffer to get dma-buf fd,and use NvBufferTransform to copy the dma-buf;
But on cross process applications,the dma-buf can not Cross-process sharing