Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

21PARTAGES

9  0 
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 !

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de 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
0  0