Suggestion for Hardware and what to look for acceleration (NCS 1.9.0)

I am evaluating my new small server for NCS and I am interessted in which technologies should help within acceleration!
First I am not sure what does D3DVA11 mean?
Secondly, which instruction set is important to be in CPU?
Are helping virtual threads in CPU as well?
Is an internal Intel GPU helping? For example Intel® HD Graphics 4600 integrated in CPU?

Why I ask, I am thinking about some USFF pc based on this two CPUs (which are older, but I can get them for the very good price):

For having about 8 cameras, motion events on at least 4 of them, no continous recording I think.

Excellent questions because from NCS version 1.9.0 hardware acceleration is really becoming interesting. What you need and what will work is all about the cameras you use. What resolution do you need, what frames per second to you need, what is the bitrate from the camera etc.

First I will try to answers your questions. Just a disclaimer, this is a popular description of things. Some of you are probably experts here so be kind :wink:

In NCS Settings and tab for Decoding one can select CPU, DXVA2 and DX3D11VA (D3D). These are all about where the data-stream from the cameras is decoded. Selecting CPU will only use the CPU for the calculations and decoding process. Selecting DXVA2 or D3D will use a GPU for the decoding process and is used for hardware accelerated decoding. Both DXVA2 and D3D are API´s for programming/controlling the data stream between the CPU and the GPU. The API´s do basically do the same thing, but the D3D is the so to say “next generation” to handle new features of GPU. All this originates from the video game industry and there are tons of information on the Internet so I recommend to do a search for more knowledge.

Run NCS as a service in the background. There is one important difference hetween DXVA2 and D3D. If you want to run NCS as a service in the background you must use D3D. This is due to how Windows works and nothing else.

What is important for selection of CPU for hardware accelerated decoding? Today a majority of processors have a built in GPU. So when we talk about CPU it is actually a CPU and a GPU which are integrated on the same chip. This is the case in a majority situations, but there are some specific processors that do not have a GPU. One important processors which is Intel Xeon CPU do not have a built in GPU. That´s when external graphics cards are of interest. External graphics are today very popular for gaming and boosts the calculations of the graphics a lot. So even if you have a CPU with built in GPU an external graphics card off-loads “graphic calculations” from the regular CPU. This lower the load on the CPU significantly. In the case of Xeon CPU you must have an external graphics card to really make use of hardware acceleration.

So what instruction set is important for a CPU? Today it is DXVA2 and D3D, but all processors of today support that. One processor which is developed for server applications is the Intel Xeon processor that do not have a built in GPU. This processor is however very interesting for our applications and to take advantage of hardware accelerated video an external graphics card should be added to the system.

Are helping virtual threads in CPU as well? Yes, they are. These types of calculations loves to use many cores and threads. Parallell processing in many cores and thread works very well for video processing. Therefore, an external graphics card specially developed for this with many cores do a very good job. It´s important to know that a core and thread has not the the same capacity, but many cores and threads are good for us.

Is an internal Intel GPU helping? For example Intel® HD Graphics 4600 integrated in CPU? Yes, it certainly will especially from NCS version 1.9.0. The concept of using a GPU is that to move the very specific decoding calculations from the CPU to a GPU that is specialized on these calculations. NCS do a lot of different things and to off-load the CPU with the decoding to the GPU will in most cases lower the total CPU load a lot. I have experience from early dual core i5 processors in laptops to more powerful Xeon processors and off-loading to a GPU certainly helps a lot.

What about encoding? You do not mention that, but it is still and important factor. Encoding is when a video is recorded from motion detection or from continuous recording. This is also a process that use a lot of resources depending on camera resolution and frames per second and is therefore also off-loaded to a GPU. All GPU´s of today can handle encoding and in the Settings you can select CPU, AMD, Intel and Nvidia.

So what processor to pick? As I mention in the introduction it is all about the cameras and what resolution, frames per second, video quality etc. you want or need. Many cameras today comes with megapixel resolution and a high frame-rate. That is very demanding on the CPU and GPU. So it is important to think about what you really need.

In your case I would go with the i7 processor. It is a little bit old it has the built in GPU, but still very good. Also, have at least 8 GB of RAM.

A lot more can be written about this, but I stop here :slight_smile: This is a very interesting area that has opened up which I think is really exciting. Questions, comments and experiences please contribute.