i have a lot expirience in GPU programming, mostly for some heave mathematical processing over large amount of data, but algorithm is not important. any algorithm that is working on CPU should be able to work on GPU, as long as it can be parallelized. for these purposes i am using NVIDIA CUDA, and of course, it will work only on NVIDIA GPUs. there are other GPGPU frameworks which can be used, but i am expirienced on usage of NVIDIA CUDA.