A multi-core CPU is very good at MIMD work (Multiple Instructions Multiple Data). A CPUGPU excels at SIMD work (Single Instruction Multiple Data). That means that if all your threads are running the same function, only on different data, then using a GPU is probably a good choice. A classic SIMD example is image processing, when all threads run the same algorithm on different parts of the image.