4 Réponses :


2
votes

Si le passage du message vous retient, essayez des objets distribués. Il y a beaucoup de cadres d'objet distribués disponibles. Corba, DCOM, ICE Pour nommer quelques-uns ... Si vous choisissez de distribuer vos objets, vos objets auront une visibilité globale via les interfaces (données et méthodes) que vous définissez. Tout objet dans n'importe quel nœud peut accéder à ces objets distribués.

Je cherche un logiciel qui permet de distribuer la mémoire, mais je n'ai pas rencontré aucun. Je suppose que c'est parce que vous avez tous ces cadres d'objet distribués disponibles, et les gens n'ont pas besoin de distribuer la mémoire en tant que telle.


1 commentaires

Super! J'ai beaucoup entendu parler de ces technologies utilisées par un vieil ami de mien..Je demandera et commencera à regarder!



5
votes

Actuellement, il n'y a pas de bibliothèque ou d'utilitaire C ++ qui vous permettra de parallementer automatiquement votre code sur un groupe de machines. Certes qu'il existe de nombreuses façons d'atteindre l'informatique distribuée avec d'autres approches, vous souhaitez vraiment optimiser votre application pour utiliser la mémoire commune du message ou distribué partagée.

Vos meilleurs paris seraient à:

  1. Convertissez votre implémentation en une solution basée sur des tâches. Il y a beaucoup de façons de le faire, mais cela sera certainement fait à la main.
  2. identifiez clairement où vous pouvez rompre les tâches et comment ces tâches communiquent essentiellement entre elles.
  3. Utilisez une bibliothèque de niveau supérieur qui s'appuie sur OpenMPI / MPICH - BOOST.MPI vous vient à l'esprit.

    La mise en œuvre d'une solution distribuée parallèle est une chose, ce qui le fait fonctionner efficacement est un autre cependant. Lisez sur différentes topologies et différents modèles d'informatique parallèles pour rendre les solutions de mise en œuvre un peu moins douloureuses que si vous deviez commencer à partir de zéro.


1 commentaires

SALUT! Merci beaucoup pour votre réponse.



2
votes

J'ai eu une bonne expérience en utilisant Top-C dans l'école d'études supérieures.

de la page d'accueil: "TOP-C se distingue particulièrement comme un package pour parallementer facilement des applications séquentielles existantes."

http://www.ccs.neu.edu/home/gene /topc.html

Edit: Je devrais ajouter, il est beaucoup plus simple de paralleraliser un programme s'il utilise "le parallélisme trivial". par exemple. Les nœuds ne doivent pas doivent partager la mémoire. Mapreduce est construit sur ce concept. Si vous pouvez minimiser le montant de l'état partagé, vos nœuds utilisent, vous verrez des ordres de grandeur une meilleure amélioration du traitement parallèle.


1 commentaires

SALUT! Merci beaucoup pour votre réponse..Je ne savait pas ce projet! J'aurai un lois!



4
votes

Eh bien, vous n'avez pas réellement indiqué exactement ce que le matériel que vous ciblez est, s'il s'agit d'une machine à mémoire de mémoire partagée, OpenMP est une option. La plupart des programmeurs parallèles considéreraient la parallélisation avec OpenMP comme option plus facile que l'utilisation de MPI dans l'une de ses incarnations. Je suggérerais également qu'il est plus facile de moderniser OpenMP à un code existant que MPI. Le meilleur, dans le sens des programmes MPI les mieux performants, sont ceux conçus à partir de la terre pour être la parallécédiction avec le passage de message.

De plus, le meilleur algorithme séquentiel peut ne pas toujours être l'algorithme le plus efficace, une fois qu'il a été parallélé. Parfois, un algorithme simple, mais séquentiellement sous-optimal est un meilleur choix.

Vous pouvez avoir accès à un ordinateur de mémoire partagée:

  • Tous les CPU multicœurs sont des ordinateurs de mémoire partagés efficacement;
  • sur beaucoup de grappes les nœuds sont souvent de deux ou quatre processeurs forts, s'ils disposent de 4 noyaux, vous pourriez avoir une machine à mémoire partagée partagée de 16 nœuds sur votre cluster;
  • Si vous avez accès à un supercalculateur MPP, vous constaterez probablement que chacun de ses nœuds est un ordinateur de mémoire partagé.

    Si vous êtes coincé avec un message qui passe, je vous conseillerais vivement de vous tenir debout avec C ++ et OpenMpi (ou tout ce que MPI est déjà installé sur votre système), et vous devez absolument regarder BoostTMPI également. Je le conseille fortement parce que, une fois que vous sortez de l'informatique scientifique haute performance, vous pouvez vous retrouver dans une armée d'une programmation avec une collection idiosyncratique de bibliothèques et d'autres outils de recherche et d'autres outils. C ++, OpenMPI et Boost sont suffisamment utilisés que vous pouvez les considérer comme étant de «grade d'armes» ou quelle que soit votre analogie préférée. Il y a peu de trafic suffisant, par exemple, sur MPI et OpenMP, consultez les statistiques sur les autres technologies avant de parier la ferme sur eux.

    Si vous n'avez aucune expérience avec MPI, vous voudrez peut-être regarder un livre appelé Computing scientifique parallèle en C ++ et MPI par KarniaDakis et Kirby. utiliser MPI par GroppP et al est ok comme référence, mais ce n'est pas un texte de débutant sur la programmation pour le passage de message.


0 commentaires