Skip to content

[ODK] Meeting 2019 01 30

A. Breust edited this page Feb 5, 2019 · 2 revisions

ODK Linbox meeting 2019-01-30 CR

Alexis

Questions

  • Generateur Heuristic, plus rapide mais pb régulier. Dû à quoi ?
    • sans doute pb du premier nombre premier du maskediterator
    • afficher le permier nombre premier de chaque process et vérifier s'ils sont premiers

calcul du nb d'iter de chaque worker MPI: au lieu de maintenir un nb d'iter, maintenir une borne Hadamard locale = Hadamard global/nb worker. Puis dans la boucle for (jusqu'à nbiter calculé comme avant) ajouter un if (prodprime>hadamard local) then break.

Pour OpenMP: au lieu de faire un parallel for sur toute la boucle i=0...nbiter, faire une macro boucle i=0...NT puis pour chaque tache: j=0..localHadamard (=global Hadamard/NT) (NT est passé dans le specifier, avec defaut à NUM_THREAD)

Solve CRA with MPI

  • Reprise totale de la branche de Zhu
  • Timers pour benchmarks solve CRA
  • Comprendre differences borne Hadamard Zhu/moi > log2 face à log...
  • Erreur (horreur) à l'exécution, la vieille branche de Zhu ne fonctionnait pas : MaskedPrimeIterator<IteratorCategories::HeuristicTag> fait que ça plante parfois
  • Simplification du nombre d'iterations par node (chacun se le calcule)
  • Suppression de prime_used
  • Arret de redimensionner le vector
  • make check -> Fix tests compilation

Solve refacto

  • Suppression de MdrVector
  • 26-... -> bestBitSize
  • Remplacer constructor copie par des casts autant que possible (tout mettre au haut level)

Autre

  • Regénération des timings depuis données de Zhu (cf Timings)

TODOS de la semaine derniere:

  • TODO: solvein -> solveInPlace -> donc aussi detin -> detInPlace rankin -> rankInPLace etc verifier toutes les solutions
  • verif des dimensions en assert ou if debug (cf contract.h, linbox_check)
  • TODO: unifier l'ordre des args du rebind de vecteur (unifier avec matrix: rebind(mat, field))
  • Field->Ring quand on est sur des integer

Zhu

  • bug primegen heuristic/det
  • paladin: coportement OMP/paladin bizarre: de fois sequentiel -> tester sur HPAC
  • TODO: remplacer PARFORBLOCK1D par un FOR1D (basé sur des taches) encadré par des SYNC_GROUP et un PAR_BLOCK global utiliser FOR1D et récupérer la valuer de l'indice k (le num du thread courant) par _internal_iterator.blockindex() remplace le param H (ParallelHelper) par SPLITTER()
  • pb de timing de 4000(20): plus lent en fullMPI qu'en octobre -> pourquoi? detailler log, et nb d'iter -> essayer les affinités OMP (OMP_PLACES="threads(n), GOMP_CPU_AFFINITY, OMP_PROC_BIND)" et numactl --interleave-all -> a tester sur HPAC

TODO d'ici la presentation de lundi,

faire marche l'hybride plus rapidement que pur MPI:

  • changeant le code OMP+sect critique par du paladin FOR1D avec splitter
  • essayer les numactl & affinity
  • mesure du hybrid
Clone this wiki locally