Test sous BLAS

rima.rim Messages postés 4 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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,

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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