IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

Performances Interprocess / MPI


Sujet :

Boost C++

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut Performances Interprocess / MPI
    Hello,

    Je dois scinder un programme en deux. Il utilise beaucoup de données, et je voudrais mettre les données en RAM dans un processus, et les utiliser dans un autre. Boost Interprocess semble être la solution.

    Toutefois, je me demande si ce n'est pas également l'occasion de déporter les données sur une autre machine. Ou d'anticiper ce besoin.

    Quelle est la différence en performance entre IPC et MPI, les deux processus étant sur la même machine ?

    Quelle est la différence en performance entre IPC et MPI, les deux processus étant sur des machines différentes ?

    J'aimerais avoir des ordres de grandeur. Merci.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par oodini Voir le message
    Hello,

    Je dois scinder un programme en deux. Il utilise beaucoup de données, et je voudrais mettre les données en RAM dans un processus, et les utiliser dans un autre. Boost Interprocess semble être la solution.

    Toutefois, je me demande si ce n'est pas également l'occasion de déporter les données sur une autre machine. Ou d'anticiper ce besoin.

    Quelle est la différence en performance entre IPC et MPI, les deux processus étant sur la même machine ?

    Quelle est la différence en performance entre IPC et MPI, les deux processus étant sur des machines différentes ?

    J'aimerais avoir des ordres de grandeur. Merci.
    Je dirais qu'il y a une facteur 12, voire 13-13,5. Par contre, je ne saurais pas te dire entre quoi et quoi

    Soyons sérieux quelques minutes.

    IPC est un terme générique qui veut dire Inter Process Communication. MPI est un mécanisme particulier d'IPC. Du coup, donner un ordre de grandeur (des performances ou de la différence de performance) me semble un peu complexe - tout comme je ne saurais dire si le plus rapide est une voiture ou une ferrari 430 modena.

    Il existe plusieurs systèmes d'IPC. MPI en est un, mais tu as aussi les sockets, la mémoire partagée, (sous Windows) les event/pipe/objet nommés, (sous Unix) les IPC System V (sémaphore, message queue...) etc.

    Je te conseille donc d'implémenter un système particulier (mémoire partagée + socket locale ou non par exemple) et de mettre ce système en concurrence avec un système similaire réalisé avec MPI. Tu pourra donc voir lequel est le plus performant, et faire ton choix en connaissance de cause.

    A noter que si tu as besoin de faire un système distribué, alors les sockets sont le mécanisme que tu devras utiliser. Les limites en performances seront alors celle des tuyaux, pas celles de la machine (en considérant que tu utilises des machines dimensionnées correctement). Les serveurs de facebook ne sont pas énormissimes - par contre, ils disposent d'une bande passante entre eux qui est tous simplement phénoménale..
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    IPC est un terme générique qui veut dire Inter Process Communication.
    Je voulais parler de boost::shared_memory.
    Désolé pour mon manque de précision.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par oodini Voir le message
    Je voulais parler de boost::shared_memory.
    Désolé pour mon manque de précision.
    Pardon, je me suis emporté

    Je n'ai aucune idée des performances de boost::shared_memory. Ceci dit, vu l'interface, c'est une interface très légère construite au dessus de l'interface POSIX shmem. Sous UNIX, il y a des chances que les performances soient importantes ; par contre, sous Windows, l'interface POSIX n'est pas disponible - à voir si Windows fournit les même services, accessible aussi simplement (notamment le truncate()). Ca manque aussi d'allocateurs spécialisés qui seraient un peu intelligent pour créer des conteneurs dans la zone de mémoire partagée (tiens, ça pourrait être intéressant...).
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 15h39
  2. Performance xml
    Par MicKCanE dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/07/2003, 06h41
  3. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18
  4. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37
  5. performance entre 3DS, ase, asc ...
    Par amaury pouly dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/03/2003, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo