src/plugins/proxy/docs/architecture.md
flowchart TB
subgraph application [User application]
direction LR
GPU.0
GPU.1
GPU.2
GPU.3
end
subgraph proxy_plugin [Proxy plugin]
direction LR
proxy_gpu_0[IntelGPU.0]
proxy_gpu_1[IntelGPU.1]
proxy_gpu_2[Hetero:NVIDIA.0,IntelGPU.2]
proxy_gpu_3[Hetero:NVIDIA.1,IntelGPU.3]
end
GPU.0--->proxy_gpu_0
GPU.1--->proxy_gpu_1
GPU.2--->proxy_gpu_2
GPU.3--->proxy_gpu_3
subgraph plugins [Plugins]
direction LR
intel_gpu[Intel GPU plugin]
nvidia[NVIDIA plugin]
hetero[Hetero plugin]
end
proxy_gpu_0--->intel_gpu
proxy_gpu_1--->intel_gpu
proxy_gpu_2--->hetero
proxy_gpu_3--->hetero
hetero--->intel_gpu
hetero--->nvidia
subgraph gpu_dev [Intel GPU Plugin devices]
direction LR
Intel_GPU.0
Intel_GPU.1
Intel_GPU.2
Intel_GPU.3
end
intel_gpu--->Intel_GPU.0
intel_gpu--->Intel_GPU.1
intel_gpu--->Intel_GPU.2
intel_gpu--->Intel_GPU.3
subgraph nvidia_dev [NVIDIA Plugin devices]
direction LR
NVIDIA.0
NVIDIA.1
end
nvidia--->NVIDIA.0
nvidia--->NVIDIA.1
subgraph hw_dev [Hardware devices]
direction LR
dev0[Intel iGPU]
dev1[Intel dGPU]
dev2[NVIDIA GPU 1]
dev3[NVIDIA GPU 2]
end
Intel_GPU.0 ---> dev0
Intel_GPU.1 ---> dev1
Intel_GPU.2 ---> dev2
Intel_GPU.3 ---> dev3
NVIDIA.0 ---> dev2
NVIDIA.1 ---> dev3
flowchart LR
subgraph openvino [openvino library]
core
inference
transformations[Common transformations]
lp_transformations[LP transformations]
frontend_common[Frontend common API]
proxy_plugin[Proxy plugin]
style frontend_common fill:#7f9dc0,stroke:#333,stroke-width:4px
style transformations fill:#3d85c6,stroke:#333,stroke-width:4px
style lp_transformations fill:#0b5394,stroke:#333,stroke-width:4px
style core fill:#679f58,stroke:#333,stroke-width:4px
style inference fill:#d7a203,stroke:#333,stroke-width:4px
end
ov::Core can create several instances of proxy plugins (separate instance for each high-level device)ov::device::uuid property to match devices from different pluginsov::device::properties()DEV.0, DEV.1, ..., DEV.N and etc.)