Test sous BLAS

Fermé
rima.rim Messages postés 2 Date d'inscription vendredi 5 juin 2015 Statut Membre Dernière intervention 7 juin 2015 - 7 juin 2015 à 16:35
mamiemando Messages postés 33274 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 septembre 2024 - 8 juin 2015 à 13:44
bonjour,
j'ai un code.c du produit de deux matrices creuses,je voulais le tester sous la bibiothèque BLAS.
s'il vous plait,comment ça se fait?
merci,
A voir également:

1 réponse

mamiemando Messages postés 33274 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 septembre 2024 7 783
8 juin 2015 à 13:44
Installe le paquet libblas-dev :

sudo apt-get update
sudo apt-get install libblas-dev


Ensuite regardons avec apt-file ce que ce paquet nous installe :

sudo apt-get install apt-file
apt-file update
apt-file list libblas-dev


Exemple :

(mando@aldur) (~) $ apt-file list libblas-dev
libblas-dev: /usr/include/cblas.h
libblas-dev: /usr/include/cblas_f77.h
libblas-dev: /usr/lib/libblas/libblas.a
libblas-dev: /usr/lib/libblas/libblas.so
libblas-dev: /usr/lib/pkgconfig/blas-netlib.pc
libblas-dev: /usr/share/doc/libblas-dev/changelog.Debian.gz
libblas-dev: /usr/share/doc/libblas-dev/copyright


1) On voit ici que le header fournit s'appelle cblas.h et qu'il est dans
/usr/include
.

Ce répertoire est automatiquement examiné par ton compilateur, donc il suffira de faire
#include <cblas.h>
pour que les fonctions cblas soient déclarées. Pas besoin de passer d'option au compilateur pour cela.

On crée un fichier (mettons toto.c) :

#include <cblas.h>
#include <stdio.h>

int main() {
float x, y;
cblas_sdsdot(0, 0.0, &x, 1, &y, 1);
printf("x = %lf\n", x);
printf("y = %lf\n", x);
return 0;
}


2) Ensuite on voit que le paquet fournit une librairie partagée (libblas.so). L'option à passer à gcc sera donc
-lblas
(on enlève le préfixe "lib" et le suffixe ".so" pour déterminer ça, c'est pareil pour toutes les librairies). Puis on compile :

gcc -W -Wall -O2 -o toto toto.c -lblas
./toto


On obtient :

(mando@aldur) (~) $ ./a.out 
x = 0.000000
y = 0.000000


Bonne chance
0