Code Monkey home page Code Monkey logo

mthread's Introduction

Implémentation d'un parallel_for dans la bibliothèque "mthread"

Le but était d'implémenter le maximum de fonctionnalité du Open MP parallel_for dans la bibliothèque mthread.

Voici les fonctionnalités du parallel_for que j'ai réussi à implémenter dans la bibliothèque mthread.

  • Parallélisation d'une boucle for avec un mode de répartition statique des itérations.
  • Parallélisation d'une boucle for avec un mode de répartition dynamique des itérations.

Localisation & Fonctionnement

La définition de la structure de données contenant les variables dont l'on a besoin pour la parallélisation d'une boucle for se trouvent dans le fichier mthread.h:35.

struct mthread_parallel_s {
    	   volatile int nb_thread; // Nombre de threads en parallèle pour la boucle for
    	   int schedule; // Le mode de répartition des itérations : (1 => Statique) & (2 => Dynamique)
	       int chunk_size; 
   };

La fonction principale mthread_parallel_for se trouve dans le fichier du mthread_parallel_for.c.

Dans cette fonction, j'ai implémenté deux types de mode de répartition des itérations:

  • Statique : Remplissage d'un tableau qui permettra à chaque thread de connaitre exactement les itérations qu'il va exécuter. Le chunk-size est par défaut égal à 1.
  • Dynamique : On définit le nombre d'itérations au total, puis chaque thread, un après l'autre prendra un nombre d'itérations égalent à la valeur du chunk_size jusqu'à ce qu'il ne reste plus d'itérations.

Tests

Pour tester ces fonctionnalités du parallel for dans la bibliothèque mthread, deux fichiers tests ont été créé pour chaque type de scheduling.

Ces deux fichiers se trouvent dans le répertoire: test/parallel_for:

  • parallel_for_test_static_sched.c
  • parallel_for_test_dynamic_sched.c

Vous pouvez lancer ces tests en lancant les commandes suivantes:

~/mthread/$ cd test
~/mthread/test$ make parallel_for/parallel_for_test_static_sched
~/mthread/test$ make parallel_for/parallel_for_test_dynamic_sched

mthread's People

Contributors

sneibam avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.