The very fitting application is MapReduce, which is embarrassingly parallel.
Also, mapreduce is not embarrassingly parallel. Out of mapreduce, map is the only embarrassingly parallel phase. It has input parsing, shuffle, reduction phases that are not embarrassingly parallel.
We're certainly not the first to describe mapreduce as "embarrassingly parallel," but I can defend myself nonetheless:
A shuffle executes in parallel where each unit re-indexes into another unit. Reduction is parallelized over each key, and even finer granularity can be achieved by considering a tree-based approach:
http://developer.download.nvidia.com/compute/cuda/1.1-Beta/x...
In fact, I used this tree reduction approach to merge non-disjoint clusters of friend groups in my social network clustering algorithm.
Parallelizing the input parsing is problem-specific, but even that is possible in many cases.
Please, could you quote the CPU and GPU for which you got that 350x speedup? Also, for the 1000x speedup.
(also, it would be interesting to know the CPU/GPU that gave the original 1 hour to 0.2 sec (18,000x speedup) - I'm guessing other factors like network latency, low-end CPU + high-end CPU, optimized code etc were part of it.)