-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release 10.2.0 #154
Merged
Merged
Release 10.2.0 #154
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This prevents a bug when looking for the reports in the unit test workflow.
We do not force Ninja in presets anymore.
9 fix windows unit test workflow
src/Norm/base/Regex.h collided with that of the standard C++ library making fail the compilation of unit tests in macOS.
porting to macos
- Also add a pre-commit configuration to execute it when committing
…ommit-config Add script to update copyright
- Use targets in all actions to speedup the build - remove several options in the main CMakeLists: - FULL, LEARNING and PARALLEL: not needed anymore (use targets) - MODL_SO: binary MODL_dll is always built - FEDORA: the fedora distro is discovered automatically and a fatal error is triggered if MPI_SUFFIX is not set by the mpi module - change the name of some test targets: all in lowercase - CMakePresets: - add "jobs:0" to enable parallel build - simplification of the naming: remove the prefix "build_" in the name of the build preset
Khiops guide and tutorials are not anymore in the repo: no more sample packages
…up-the-build-process Use targets in cmake to speed up the build process
modified: .cmake-format.py (line_ending = "auto")
…indows-to-avoid-differences-with-git-status Account-for-end-of-lines-on-windows-to-avoid-differences-with-git-status
add another unit test for parallel
Add --paralel flag for each cmake build
…n-macos Unit tests in parallel fail in macos, no more parallel build in CMakePreset. Users must add a CMakeUserPreset.json file to add parallel build
add platform dependant code in build.sh and install-khiops.sh for 2 objectives: - to handle with the different presets name - to specify the out-of-conda clang compiler in the conda build. There is an issue to use the conda's one.
Build macos conda package
Also add pre-commit check for Github actions
…and-python Add pre-commit hooks for Python, JSON, YAML
…date-copyright Pre-commit update copyright: add a new line after licence info
…g-files-in-osx Fix "Undefined Error when opening files in OSX"
Also: add assert safeguards in KWDatabaseSlicerTask.
…-due-to-character-encoding-file-name 128 segmentation fault in macos due to character encoding file name
Modification du nombre de process a utiliser en parallele dans les tests de non regression - passage de 3 a 4 pour avoir au trois esclaves - mis a jour dans run-standard-tests.yml les tests standard de base en CI/CD - a utiliser systematiquement pour les tests de non regression en mode parallel - LearningTest completement mis a jour Amelioration du reporting global de la command 'errors' - fichier colonne au format csv - ordre des resultats le meme entre les plateformes - analyse facilitee, a la fois manuellement et automatique par script Amelioration du reporting dans les fichiers comparisonResults.log - affichage des fichiers manquants ou en trop dans la comparaison - erreur fatale si contenu dans stdout, stderr, ou si le code retour est different de 0 - resilience si contenu normal dans stdout ou stderr (ex: reporting de l'allocateur en mode debug) - fichiers correspondants memorises dans le repertoire results - affichage du debut du contenu des fichiers de type erreur fatale - section "SUMMARY" en fin du log Amelioration de la resilience dans les comparaisons - resilience au nombre de de records filtree en cas de manque de ressource memoire (cf. jeu de test MTMaxRecordNumber) - recuperation des erreur fatales en cas de pattern de type 'Batch mode failure' (cf. cas de portabilite de type CharacterEncoding) - filtrage des messages ..., 100th warning pour minimiser les differences entre parallel et sequentiel Gestion de contexte des resultats de reference - deux type de contexte: - computing: parallel, sequentiel - paltform: Darwin, Linux, Windows - memorisation de variantes de resultats si necessaire dans repertoires suffixes par les types de contexte specialise - prise en compte dans les commandes de base - cleanref, markeref, copyref - list: ajout d'information sur le type de contrexte - deleteref: nouvelle commande pour detruire les repetoires de resultats de reference pour tous les coontextes - description detaillees dans le script test_dir_management.py Mise a jour de LearningTest pour avoir des resultats specifiques par contexte (computing, plateform) - type d'OS: Darwin ou Linux - une dizaine de jeux de tests, principalement dans LearningTest\TestKhiops\CharacterEncoding (nouvelle famille) - type de computing: parallel - une vingtaine de jeux de test, principalement dans boullema\LearningTest\TestKhiops\CrashTests - suppression en V10.2 de KIInterpretation de la famille de tests de Khiops (tests specifiques V11) Impacts dans les scripts - nouveaux scripts - test_dir_management.py: gestion des contextes de resultats de reference - test_families.py: specication des familles de test par type d'outil - modifications majeures principalement dans check_results.py et test_khiops.py - refactoring leger et "opportuniste" effectue lors de l'implementation des nouvelles fonctionnalites - mise en place de constantes - amelioration de la terminologie, des messages de reporting, des commentaires - deplacement de quelques blocs de code - supression de code mort - ...
…ingtest-scripts-for-portability-issues 126 improve resilience of learningtest scripts for portability issues
Renommage d'une methode de test_khiops.py maintenant pris en compte
Minor fix in recently added assertion KWDGValueSet::DeleteValue Evaluated in debug on LearningTest\TestKhiops\Standard\Iris2D, IrisG, IrisR
Fix standard tests fail on debug
Les scripts de lancement de Khiops peuvent freezer sur certaines plateformes (cloud par exemple), ou en cas de bug. Afin de dérouler tous les tests, il faut tuer les process trop longs. Le lancement des test est maintenant controle par un timeout, uniquement si on trouve un fichier time.log dans le repertoire des resultats de reference Dans ce cas: - on tue le process si depassement du timeout - on fait en tout trois tentatives, sauf si le temps global imparti est ecoule - en cas de timeout, on memorise ces problemes dans le repertoire results dans un nouveau fichier d'erreur fatale 'process_timeout_error.log' Pour l'instant, les parametres de timeout utilises sont les suivants: - timeout: 5 mn + 5 fois le temps de resultats de reference (du fichier time.log) - temps global imparti: une heure
…-scripts Add timeout in LearningTest scripts
Politique de recuperation des erreurs - commentee dans check_results.py ~~~ Il y a plusieurs tentatives de recuperation des erreurs pour des jeux de test ou des variation normales sont possibles, comme par exemple des difference sur la caucl de l'auc en cas de manque de ressource Ces tentatives sont implementees de facon pragmatique (code minimaliste, facile a developper et faire evoluer) pour automatiser l'analyse manuelle des resultats qui ete effectuee auparavant On ne cherche pas a ere resilient a tous les cas possibles, ni a gerer la complexite des types de recuperation pouvant se combiner. Ces methodes de recuperation ne servent parfois que pour un seul jeu de donnees, et il ne faut pas hesiter si besoin a simplifier certains jeux de test pour eviter qu'ils combinent plusieurs problemes de recuperation ~~~ - si recuperation non triviale possible - pour la commande 'logs' - message explicatifs dans le fichier comparisonResults.log - conversion d'erreurs en warnings - pour la commande 'errors' - message syntherique de type "recovery..." Types de recuperation implementes - methodes specifiques de recuperation - probleme d'encoding des nom de fichier pour les plateformes acceptant les bytes (Linux) - methode base sur l'association d'un nom de fichier de type string (utf8) obtenu apres conversion, et la version byte du nom de fichier - ex: TestKhiops/CharacterEncoding/TransferAccentuatedDir - messages utilisateur identiques, mais arrivant en ordre different selon l'ordre d'execution des process en parallel - ex: TestKhiops/SmallInstability/BugConstructionWithTrailingBlank - calcul de l'auc approximatif en raison de la limite des ressources - ex: TestKhiops/ParallelTask/ClassifierEvaluationLimits - nombre variables de warning avant erreur uniquement dans le fichier err.txt - ex: TestKhiops/CrashTests/trainclassifier_KWDataPreparationUnivariateTask (results potentillement differents selon execution des process) - scenario ne pouvant s'excuter entierement sur certaine plateformes (rappel d'une issue precedente) - cas de type 'Batch mode failure' - ex: LearningTest\TestKhiops\CharacterEncoding\MultipleEncodingsFileSystem - methodes generiques existantes (rappel) - variantes de resultats selon parallel|sequential et/ou selon la plateforme - tolerance ou messages utilisateurs selon des "motifs resilients" (ex: message sur les ressources insuffisante) - tolerance aux variations Modification de jeux de donnees - TestKhiops/ParallelTask/RegressionLimits - mise en place d'une version des resultats results.ref-parallel - TestKhiops/CrashTests/MaxMTRecordNumber, MaxMTRecordNumberLarge - ajustement des contraintes sur les ressources memoire pour stabilite la typologie de problemes rencontres Gestion d'un timeout - si un temps est disponible dans le fichier time.log de reference, on met en place un timeout - par defaut, timeout = MIN_TIMEOUT + TIMEOUT_RATIO * results_ref_test_time - MIN_TIMEOUT=300, TIMEOUT_RATIO=5 - nouvelle variable d'environnement optionnelle KhiopsTestTimoutLimit, pour modifier la valeur du MIN_TIMEOUT - par jeu de test, si le timeout est atteint, l'outil teste est relance au plus trois fois, sauf si depassement cumule d'une heure Gestion des messages pour les fichiers speciaux, par priorite decroissante - FATAL ERROR uniquement si code retour errone (fichier return_code_error.log) - TIMEOUT ERROR si processus tue apres timeout - UNEXPECTED OUTPUT si stdout ou stderr non vide Controle a priori des principaux parametres utilisateur pour sortir des tests proprement et le plus rapidement possible Commandes compareTimes et compareTimesVerbose - normalisation des resultat au format tabulaire tsv Stabilisation des messages sur les stats memoires sur stdout en mode debug - Lancement de mpiexec depuis test_khiops.py - ajout de l'option -l, specifique a mpich, valide au moins pour Windows "Label standard out and standard error (stdout and stderr) with the rank of the process" - activee auparavant uniquement sous Windows Implementation - modification majeures - check_results.py - test_khiops.py - modification mineures - apply_command.py - test_dir_management.py - help_options.py - leger refactoring pragmatique a l'occasion de l'implementation des nouvelles fonctionnalites
…ningtest-scripts-for-portability-issues 136 finalize resilience of learningtest scripts for portability issues
The interruption check method TaskProgression::IsInterruptionRequested was called at every Read() call for the input database. Now they are made less often by pairing it with a call to PeriodicTest::IsTestAllowed.
…s-too-often-taskprogressisinterruptionrequested KWDatabaseTask fewer interruption checks
Le probleme provient de la classe ValueBlock, hautement optimisee KWValueBlock - La classe utilise une fonctionnalite avancee du C++, le 'placement new operator', pour allouer prealablement la memoire donnee au constructeur, qui usuellement d'une part alloue la memoire, d'autre part l'initialise - Ici, on aura une sequence de trois methodes dans les 'placement new' exploites dans les methodes NewValueBlock des sous classes: - appel de GenericAllocValueBlock pour creer un bloc memoire - appel du placement new du C++ avec ce bloc, qui declenche un appel standard du C++ (implemente en ne faisant rien) - appel de GenericInitValueBlock pour initialiser le bloc memoire Auparavant, on avait une seule methode GenericNewValueBlock qui allouait la memoire et l'initialisait. Le constructeur etait appele ensuite, mais il semble qu'il modifiait (a tort) le contenu de la memoire, entrainant un bug. Impact etudie sur les autre utilisations du "placement new" - uniquement la classe KWTuple: ok (utilisation plus basique) Correction au passage d'une typo dans un message d'erreur SNBPredictorSNBTrainingTask::MasterInitializeDataTableBinarySliceSet - le premier caractere est mis en majuscule dans le message "Not enough memory to run the task" - pour suivre le meme pattern que partout ailleurs dans le code - pour etre traite systematiquement dans les pattern de resilience au messages utilisateurs dans le scripts de LearningTest Note: la modification de IrisLight est a ignorer - il n'y a en fait aucune difference (blancs en fin de lignes)
…-linux 138 segmentation fault in rocky linux
The LearningTest scripts now fail when not finding `mpiexec` only if `KhiopsMPIProcessNumber` is set.
Improve mpiexec environment check in LearningTest
Report pragmatique de quelques corrections de bugs dejà traites pour la V11 Uniquement si impact dans le code faible tres localise et amelioration perceptible par les utilisateurs Version V10.3.1i - bug detecte dans la regle de derivation AddSeconds avec quatre milliards de secondes en operande - corrections - KWDRAddSeconds::ComputeTimestampResult - modifier les release notes de Khiops 10.2 Version V10.3.5i - correction d'un effet de bord dans Parallel V2.4.9 - concatenation avec fichier en entree vide, donc avec zero chunk Version V10.3.10i - KWAttributeBlock::Check: correction sur le type de VarKey sDefaultValueMetaDataKey dans le cas categoriel Version V10.4.0i - Bug dans "Data table key extractor/Build multi-table dictionary" - construit un dictionnaire invalide en release - plante en assert avec un input dictionary non multi-table - jeu de test: LearningTest\TestKhiops\BugsMultiTables\BugExtractKey - correction dans KWMTClassBuilderView::BuildMultiTableClass Fix erroneous errors messages in parallel for unsorted tables - Impacts: - KWKeyPositionSampleExtractorTask::SlaveProcess: correction du numero de ligne - KWKey::GetObjectLabel: correction pour prendre le debut de la cle plutot que sa fin
Supression du prefix de process id de type '[0] ' en debut des lignes de stdout et stderr - probleme observe sur Mac dans deux jeux de test de CharacterEncoding - impact dans check_results.py
…d-in-v11 145 fix minor bugs already fixed in v11
Gestion cross-plateforme des fichiers avec caracteres accentues - on garde comme cle de nom de fichier cross-plateforme la version convertie en ascii sans erreurs - plus generique que la conversion utf8 initialement utilisee - impact: check_results.py, au niveau de l'utilisation des byte_file_name - ajout d'un quatrieme plateforme ["Darwin", "Linux", "Windows", "WSL"] - pour un OS de type linux sur un systeme de gestion de fichier de type windows - impact: test_dir_management.py - corrige les probleme identifier dans la famille TestKhiops/CharacterEncoding Ouverture systematique des fichier en lecture et ecriture en mode errors="ignore" pour ne pas echouer en cas de caracteres accentues Jeu de test TestKhiops/ParallelTask/RegressionLimits - modification du scenario pour stabiliser les resultats Jeu de test TestKhiops/SmallInstability/BugConstructionWithTrailingBlank - il peut y avoir des difference non seulement dans l'ordre des messages utilisateurs, mais egalement dans les index des records concernes - amelioration de la resilience a ce jeu de test en supprimant le debut des messages utilsiateur jsuqu'au numeros de ligne - impact: - check_results.py: filtrage des messages via la methodes filter_record_index_from_lines pour ce type de recouvrement des erreurs Valide sur les resultst de test obtenus sur Linux Valide sur les resultst de test obtenus sur Max et WSL (chez Nicolas) - les problemes residuels provenaient d'un lancement des tests avec une version obsolete des scripts, et avec 3 process (au lieu de 4)
…-in-learningtest-scripts Fix remaining instabilities in LearningTest scripts
ArgMin and ArgMax derivation rules are now consistent with the Min and Max rules - they return MissingValue only in case of empty list of value or only missing values
Release 10 2 0
marcboulle
approved these changes
Feb 13, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.