Si c'est le cas, ça peut s'expliquer.
Les GPU étant basés sur l'architecture SIMD, ils sont très performants quand les tâches sont cohérentes, dans le sens où les tests ont globalement le même résultat, catastrophiques sinon. Notamment.
Ensuite, il faut de la quantité, parallelisable, pour bénéficier de leur puissance. Sinon et encore, leurs performances sont catastrophiques.
Un exemple extrême :
On veut paralléliser et exécuter sur GPU un réseau neuronal d'une couche. Pour cela, on subdivise la couche en tronçons, autant qu'il y a de threads.
Si la couche est très peuplée, on va avoir un gain énorme en performance.
Sinon, cette solution sera moins performante si le nombre d'unités est faible.
Concrètement si on simulait une couche d'un seul neurone par exemple, utiliser le CPU serait plus efficace que d'utiliser l'accélération matérielle (GPU ou GPGPU).

Pour finir :
-Favoriser la cohérence des tâches.(éviter les embranchements autant que possible)
-Paralleliser au maximum les tâches. Et favoriser les petites tâches.
-Limiter au maximum les transferts mémoire.( Entre mémoire graphique et mémoire CPU)