L’étape suivante consiste à choisir un modèle de parallélisme adapté à votre langage et à votre domaine cible. Un modèle de parallélisme est un moyen d’organiser et de coordonner l’exécution parallèle de tâches ou de données. Il existe de nombreux modèles de parallélisme, tels que la mémoire partagée, la transmission de messages, le parallélisme des données, le parallélisme des tâches ou le parallélisme fonctionnel. Chaque modèle a ses propres avantages et inconvénients, et peut nécessiter des fonctionnalités ou des constructions de langage différentes pour le prendre en charge. Par exemple, la mémoire partagée nécessite des mécanismes de synchronisation, tels que des verrous ou des sémaphores, pour éviter les courses de données et les incohérences. La transmission de messages nécessite des primitives de communication, telles que des canaux ou des sockets, pour échanger des données entre les processus ou les threads. Le parallélisme des données nécessite des opérations qui peuvent être appliquées à des collections ou à des tableaux de données en parallèle, telles que mapper ou réduire. Le parallélisme des tâches nécessite des mécanismes permettant de créer et de gérer des tâches ou des sous-programmes indépendants, tels que des contrats à terme ou des promesses. Le parallélisme fonctionnel nécessite des fonctions pures et exemptes d’effets secondaires, tels que des expressions lambda ou des fermetures.