Skip to content

JoeDralliam/kahn-network

Repository files navigation

Implémentations
===============

Cinq implémentations des réseaux de Kahn sont fournies :
* _sequentiel_ qui simule la concurrence par des continuations.
* _pipes_ qui utilise des processus lourd (fork) et des pipes.
* _pipes-thread_ qui utilise des processus léger (thread) et des pipes.
* _network_ qui utilise des processus lourd (fork) et des sockets.
* _network-thread_ qui utilise des processus léger (thread) et des sockets.

L'implémentation de référence (Kahn.Th) est désigné par _thread_ .

Applications
============

mapReduce : une implémentation du map-reduce se basant sur l'interface
de functory (foncteur _MapReduce.Base_), ainsi qu'un compteur de mots
l'utilisant. Chaque travailleur est un Kahn.process.

pictureInPicture : une implémentation "à la chaine" du picture-in-picture.

Arguments communs:
    * -network _impl_ : utilise l'implémentation _impl_ des réseaux de Kahn
    * -silent : n'affiche rien

Arguments spécifiques à mapReduce :
    * -workers _n_ : spécifie les nombres de travailleurs (au sens de functory) à utiliser.
    * -file _filename_ : fichier où aller chercher les mots
    * -easy : utilise une opération de map simple
    * -hard : utilise une opération de map complexe
    
Arguments spécifiques à pictureInPicture :
    * -big _img_ : spécifie la grande image. Egalement utilisé pour pip_n
    * -small _img_ : spécifie la petite image.
    * -recursivity _n_ : spécifie le nombre de niveau de récursivité dans pip_n.


Comparaison sur mapReduce.native
================================

A titre indicatif, sur une machine à quatre coeurs, les temps réels d'exécutions :


* Avec -easy :
----------------------------------------------------------------------------------
|        workers |   1   |   3   |   5   |  10   |  20   |  50   |  100  |  200  |
----------------------------------------------------------------------------------
| implementation |       |       |       |       |       |       |       |       |
----------------------------------------------------------------------------------
| sequentiel     | 1.10s | 1.21s | 1.50s | 2.13s | 3.40s | 7.14s | 13.7s | 26.5s |
----------------------------------------------------------------------------------
| pipes          | 3.47s | 1.99s | 1.67s | 1.80s | 1.95s | 2.11s | 2.16s | 2.18s |
----------------------------------------------------------------------------------
| pipes-thread   | 3.44s | 3.45s | 3.59s | 3.67s | 3.67s | 3.55s | 3.68s | 3.69s |
----------------------------------------------------------------------------------
| thread         | 3.41s | 9.53s | 17.7s |  (1)  |  (1)  |  (1)  |  (1)  |  (1)  |
----------------------------------------------------------------------------------
| network        | 6.47s | 3.49s | 3.20s | 3.18s | 3.43s | 3.65s | 4.10s |  (2)  |
----------------------------------------------------------------------------------
| network-thread | 6.42s | 4.82s | 4.49s | 4.32s | 4.49s | 4.42s | 4.48s |  (2)  |
----------------------------------------------------------------------------------
* Avec -hard :
----------------------------------------------------------------------------------
|        workers |   1   |   3   |   5   |  10   |  20   |  50   |  100  |  200  |
----------------------------------------------------------------------------------
| implementation |       |       |       |       |       |       |       |       |
----------------------------------------------------------------------------------
| sequentiel     | 5.80s | 5.95s | 6.24s | 6.87s | 8.22s | 11.9s | 18.7s |  (1)  |
----------------------------------------------------------------------------------
| pipes          | 7.16s | 4.94s | 4.34s | 4.22s | 4.24s | 4.66s | 5.72s | 7.05s |
----------------------------------------------------------------------------------
| pipes-thread   | 8.54s | 8.79s | 8.92s | 8.97s | 8.99s | 9.13s | 9.44s | 9.77s |
----------------------------------------------------------------------------------
| thread         | 9.56s | 15.1s | 22.2s |  (1)  |  (1)  |  (1)  |  (1)  |  (1)  |
----------------------------------------------------------------------------------
| network        | 10.0s | 6.88s | 5.87s | 5.31s | 5.45s | 6.25s | 7.61s |  (2)  |
----------------------------------------------------------------------------------
| network-thread | 11.3s | 10.5s | 10.3s | 10.3s | 10.4s | 10.5s | 10.9s |  (2)  |
----------------------------------------------------------------------------------




(1) : L'exécution a dépassé le temps limite de 30 secondes.
(2) : Le processus a essayé d'ouvrir trop de sockets.

About

Kahn networks implementation in ocaml

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published