
La résolution de nombreux problèmes actuels impose l'utilisation de plusieurs algorithmes numériques classiques (méthodes hybrides par exemple). Le codage des divers algorithmes pour une machine cible génère des goulots d'étranglement résultant de l'inadéquation entre certaines parties de l'algorithme et les modèles de programmation choisis. La complexité et le type de méthodes numériques utilisées liées à une application requiert l'utilisation de plusieurs modèles de programmation et/ou d'exécution. La programmation parallèle s'oriente donc aussi vers une solution multi-machines. Le but n'est plus uniquement d'utiliser plusieurs machines en parallèle pour avoir une accélération mais d'utiliser au mieux un réseau de machines parallèles hétérogènes pour y développer des méthodes hybrides. Cela peut être des méthodes hybrides basées sur plusieurs versions d'une même méthode itérative lancées sur des machines différentes. Le data parallélisme, avec le calcul scalaire et vectoriel (parallélisme de flux), est choisi comme modèle de programmation parallèle de base. Plusieurs tâches data parallèles pouvant être distribuées sur plusieurs machines parallèles.