Au cours des dernières années, plusieurs bibliothèques / projets logiciels sont apparus qui offrent une forme ou une autre de parallélisme à mémoire partagée basé sur des données à usage général.
L'idée principale est qu'au lieu d'écrire un code explicitement threadé, les programmeurs implémentent leurs algorithmes en tant que tâches interdépendantes qui sont ensuite planifiées dynamiquement par un middleware à usage général sur une machine à mémoire partagée.
Des exemples de telles bibliothèques sont:
QUARK : Conçu à l'origine pour la bibliothèque d'algèbre linéaire parallèle MAGMA , semble également avoir été utilisé pour une méthode multipolaire rapide parallèle .
Cilk : à l'origine un projet basé sur le MIT, désormais pris en charge par Intel, implémenté en tant qu'extensions de langage / compilateur pour C, utilisé dans le logiciel d'échecs informatique Cilkchess et expérimentalement dans FFTW .
SMP superscalar : développé au Barcelona Supercomputing Center, similaire à Cilk à bien des égards, basé sur des
#pragma
extensions.StarPU : bibliothèque similaire de "codelets" qui peut être compilée et planifiée sur plusieurs architectures différentes, y compris les GPU.
Tâches OpenMP: à partir de la version 3.0, OpenMP a introduit des "tâches" qui peuvent être planifiées de manière asynchrone (voir la section 2.7 de la spécification).
Intel's Threading Building Blocks : utilise des classes C ++ pour créer et lancer des tâches asynchrones, voir la section 11 du didacticiel.
OpenCL : prend en charge le parallélisme basé sur les tâches sur plusieurs cœurs.
Bien qu'il y ait beaucoup de littérature décrivant le fonctionnement interne de ces bibliothèques / extensions de langage et leur application à des problèmes spécifiques, je n'ai rencontré que très peu d'exemples de leur utilisation dans la pratique dans les applications de calcul scientifique.
Alors, voici la question: quelqu'un connaît-il des codes de calcul scientifique utilisant l'une de ces bibliothèques / extensions de langage, ou similaire, pour le parallélisme à mémoire partagée?