microsoft / Azure-Kinect-Sensor-SDK

A cross platform (Linux and Windows) user mode SDK to read data from your Azure Kinect device.
https://Azure.com/Kinect
MIT License
1.49k stars 619 forks source link

What are the critical system specifications for a hosting multiple sensors on a single PC? #1457

Closed DrMaxP closed 3 years ago

DrMaxP commented 3 years ago

I am aware of some people's system specifications for hosting 5-10 Azure Kinect sensors on a single PC - including the DepthKit Ignite demo system https://github.com/microsoft/Azure-Kinect-Sensor-SDK/issues/971. However, that system had a very high spec and I'm wondering where performance could be lowered without significantly compromising the ability of a single PC to host say 5-7 Azure Kinect sensors capturing RGB data at 1080p and depth at any of the supported FOVs and binning modes? I do not need to do body tracking.

Apart from USB 3 expansion cards that can offer one host controller per sensor, what is most critical? Core count? Memory and speed? CPU max clock speed? Cache size? How important is the GPU if not doing body tracking?

For example, could I dial back to a CPU with 8 physical cores at a similar peak CPU clock speed as below and still host 6 Azure Kinects fine at 30fps? How much influence will the motherboard/chipset be having here? How important is a Core X CPU and X299 (w.r.t. the extra PCI lanes?).

If you have a single host running multiple kinects, would you be happy to post specs and performance observations?

From that thread:

-**PC

qm13 commented 3 years ago

The most critical resource (since you are not using Body Tracking) is USB bandwidth. You do not mention the frame rates for the data streams. Assuming 30fps you can probably handle 2 streams per controllers and certainly have enough GPU to process your 5-7 streams. Without knowing the compute requirements of your app or DepthKit it is hard to determine if the above HW requirements is sufficient. Since you are using DepthKit I would suggest asking Scatter for guidance.

DrMaxP commented 3 years ago

Thanks. I'm not using DepthKit. Because I am a hobbyist and can't risk building a high end PC that won't drive multiple Kinects, I've fallen back to the one PC per Kinect option. I already have some very small PCs that were being used to drive Kinect V2s and have determined what characteristics are important to drive an Azure Kinect. These PCs have mostly 4th Gen Intel CPUs and I'm testing Brekel Pointcloud V3 acquiring depth and colour at 30fps. It appears on these older systems you need at least 4 physical cores to do this - i.e. 2 cores with hyperthreading aren't enough on these systems. However, at least this gives me a known route / cost basis for running a multi-sensor system.

DrMaxP commented 3 years ago

Worth noting I'm not interested in body tracking and therefore the GPU requirements are no where near as important.