I'm currently implementing rotation-invariant phase correlation algorithm, which is a variant of phase correlation algorithm (https://en.wikipedia.org/wiki/Phase_correlation) to estimate relative shift and angle between images. Due to the application requirement, I'm seeking a way to compute RIPOC of image size 256*256 in 1 millisecond. Partly because it heavily uses Fourier transformation, it seems to be challenging for my current PC to compute RIPOC fast enough to satisfy such requirements. So I'm planning to build a new workstation for this purpose, but I'm not sure which hardware (CPU, RAM, maybe GPU) best suits this situation.

So the question is what should I care about PC configuration that achieves fast computation time. It's appreciated what should I consider in choosing CPU, RAM and so on. (I'm also wondering whether Intel Xeon processor for servers (e.g. Intel Xeon Gold) helps.)

GPU or co-processors (Intel Xeon Phi) are not so preferable to CPU in my situation due to application requirement, except for extraordinary speed-up by them.

Thanks in advance.

  • $\begingroup$ There is a very good free library for FFT called fftw fftw.org/faq that supports up to AVX. The latest Xeon generations have AVX2 that maybe not needed but if you decide to implement the DFT by yourself, it would be a plus. About RAM I suggest as much as possible and lock your whole program to RAM (thus hard drive is less important). OS I prefer Linux and you need to choose the kernel best suited and best stable for your application. $\endgroup$ – AlexTP Oct 12 '17 at 12:42
  • $\begingroup$ There are benchmarks on the web but they tend to be old. I think that the CPU market has so many options that maintaining comprehensive information is beyond reasonable. I would go for a CUDA based solution, trying to minimize I/O between GPU and host processor. I would also choose Xeon over i5,i7 processors. It’s easier to find Xeon boxes with 64 Gigs of RAM, and expansion slots. Using MKL over FFTW might be something to think about. I know that the CUDA fft routine has a parallel version. You should also be aware that the tradeoff between single and double precision is more on CUDA $\endgroup$ – user28715 Oct 12 '17 at 14:01
  • 1
    $\begingroup$ Thank you AlexTP and Stanley! Both your comments help a lot. I'm gonna try Intel Xeon with abundant RAM. If it seems not fast enough, I go with CUDA. $\endgroup$ – mhirano Oct 13 '17 at 4:09
  • $\begingroup$ your welcome. I don’t see how a DSP implementation question is off topic, given the “sorts of” along the top of the help page. A lot of us have had to determine if our hardware will support a real time application before we start. $\endgroup$ – user28715 Oct 13 '17 at 17:35