How to optimize your computer for VideoStitch
Tuesday, December 10, 2013
As you may know, VideoStitch uses the CUDA technology to make its stitching algorithms lightening fast. But did you know that you can make it even faster by choosing the right computer components? If you ever wondered how to build a computer optimized for VideoStitch, this article is for you!
The most current feedbacks we get on our forums are:
- What processor (CPU) should I use for VideoStitch?
- What Graphics Card (GPU) should I buy? Do I really need a Titan?
- How much RAM do I need?
This article will give you basic principles to build a balanced computer which will be price-efficient. In a next article, I will go in depth to provide you more detailed and technical information about the impact of every piece of hardware on VideoStitch performances
The keyword of this article will be “balance”. Indeed, you do not need to buy a $1000 high end graphics card (GPU), like a nVidia Titan in 2013, if you pair it with a low end processor (CPU), like a $100 Intel Core i3 or an AMD FX 4XXX in 2013. And so on!
How is VideoStitch architectured:
- Inputs, usually your video files or a live stream if you use our SDK. Inputs (there are several, usually 6 on a Go-Pro rig) are decoded on the CPU side.
- Stitching Engine: 100% GPU accelerated!
- Output: when you want to record your panoramic video, you encode them. Encoding is very resource demanding and happens on the CPU side.
VideoStitch optimizes the performances with the most powerful algorithms, which scale perfectly on many-core CPUs or multi-GPUs. Just think how hard it is sometimes to just watch a HD movie. VideoStitch decodes 6 at the same time, and still finds time to assemble your videos!
However, despite our engineering optimizations, if your CPU (or GPU) isn’t fast enough, your stitching will be slowed down.
While you’re reading this article, you may think that this is just some common sense, and you are right: putting a Ferrari engine in a Volkswagen Beetle might not be a really good idea, but this also applies to a computer! Note that sometimes, especially with MacBook laptops, you end up needing an expensive configuration to get a graphics card with enough power and memory.
To illustrate the impact of the CPU on VideoStitch performances, let’s take a look at these charts:
- We stitched 6 GoPro3 videos into an equirectangular panorama.
- Input resolutions were 1280×960 @ 100 frames per second and there was no output (therefore no output encoding).
- We use a medium-high ranged CPU (AMD FX8350) and GPU (GTX 670).
As you may see, the higher the processor frequency, the faster the stitch. However, increasing the frequency scales differently when you stitch a higher resolution. Why? Because whatever the stitching resolution is, we need to decode the same inputs. Saying differently: processing higher resolutions requires more GPU power. We can also deduce that the general limiting factor at low and medium resolutions is the CPU. This even clearer when we need to encode the output video on the CPU.
It means that you can get the maximum of your high range NVidia GTX Titan under two conditions:
- You also have a powerful CPU.
- You stitch at high resolutions (>4K).
To conclude this first post, here is what you have to remind when you configure a computer for VideoStitch:
- Build your computer depending on what you will stitch. If you want to stitch high resolutions (respectively low resolutions), your will need a powerful GPU (respectively CPU).
- Whatever your needs are, try to build a balanced computer. Do not pair a high-end CPU with a low-end GPU or an integrated chipset: the performances will be capped.
- You can have a decent stitching speed with an affordable computer. In 2013 you can get real-time stitching at 4096×2048 with a computer which will cost you less than $1000.
- And no, having a Titan is not mandatory unless you target very high resolution