Est-il possible d'utiliser la mémoire vive d'autres ordinateurs pour faciliter le calcul parallèle de Mathematica Light Grid Server 7 ? Si oui, comment ?
Réponse
Trop de publicités?Mathematica met en œuvre le calcul parallèle en utilisant plusieurs noyaux (plusieurs processus) qui peuvent même s'exécuter sur des machines différentes. Il existe un noyau principal avec lequel vous interagissez directement et plusieurs sous-noyaux (contrôlés par le noyau principal) qui effectuent le travail.
Donc, en résumé : vous ne pouvez pas avoir direct L'accès à la mémoire des autres machines n'est pas possible, mais vous pouvez l'exploiter pleinement en exécutant un sous-noyau sur chaque machine.
Vous n'avez pas mentionné le problème spécifique que vous essayez de résoudre, mais si vous avez besoin de traiter en parallèle un grand ensemble de données qui ne tient pas dans la mémoire d'une seule machine, vous pouvez le faire :
-
Tout d'abord, divisez les données en morceaux faciles à gérer.
-
Chaque sous-noyau doit charger un morceau et le traiter, afin d'obtenir un résultat qui n'occupe pas beaucoup de mémoire.
Il existe plusieurs façons de contrôler les sous-noyaux, de manière totalement manuelle à totalement automatique.
ParallelEvaluate[]
vous permettra de contrôler finement chaque noyau. Vous pouvez également utiliser la fonction$KernelID$
pour décider quelle partie de l'ensemble de données doit être chargée dans chaque noyau. Veuillez vous référer à la variable la documentation pour plus de détails. -
Enfin, les résultats seront soit rassemblés dans le noyau principal (si le résultat n'occupe pas beaucoup de mémoire), soit écrits sur le disque à partir de chaque sous-noyau (si le résultat est aussi important que les données d'entrée).
Un point important : pour empêcher explicitement certaines variables d'être automatiquement partagées entre les noyaux (et d'occuper une mémoire précieuse), vous devez les placer dans un contexte distinct, tel que décrit ici et les liens qui s'y trouvent .