Commit 2017-01-18
Initialisation blas + eas
mtMath
mtBlas : modification de l'initialisation des Blas de Metafor (toutes les fonctions blas ayant été retirées des operateurs mathématiques utilisés dans les boucles parallélisées par TBB).
les blas/lapack n'ont pas été enlevées des calculs de
pseudoInverse (utilisé principalement en prépro mais aussi en
ALE ⇒ à modifier)
SymMatrix : résolution de système via décomposition ldlt (pas utilisé à mon observation)
SymMatrix : résolution de système via décomposition Cholevsky (pas utilisé à mon observation)
calcul fréquentiel (Lanczos) vu que c'est utilisé soit en pré, soit en post-pro sur des systèmes globaux (donc hors zone TBB)
L'initialisation des blas est générique, mais sauf validation spécifique (apps/parallel), il n'y a pas de raison d'y recourir (passer par le paramètre -k de metafor.exe ou de battery.py ou à travers launch.py pour imposer le nombre de threads). Prière de ne pas fixer un nombre de threads dans les jeux de données …
en c++ : void Blas::setNumThreads(int n)
en python : wrap.Blas.setNumThreads(n)
L'utilisation des blas intel (mkl) permet toujours une configuration de divers aspects des MKL (les fonctions ont été renommées de manière à éviter toute confusion)
static int getMklNumThreadsBlas();
static void setMklNumThreadsBlas(int n);
static int getMklNumThreadsPardiso();
static void setMklNumThreadsPardiso(int n);
static int getMklNumThreadsFFT();
static void setMklNumThreadsFFT(int n);
static int getMklNumThreadsVML();
static void setMklNumThreadsVML(int n);
mtElement
mtMath::Matrix &k22Inv = getInverse(k22);
k11 -= k12 * k22Inv * k21;
par une version ne demandant pas le calcul explicite de k22Inv :
mtMath::Matrix k22Invk21(nbModes,numberOfDof);
k22.directSolve(k21, k22Invk21);
k11 -= k12 * k22Invk21;
même si la différence de temps de calcul est difficilement mesurable
Fichiers ajoutés/supprimés
Tests ajoutés/supprimés