Juste un petit mot : il n’est pas dit que les architectures multi-cœurs restent importantes dans le calcul. Entre les deux les algorithmes ne doivent pas du tout être pensés de la même manière.
Les GPU n'utilisent absolument pas une autre forme de parallélisation. Ils imposent l'utilisation d'API ou d'extensions de langages spécifiques (Cuda/Stream/OpenCL), mais au final ça ne change pas grand chose (ce qui ne veut pas dire que certains codes ne devront pas être totalement récrits). Les concepts dont je parle (faire des algos « modulaires » et « parallel-friendly ») restent valable, qu'on parle de machines « many-core » façon GPU ou de vrais nœuds de calculs « many-cores » (avec 16 cœurs/32 threads ou plus sur un nœud). Alors oui les détails changent; oui, quand on utilise Cuda ou OpenCL, il faut déclarer explicitement les entrées et les sorties (par exemple); mais quelqu'un qui a eu à programmer avec MPI ou MPI+OpenMP a eu le même genre de problèmes auparavant. En fait si tu demandes aux chercheurs qui font du parallélisme ou de l'architecture et qui sont dans le coin depuis un moment, les GPU ne font finalement que remettre au goût du jour les architectures vectorielles des années 80-90.
De plus, on a un rapprochement GPU/CPU plus qu'évident depuis ces deux-trois dernières années entre AMD/ATI qui va produire un machin (Fusion) qui allie CPU et GPU, Intel et Knight's {Ferry|Corner|blah}, et Nvidia qui va produire des chips ARM pour accompagner ses GPU. Et je ne parle même pas des projets d'architectures et langages parallèles (genre les langages PGAS) financés par la DARPA...
on devrait apprendre l’ensemble des méthodes, et commencer par accorder plus de place à l’enseignement de la parallélisation tant d’un point de vue théorique que pratique
C'est vrai pour les informaticiens, beaucoup moins pour les physiciens/mathématiciens/biologistes/etc. Plus exactement, pour reprendre l'objectif de Rice avec CnC utilisé en première année de prog ou presque, il s'agit vraiment d'apprendre aux étudiants à correctement structurer leurs programmes, mais il n'est fait nulle part allusion au parallélisme à ce stade. Par contre les étudiants en info en fin de cycle de license/début de master (fin de cycle undergraduate) vont sans doute apprendre un peu plus d'algo/prog parallèle (là où d'habitude il s'agit de cours réservés aux grad students, donc master et plus).
[^] # Re: Par pitie
Posté par lasher . En réponse au journal Du livre "Premiers cours de programmation en Scheme". Évalué à 5.
Les GPU n'utilisent absolument pas une autre forme de parallélisation. Ils imposent l'utilisation d'API ou d'extensions de langages spécifiques (Cuda/Stream/OpenCL), mais au final ça ne change pas grand chose (ce qui ne veut pas dire que certains codes ne devront pas être totalement récrits). Les concepts dont je parle (faire des algos « modulaires » et « parallel-friendly ») restent valable, qu'on parle de machines « many-core » façon GPU ou de vrais nœuds de calculs « many-cores » (avec 16 cœurs/32 threads ou plus sur un nœud). Alors oui les détails changent; oui, quand on utilise Cuda ou OpenCL, il faut déclarer explicitement les entrées et les sorties (par exemple); mais quelqu'un qui a eu à programmer avec MPI ou MPI+OpenMP a eu le même genre de problèmes auparavant. En fait si tu demandes aux chercheurs qui font du parallélisme ou de l'architecture et qui sont dans le coin depuis un moment, les GPU ne font finalement que remettre au goût du jour les architectures vectorielles des années 80-90.
De plus, on a un rapprochement GPU/CPU plus qu'évident depuis ces deux-trois dernières années entre AMD/ATI qui va produire un machin (Fusion) qui allie CPU et GPU, Intel et Knight's {Ferry|Corner|blah}, et Nvidia qui va produire des chips ARM pour accompagner ses GPU. Et je ne parle même pas des projets d'architectures et langages parallèles (genre les langages PGAS) financés par la DARPA...
C'est vrai pour les informaticiens, beaucoup moins pour les physiciens/mathématiciens/biologistes/etc. Plus exactement, pour reprendre l'objectif de Rice avec CnC utilisé en première année de prog ou presque, il s'agit vraiment d'apprendre aux étudiants à correctement structurer leurs programmes, mais il n'est fait nulle part allusion au parallélisme à ce stade. Par contre les étudiants en info en fin de cycle de license/début de master (fin de cycle undergraduate) vont sans doute apprendre un peu plus d'algo/prog parallèle (là où d'habitude il s'agit de cours réservés aux grad students, donc master et plus).