PhotogrammetryTechnology

Hardware requirements for 3D scan rendering – GPUs

photogrammetry-cloud-computing

When it comes to Graphic cards and 3D scanning render, the graphic card doesn’t relate to the process as for what we know. When it comes to 3D scanning render, a graphic card is used for its computing abilities. Abstractly looked, 3D graphics is something that needs to be computed before you see it on your monitor. In our area of work, while we render a 3D scanning, we use exactly this part – the computing part of a graphic card. Here is applied the general rule of  thumb – “the bigger the better”. Well, not exactly but to some extent.

Nvidia vs AMD.

Now we will look at the 2 main vendors – as most of you know these are Nvidia and AMD. Both companies makes graphic cards, which are both similar and in the same time – quite different. Lets know look in their computing capabilities and which is suitable.

First of all, when you pick a graphic card for 3D scanning render, we have look in their core computing engine. Nvidia uses CUDA and AMD uses OpenCL. In some situations they can be cross reverted using manufacturers developers kits but for example when Nvidia graphic card is put to compute on OpenCL it performs very poorly. Beside that, this article is not for running  OpenCL on CUDA and vise versa, so we will leave this subject here.

Software & Hardware.

When you consider purchasing hardware for 3D scanning render you must know or at least have already picked the required software. When you’ve done this, you must look at the program’s hardware requirements. There you’ll find what type of computing engine your best preferred software uses. In most of the cases this will be CUDA but you’ll find that some 3D scanning programs support OpenCL, too.

OpenCL is a technology that under specific circumstances, can be much better than CUDA. But unluckily, from our observations regarding 3D scanning render – it’s not. Let’s just say it has potential, it may work, but for reasons unknown or at least not obvious,  software developers prefer CUDA.

CUDA or OpenCL ?

Regarding CUDA it is very straightforward – the bigger, the better. Well – no. 3D scanning render software can use all available CUDA cores. But depending on the situation,  software depends on the bandwidth of the PCI-Express slot. Of course, nobody is talking about this. But as we have real world observations regarding 3D scanning render, we see that 2 slower cards can outperform 1 faster. Because the 2 slower cards has larger throughput combined against the one faster card.

The faster card, that has larger CUDA shaders count is the faster card definitely but – all the shaders go through one pci-e slot. And the bandwidth during 3D scanning render can be immense. We have seen performance drops of 50-60% while testing the impact of PCI-E bandwidth over 3D scanning render. One and the same card, which is put on x16 pci-e bandwidth against x1 pci-e bandwidth looses between 40 and 60% of its performance. So, it will be pointless get top-of-the-shelf graphic card and put it on x1 bandwidth. You will cut it’s performance possibly on half.

Our Solution.

The optimal solution, we have found so far is mid to high end graphic cards installed directly in the PCI-E. BIOS should be configured to give best average performance on every graphic card. And here comes the one of the possible bottlenecks : desktop processors have relatively small count of PCI-E lanes (even modern desktop processors has 16 pci-e lanes), which is the channel that every piece of hardware is communicating with the processor. For a single processor, you can install up to 2 graphic cards, which will operate at full PCI-E x8 bandwidth. For the third graphic card, you’ll have no pci-e lanes. The third graphic card will “take” bandwidth from the first 2 and you’ll have configuration of x8x4x4 at best. And this is where the server grade hardware comes in.

On a regular server board with dual Xeon E5 processors, each processor has 40 pci-e lanes. Which means, you can attach 5 graphics cards in PCI-e x8 configuration. And you have another processor which give you the same option. Most of the servers we use for our 3D scanning render service, don’t have 10 slots, but they have the capability to support 6-7 graphic cards, communicating with the processor at optimal PCI-E bandwidth, utilizing all the resources a graphic card can supply.

What we suggest you.

Regardless of what information you may find about graphic cards and 3D scanning render, we found that Nvidia card with a modern CUDA support is the optimal solution for 3D scanning render. And that’s why we use Nvidia graphic cards in our 3D scanning render service.