If you understood this and still think it's easy, then congratulations you'll be able to pick and choose your jobs :)
(Obviously something like scrypt would be difficult to port to a GPU since by definition it's un-parallelizable, but other algorithms should be doable.)
If you have a simple, straight through algorithm running on a few million datapoints. GPU's are great. If it deviates even a little from there, gpu's start to fumble. Writing those two algorithms is an afternoons exercise in Mathematica or matlab, but several weeks adventure on a GPU.
And remember computers are cheaper than humans (Currently, $0.12/hr at amazon and $10/hr minimum wage).
The easiest way for me to solve this mystery is to try to port an example someone considers difficult. Do you know of any?
I'm serious. It's just so difficult for the majority of us. As relix said, if you find that easy, you'll make a lot of money working as a GPU programmer.
That being said, there are many real world problems where there are so many data dependences that transforming the input into independent vectors is plain impossible. For those cases, letting the CPU optimize the datapath is better than programming a GPU version yourself.
Sorry, I don't mean to detract from your excellent points. I was just wondering if there was some miscommunication. The idea of me (a self-taught 24 year old) being more competent than a postdoc feels absurd, so it probably isn't true. Yet GPU programming is very easy for me.
Just an interesting mystery. I would like to help people out if I can.