IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Avis sur un projet


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Par défaut Avis sur un projet
    Bonjour,

    Je vais très prochainement terminer une bibliothèque de fonctions C sur les matrices creuses. Elle permet de gérer :

    - L'addition matricielle
    - La soustraction matricielle
    - La multiplication matricielle
    - La multiplication scalaire
    - La transposition
    - La sauvegarde et le chargement des matrices au format XML (librairie libxml2)

    La librairie est disponible à cette adresse : http://nicolas.lerme.free.fr/Zephyr-1.0.0.zip.

    J'ai réalisé quelques tests sur le temps de calcul de deux initialisations de matrices creuses (100 x 100) dans une même boucle accompagné d'une multiplication matricielle entre celles-ci.

    Au final, je tombe à environ 0.35 sec de calcul. A vrai dire, je ne sais pas si c'est énorme et je voudrai avoir votre avis sur la question. Merci d'avance à ceux qui pourront m'éclairer


    Nico.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Compare tes résultats avec les résultats sur les mêmes matrices avec Matlab et une implémentation style MTL ou Boost.uBlas.

    Je ne saurai que trop te conseiller de faire les tests sur plusieursboucles afin d'éliminer les temps de rellocation, de lancement, ...

  3. #3
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Je crois que 0,35s c'est assez lent, maintenant ça dépend de tant de facteur que bon... Par exemple tu ne nous dis même pas les capacités de ta machine, alors si c'est un 486 c'est génial et si c'est un Pentium D 800 c'est très bof ! Si ta matrice creuse comporte trois coefficient c'est extrèmement nul (même sur le 486) mais si elle presque pleine c'est sans doute plus honorable....
    L'emploi de XML pour stocker les matrices m'apparaît comme curieux, mais c'est un choix qui se respecte, pas très bon si on doit faire des calculs sur des très gros ensembles qu'on est obligé de mapper sur un fichier par exemple.

    --
    Jedaï

  4. #4
    Membre éclairé Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Par défaut
    Citation Envoyé par Miles
    Compare tes résultats avec les résultats sur les mêmes matrices avec Matlab et une implémentation style MTL ou Boost.uBlas.

    Je ne saurai que trop te conseiller de faire les tests sur plusieursboucles afin d'éliminer les temps de rellocation, de lancement, ...
    Heu je n'ai pas Matlab sous la main mais je vais voir ce que cela donne avec la bibliothèque Boost.

    Citation Envoyé par Jedai
    Je crois que 0,35s c'est assez lent, maintenant ça dépend de tant de facteur que bon... Par exemple tu ne nous dis même pas les capacités de ta machine, alors si c'est un 486 c'est génial et si c'est un Pentium D 800 c'est très bof ! Si ta matrice creuse comporte trois coefficient c'est extrèmement nul (même sur le 486) mais si elle presque pleine c'est sans doute plus honorable....
    L'emploi de XML pour stocker les matrices m'apparaît comme curieux, mais c'est un choix qui se respecte, pas très bon si on doit faire des calculs sur des très gros ensembles qu'on est obligé de mapper sur un fichier par exemple.
    Ma machine est un Athlon 1500+ 1.33 GHz. Quant aux deux matrices creuses de départ de 100x100, elles sont pleines à rabord.

    Pour ce qui est du XML, je l'ai employé car je trouve qu'il convenait bien dans ce cas, que les données sont bien organisées, que le fichier pourrait être ensuite importé dans une autre application et enfin pour ne pas avoir à écrire un parser bidon sur un fichier texte . En revanche, il est clair que le temps de parsing augmente rapidement en fonction de la taille de la matrice ...

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Si tes matrices creuses sont pleines, c'est pas génial, autant utiliser des matrices pleines dans ce cas.

  6. #6
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Matlab, scilab ou octave .

    Ca fonctionne pareil mais c'est gratuit !

  7. #7
    Membre éclairé Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Par défaut
    Citation Envoyé par Miles
    Si tes matrices creuses sont pleines, c'est pas génial, autant utiliser des matrices pleines dans ce cas.
    Je comprends ta remarque mais je souhaitais simplement voir ce que ca donnait si mes matrices creuses étaient pleines et avoir un avis sur le temps de calcul lors d'une multiplication matricielle. C'est clair que ya pas trop d'intérêt à les utiliser dans ce cas-là .

    Sinon j'ai regardé du côté de Boost et je viens de m'apercevoir que l'opérateur de multiplication matricielle n'a pas été écrit. Je vais tenter de l'écrire moi-même.

    Citation Envoyé par progfou
    Matlab, scilab ou octave .

    Ca fonctionne pareil mais c'est gratuit !
    Scilab ou octave sont-ils suffisants pour ce que je souhaite faire ?

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Je ne sais pas tres bien quel genre de commentaires tu desires. Voici ce qui m'a frappe apres avoir survole la doc.

    Le principal interet a faire soi-meme une bibliotheque de calcul matriciel, c'est me semble-t'il d'apprendre a etudier l'aspect numerique (stabilite, propagation des erreurs, ...) des choses. Si on a une application en vue, l'utilisation d'une bibliotheque existante eprouvee (et boost la ne me semble pas convenir malgre le respect que je leur porte pour d'autres domaines) me semble etre la seule approche possible sauf a vouloir ameliorer l'existant, mais dans ce cas, on n'a pas besoin de demander des commentaires sur un forum aussi peu specialise que developpez.com.

    Hors dans la documentation que j'ai survolee, il n'est pas question du tout de cet aspect.

  9. #9
    Membre éclairé Avatar de nicolas66
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 326
    Par défaut
    Je souhaitais simplement avoir un avis sur le temps de calcul d'une multiplication matricielle pour savoir s'il était bon ou pas de se lancer dans une série d'optimisations.

    Citation Envoyé par Jean-Marc.Bourguet
    Voici ce qui m'a frappe apres avoir survole la doc.
    Tu parles de la doc générée par doxygen ?

    Citation Envoyé par Jean-Marc.Bourguet
    Le principal interet a faire soi-meme une bibliotheque de calcul matriciel, c'est me semble-t'il d'apprendre a etudier l'aspect numerique (stabilite, propagation des erreurs, ...) des choses.
    Heu là, je ne vois pas trop comment je pourrai étudier ce genre de choses. Menfin je ne sais pas si ca intéresserait mes profs vu que c'est simplement un projet bidon de fin d'année de licence 3 ...

Discussions similaires

  1. [PHP-JS] Avis sur un projet
    Par fallais dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2007, 18h18
  2. Votre avis sur un projet
    Par Arcalys dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 27/11/2006, 23h11
  3. Avis sur un projet
    Par nicolas66 dans le forum C
    Réponses: 10
    Dernier message: 23/05/2006, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo