Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2017:01_18

Commit 2017-01-18

Initialisation blas + eas

oo_meta

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);
  • mtMath::Matrix : suppression d'une operation blas oubliée dans l'operateur *

mtElement

  • EasCauchyMechVolIntegMeth : remplacement de
    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

Adding: 
Deleting:

Tests ajoutés/supprimés

Adding: 
Deleting: 

Luc Papeleux 2017/01/18

commit/2017/01_18.txt · Last modified: 2018/05/04 16:40 by boman