Ok tu parles de faire cohabiter les modèles dans un même code, pas faire cohabiter des codes MPI d'un coté et GPUs de l'autre.
Au début des coprocs, oui les codes utilisaient uniquement les GPUs et pas ou peu les CPUs. Ce n'est plus vrai depuis 2-3 ans, les gens ont bien compris que combiner les avantages des deux était très intéressant. Y a plein de solutions qui marchent, faut surtout que les gens se mettent d'accord sur comment exposer ça aux utilisateurs, en général par un graphe de tâches.
Pour MPI, la cohabitation avec GPU est venue très vite car les gens ont pris leur code CPU+MPI et ont remplacé CPU par GPU mais ils ont été obligés de garder MPI. Ca marchait mais ce n'était pas très optimal, notamment parce que le driver NVIDIA était tout pourri et imposait plein de copies mémoire inutiles pour aller du GPU au réseau. Ca a été corrigé depuis (et présenté comme une révolution alors que c'était surtout un bugfix) et maintenant GPU+MPI marche et est à peu près bien implémentable.
Donc maintenant y a combinaison des trois. En gros on prend le graphe de tâches utilisé pour combiner CPU et GPU, et on le répartit sur plusieurs machines, souvent à travers MPI. C'est encore beaucoup des travaux de recherche, mais ca avance bien.
[^] # Re: Coprocesseurs
Posté par Brice Goglin . En réponse à la dépêche Le Top 500 de novembre 2012. Évalué à 3.
Ok tu parles de faire cohabiter les modèles dans un même code, pas faire cohabiter des codes MPI d'un coté et GPUs de l'autre.
Au début des coprocs, oui les codes utilisaient uniquement les GPUs et pas ou peu les CPUs. Ce n'est plus vrai depuis 2-3 ans, les gens ont bien compris que combiner les avantages des deux était très intéressant. Y a plein de solutions qui marchent, faut surtout que les gens se mettent d'accord sur comment exposer ça aux utilisateurs, en général par un graphe de tâches.
Pour MPI, la cohabitation avec GPU est venue très vite car les gens ont pris leur code CPU+MPI et ont remplacé CPU par GPU mais ils ont été obligés de garder MPI. Ca marchait mais ce n'était pas très optimal, notamment parce que le driver NVIDIA était tout pourri et imposait plein de copies mémoire inutiles pour aller du GPU au réseau. Ca a été corrigé depuis (et présenté comme une révolution alors que c'était surtout un bugfix) et maintenant GPU+MPI marche et est à peu près bien implémentable.
Donc maintenant y a combinaison des trois. En gros on prend le graphe de tâches utilisé pour combiner CPU et GPU, et on le répartit sur plusieurs machines, souvent à travers MPI. C'est encore beaucoup des travaux de recherche, mais ca avance bien.