During a workshop on GPGPU programming we got some overview of NVIDIA’s new Kepler GPU and Intel Xeon Phi Coprocessor technologies. I started wondering how we develop for different technologies (multicores, multi CPU’s vs GPU’s) and found an interesting blog post that cover in quite detail differences between the most common architectures and different techniques required to squeeze the most out of each one. From what I can gather, the OpenACC seems to currently be the best bet if you want to write programs for many current and future architecture. If you know your program will only run on certain hardware or you need to squeeze as much performance out as possible then other tools can offer better optimization, but they require deep knowledge of the tool and its possibilities (which is essential in such cases). But for us mere mortals who want to start experimenting with GPGPU programming I guess the OpenACC is a nice first step.
The article can be found here.
And now I just need to find a nice problem to start testing this out 🙂