2010-09-25 8 views
0

il est possible de diagonaliser avec Matlab sur le groupe de mon universitétout corps a-t-il diagonalisé complètement une matrice symétrique de 200 000 * 200 000?

mais je veux le faire avec Fortran et en utilisant un algorithme parallèle

Je sais « scalapack » peut le faire (mais je ne savoir comment l'utiliser encore)

quelqu'un a des suggestions?

+0

La suggestion évidente est: faites-le avec SCALAPACK. Ce qui me fait me demander quelle est ta vraie question. Je ne peux pas dire que j'ai déjà diagonalisé une matrice de ces dimensions, je serais surpris d'apprendre que cela n'a jamais été fait. –

+1

La matrice est-elle dense? De quel problème s'agit-il? Qu'essayez-vous de faire avec? (Pourquoi avez-vous besoin de tous les vecteurs propres?) Vous pouvez presque certainement faire ce que vous voulez sans calculer la décomposition complète. – Jed

+0

nous avons sûrement besoin de diagonaliser complètement! puisque nous avons besoin de la diagonaliser complètement, cela ne fait aucune différence que la matrice soit clairsemée ou dense. il est rare en fait. –

Répondre

0

Si vous avez Parallel Computing Toolbox et MATLAB Distributed Computing Server, vous pouvez appeler l'opérateur backslash de MATLAB sur vraiment grand distributed arrays.

Je n'ai jamais essayé avec un tableau aussi grand, mais cela pourrait être possible. Notez que les tableaux distribués utilisent ScaLAPACK pour effectuer des opérations telles que la barre oblique inverse.

EDIT: Vous aurez besoin d'environ 320 Go de mémoire sur les machines de la grappe juste pour stocker une copie de la matrice. Vous aurez probablement besoin d'au moins 4 fois cette quantité de mémoire pour fonctionner sur la baie. Peut-être plus, selon les opérations que vous souhaitez effectuer.

Questions connexes