Je dois écrire une application scientifique en C ++ faire beaucoup de calculs et utiliser beaucoup de mémoire. J'ai une partie du travail mais en raison des exigences élevées en termes de ressources, je pensais commencer à passer à OpenMPI a>. p>
Avant de le faire, j'ai une simple curiosité: si j'ai bien compris le principe de OpenMpi correctement, c'est le développeur qui a la possibilité de scinder les travaux sur différents nœuds appelant Envoyer et recevoir en fonction de la noeud disponible à ce moment-là. P >
Savez-vous si cela existe une bibliothèque ou un système d'exploitation ou quoi que ce soit cette fonctionnalité laissant mon code raamain tel qu'il est maintenant? Fondamentalement quelque chose qui relie tous les ordinateurs et laissez partager comme une mémoire et la CPU? P>
Je suis un peu confus à cause de l'énorme volume de matériel disponible sur le sujet.
Dois-je regarder le cloud computing? ou distribué la mémoire partagée? p>
4 Réponses :
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. P>
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. P>
Super! J'ai beaucoup entendu parler de ces technologies utilisées par un vieil ami de mien..Je demandera et commencera à regarder!
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. P>
Vos meilleurs paris seraient à: P>
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. P>
SALUT! Merci beaucoup pour votre réponse.
J'ai eu une bonne expérience en utilisant Top-C dans l'école d'études supérieures. P>
de la page d'accueil: "TOP-C se distingue particulièrement comme un package pour parallementer facilement des applications séquentielles existantes." P>
http://www.ccs.neu.edu/home/gene /topc.html p>
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 em> 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. P>
SALUT! Merci beaucoup pour votre réponse..Je ne savait pas ce projet! J'aurai un lois!
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. p>
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. P>
Vous pouvez avoir accès à un ordinateur de mémoire partagée: p>
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. P>
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 em> par KarniaDakis et Kirby. utiliser MPI em> par GroppP et al em> est ok comme référence, mais ce n'est pas un texte de débutant sur la programmation pour le passage de message. P>