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 !

La bibliothèque mathématique C++ Blaze 2.2 débarque en version 2.2
 et ajoute le support des matrices symétriques

Le , par LittleWhite

21PARTAGES

3  0 

Blaze est une bibliothèque mathématique C++, open source pour les calculs arithmétiques denses. Grâce à son implémentation utilisant les expressions templates intelligentes à la pointe de la technique, Blaze associe la facilité d'utilisation d'un langage spécifique au domaine aux performances digne du HPC. Ainsi, c'est l'une des plus rapides et intuitives bibliothèques mathématiques C++.

Parmi ses fonctionnalités, vous retrouverez :
  • de hautes performances grâce à l'intégration des bibliothèques BLAS et des améliorations manuelles des noyaux mathématiques du monde du HPC ;
  • une exécution parallèle avec OpenMP, les threads C++11 et Boost ;
  • une bibliothèque intuitive et aussi facile d'utilisation qu'un langage spécifique au domaine ;
  • une arithmétique unifiée que ce soit pour les vecteurs et matrices denses ou éparses ;
  • une arithmétique rigoureusement testée ;
  • un code C++ portable de haute qualité.


Voici un exemple de code pour l'addition de deux vecteurs :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <blaze/Math.h>

using blaze::StaticVector;
using blaze::DynamicVector;

// Instantiation of a static 3D column vector. The vector is directly initialized as
//    ( 4 -2  5 )
StaticVector<int,3UL> a( 4, -2, 5 );

// Instantiation of a dynamic 3D column vector. Via the subscript operator the values are set to
//    ( 2  5 -3 )
DynamicVector<int> b( 3UL );
b[0] = 2;
b[1] = 5;
b[2] = -3;

// Adding the vectors a and b
DynamicVector<int> c = a + b;

// Printing the result of the vector addition
std::cout << "c =\n" << c << "\n";
Si cela vous a donné envie de tester, n'hésitez pas à lire la page d'introduction, ou encore, de voir les performances réelles de celle-ci.

La version 2 apportait les fonctionnalités parallèles décuplant ainsi les performances de la bibliothèque. La version 2.1 continuait dans cette lignée en améliorant les capacités de parallélisation et en ajoutant le support des threads Boost et C++11.
Finalement, la version 2.2 apporte bien sûr les habituelles améliorations et corrections de bogues liées à toute nouvelle version, mais aussi le support des matrices symétriques. Grâce à celle-ci, de nouvelles optimisations aussi bien de performances que de mémoire sont possibles.

Pour finir, vous pouvez télécharger Blaze 2.2 sur Google Code. La bibliothèque est sous licence BSD.

Votre opinion

Quels sont vos besoins ? Qu'utilisiez-vous jusqu'à présent ?
Pensez-vous que le C++ a sa place dans le monde du HPC ?

Source

Site officiel

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

Avatar de RapotOR
Membre éclairé https://www.developpez.com
Le 16/12/2014 à 13:57
Ils mettent l'accent sur le comparatif aux autres librairies au niveau des performances. Dommage qu'il n'y ai aucun comparatif au point de vue des fonctionnalités. J'ai eu l'occasion d'utiliser armadillo et les possibilités sont impressionnantes.
0  0 
Avatar de Luc Hermitte
Expert éminent sénior https://www.developpez.com
Le 16/12/2014 à 15:03
Je ne vois pas non plus quelle implémentation des BLAS ils utilisent -- vu qu'ils disent en requérir une, et que justement on en voit une dans certains benchs...
Intéressant, mais pas très clair.
0  0