Bibliothèque mathématique sur les vecteurs et formules trigonométriques optimisées en assembleur SSE et AVX
Par Jérôme Delauney

Le , par BeanzMaster, Membre expérimenté
Bonjour à tous !

Cela faisait un petit moment que j'étais resté sans donner de nouvelles, mais je viens aujourd'hui vous présenter un projet sur lequel je planche avec un autre programmeur anglophone (Dicepd sur le forum anglais).

Vous en trouverez les sources sur mon espace github.

Il s'agit d'une bibliothèque de gestion et calcul des vecteurs 2D, 3D et 4D. Elle prend aussi en charge les matrices, quaternions, plans homogènes, "BoundingBox", etc. Il y a également une unité comprenant le calcul rapide par approximation des sinus, cosinus, arcos, atan2, etc.

Cette bibliothèque est compatible avec les environnements Linux, Windows 32 et 64 bits.

Le projet principal à compiler est fondé sur les classes "FPCUnit" de FPC et Lazarus pour faire des tests unitaires, ce qui nous permet de vérifier nos fonctions, mais aussi de faire des tests de performances pour différents formats de fichiers (csv, bbcode, html, markdown).

À l'heure actuelle, seules les versions SSE sont mises à jour. Les versions AVX le seront après nos tests définitifs (par défaut, le projet est configuré pour utiliser le jeu d'instructions SSE version 3).

Pour activer les fonctions trigonométriques "rapides", if faut ajouter dans les options personnalisées du projet la commande
Code : Sélectionner tout
-dUSE_FASTMATH
Vous trouverez également une démonstration graphique toute bête avec TBitmap ou le Canvas de la forme (à votre choix) sur les boids de Craig Reynolds. Elle permet par ailleurs de comparer les performances du code natif et celui du code ASM (portage d'un code trouvé sur "comment-ça marche".

Si vous avez des questions, des problèmes, ou si le projet vous intéresse, alors n'hésitez pas à me joindre !


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Gouyon Gouyon - Membre éprouvé https://www.developpez.com
le 22/01/2018 à 20:01
Très intéressant. Je vais regarder ça de plus près
Responsables bénévoles de la rubrique Lazarus : Alcatîz - Gilles Vasseur -