10-Jui-2005  
 

Rien

Modifs

 

Modifs

Nouveau solveur : DSS

J'ai interfacé le nouveau solveur des MKL d'Intel (solveur Pardiso) et des CXML de Compaq. Il s'agit d'un solveur direct sparse au même titre que le skyline. L'intérêt de ce solveur est double: il utilise le format de stockage CSR (donc un gain de mémoire important) et il est parallèle si on le désire (via OpenMP). Sur des petits tests du genre cont2, le résultat n'est pas fameux: on double le temps CPU et la mémoire utilisée est légèrement supérieure au skyline. Par contre, sur des plus gros cas, ça devient cool : ci-dessous "snecmaRup", lancé sur mon PC (le moteur de Ludo - 4 premiers pas de temps). Il tourne en 7:30 min au lieu de 40 min et consomme 2x moins de mémoire (soit une économie de 270Mo!).

Pour l'utilisation du nouveau solveur, c'est toujours un peu pourri (je vais regler ça bientôt). Il faut déclarer un solveur de type "3" dans le SolverManager de Metafor:

solMan = metafor.getSolverManager()
solMan.setSolverMethod(3)

Pour utiliser les capacités parallèles, il faut exporter la variable suivante:

export OMP_NUM_THREADS=2

C'est valable sur PC et sur les stations (chinook). Par défaut, MTK détecte le nombre de CPU et fixe le nombre au max. Les possesseurs de dual cpu pourront ainsi voir Metafor fonctionner à plus de 50%.

Au niveau du code, je me suis arrangé pour que ça compile dans tous les cas (avec et sans solveur). Pour activer la compilation du solveur MKL, il faut définir _WITH_MKL_ et pour les CXML, c'est _WITH_CXML_ (ceci est fait à l'aide d'autoconf via --with-cxml). Le solveur n'est pas encore disponible sous Linux64 (gaston).

Pour avoir une idées des perfs sur la batterie (tests sur mon PC) : comp-skyline-dss-garfield.xls

Certains tests ne passent pas avec le solveur. Il s'agit de tests présentant des matrices singulières. Dans ce cas, le solveur renvoie une solution bidon différente du skyline ; ce qui entraine parfois le plantage du test.

Comment mettre à jour son projet .NET ?

Fichiers ajoutés/supprimés

A mtMath/DSSMatrix.cpp
A mtMath/DSSMatrix.h
A mtKernel/DSSMatrixStr.cpp
A mtKernel/DSSMatrixStr.h

 

 

Back to Metafor web server
created :06-Jui-2005   modified : 10-Jui-2005
contact : r_boman_AT_yahoo.fr