LogoTeluq
English
Logo
Répertoire de publications
de recherche en accès libre

Analyse d'un nouvel algorithme et conception d'une librairie en C# permettant la conversion des nombres décimaux en nombres à virgule flottante (IEEE 754) [r-libre/2544]

Verret, Carl (2022). Analyse d'un nouvel algorithme et conception d'une librairie en C# permettant la conversion des nombres décimaux en nombres à virgule flottante (IEEE 754) (mémoire de maîtrise en Technologie de l'information, Télé-université, Québec, Canada). Direction : Lemire, Daniel.

Fichier(s) associé(s) à ce document :
[img]  PDF - Verret.pdf
Licence : Creative Commons CC BY-NC-SA.
 
Catégorie de document : Thèses et mémoires
Évaluation par un comité de lecture : Oui
Étape de publication : Non publié
Résumé : En programmation, l’utilisation des nombres à virgule flottante pour représenter les nombres réels est pratique courante. Le traitement de ces nombres implique des opérations coûteuses puisqu’il faut lire et convertir les données avec précision. Ces opérations peuvent représenter un goulot d’étranglement lors du traitement de données à haut volume, par exemple l’échange de données en format CSV (comma-separated values), JSON (JavaScript Object Notation), etc. Une nouvelle approche algorithmique permettant d’accélérer la vitesse de lecture des nombres à virgule flottante a récemment été mise au point par Lemire (Lemire, 2021b). La performance de cet algorithme a été démontrée à l’aide du langage C++ dans une librairie nommée fast_float (Lemire, 2021a). Ce projet de maîtrise a pour but de vérifier le potentiel de cet algorithme avec le langage C#. Dans une approche de programmation basée sur les essais, nous avons analysé et adapté la librairie fast_float en langage C#. Bien qu’elle ne soit pas aussi rapide que sa version programmée en C++, notre adaptation de l’algorithme est jusqu’à neuf fois plus rapide que la librairie standard du langage C#. Nous avons validé le comportement des fonctions et l’exactitude des opérations à l’aide des fichiers et des cas d’essais les plus utilisés dans le domaine du traitement des nombres. La difficulté de ce projet réside à plusieurs niveaux. Le langage C# est un langage de haut niveau qui a d’abord été conçu dans une optique de convivialité et de modularité et non de performance. L’optimisation du code est une activité itérative complexe qui nécessite de multiples connaissances techniques : programmation avancée en C# et en C++, analyse du code JIT-assembler, analyse de la performance, etc. Notre librairie tire avantage des opérations vectorisées (technologie SIMD), particulièrement efficaces, mais sous-documentées pour le langage C#. La démarche d’optimisation du code réalisée dans ce projet s’applique à tout programme écrit en langage C# où la performance représente un enjeu. Notre librairie permet d’améliorer considérablement la vitesse de lecture des nombres flottants. Nous avons soumis la mise en oeuvre décrite au sein de ce mémoire à Microsoft pour adoption au sein de sa plateforme .NET. Acceptée en février 2022 par les ingénieurs de Microsoft, notre contribution sera bientôt utilisée par des milliers de programmeurs et des millions d’utilisateurs de partout dans le monde dès que la version 7.0 du framework sera rendue publique.
Déposant: Breault, Claude
Responsable : Claude Breault
Dépôt : 04 mars 2022 14:57
Dernière modification : 04 mars 2022 14:57

Actions (connexion requise)

RÉVISER RÉVISER