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

C++/CLI Discussion :

Multiple impl�mentations d'une fonction


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    F�vrier 2013
    Messages
    94
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2013
    Messages : 94
    Par d�faut Multiple impl�mentations d'une fonction
    Bonjour � toutes et � tous,

    Dans le cadre d'un programme qui effectue un algorithme, j'ai 2 fonctions qui ont le m�me prototype mais qui r�alise un calcul de mani�re diff�rente. Par exemple l'une emploie une certaine m�thode math�matique, l'autre une seconde m�thode math�matique, diff�rente. Je souhaite laisser l'utilisateur choisir quelle m�thode math�matique il souhaite utiliser en fonction de son probl�me. On peut imaginer par exemple 2 fonctions:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    void compute_quantity_1( const arma::mat &, const arma::mat &, const unsigned ){...}
    void compute_quantity_2( const arma::mat &, const arma::mat &, const unsigned ){...}
    Je vois plusieurs mani�res de traiter cette question: pointeurs de fonctions, instructions pr�-processeur, interface, templates, ...
    Sachant que la compilation de l'ensemble des sources est rapide (de l'ordre de 15-20 secondes), et que ces fonctions peuvent �tre appel�es 10^15 ou 10^20 fois, y a t'il une approche � pr�f�rer? Quelles seraient les bonnes pratiques? Je n'ai pas pu trouver de guidelines pr�cis sur le net.
    merci et bonnes f�tes!

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Est-ce une question dans le cadre du C++ "natif" ou du C++/CLI (.NET), sujet de cette partie du forum ?
    En fonction du cadre, les r�ponses et probl�matiques sont diff�rentes.

    Je ne vois pas de "multiple impl�mentations d'une fonction" dans votre cas, comme pourrait �tre une impl�mentation fonction de la plateforme d'ex�cution (portabilit�, etc...)

    Ne jamais brider l'utilisateur de votre code, juste le guider pour l'utiliser "correctement".
    Donc favorisez la lisibilit�/utilisabilit� � une "performance brute incontr�lable".
    Votre description est beaucoup trop vague pour vous donner des prescriptions "pr�cises".
    Utilisez des concepts que les utilisateurs de votre code maitrisent, sinon, personne ne se servira de votre machin.

    Vos fonctions sont appel�es de mani�re tr�s tr�s intensive. Pourquoi ?
    Si c'est pour des donn�es diff�rentes, il peut �tre plus avantageux de faire un appel avec un jeu de donn�es bien plus grand, �conomisant ainsi tous les parties prologue et �pilogue d'un appel de fonction.
    S'il n'y a pas de d�pendance de donn�es ou algorithmiques, pourquoi ne pas se tourner vers le parall�lisme, type shader, ou SIMD, par exemple.
    Pourquoi ne pas utiliser des Frameworks de calcul haute performance : HPC, Hadoop, etc... plut�t que de r�inventer une roue carr�e ?

    N'y a t'il pas des Framework sp�cialis�s dans le domaine (calcul de structures, des fluides, �l�ments finis, etc...) qui sont d�j� �prouv�s ?

  3. #3
    Membre confirm�
    Inscrit en
    F�vrier 2013
    Messages
    94
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2013
    Messages : 94
    Par d�faut
    Bonjour,

    Oui tout � fait, j'ai cliqu� brutalement sur le 1er lien C++ qui apparaissait apr�s une recherche et qui m'a amen� ici, j'en ai profit� pour poster sans regarder le sous-forum ou je me trouvais. Enti�rement ma faute. J'ai essay� de d�placer le sujet vers la racine du forum C++ mais je n'ai pas trouv� comment faire.

    Ne jamais brider l'utilisateur de votre code, juste le guider pour l'utiliser "correctement".
    Donc favorisez la lisibilit�/utilisabilit� � une "performance brute incontr�lable".
    Votre description est beaucoup trop vague pour vous donner des prescriptions "pr�cises".
    Utilisez des concepts que les utilisateurs de votre code maitrisent, sinon, personne ne se servira de votre machin.
    Telle est bien mon intention. Je me suis mal exprim�: je souhaite laisser l'utilisateur d�cider de la m�thode � choisir pour l'algorithme. Pour donner une id�e c'est comme dans de nombreuses biblioth�ques effectuant des r�gressions lin�aires ou non-lin�aires: on peut jouer sur les options. Dans mon cadre la m�thode1 va par exemple utiliser les propri�t�s d'une matrice pour en d�duire la solution, alors que pour la m�thode2 va utiliser une approche bas�e sur des it�rations. Les deux m�thodes sont comparables mais n'apportent pas les m�mes b�n�fices en termes de temps de calcul et de pr�cision. A noter que ces m�thodes sont appel�es un grand nombre de fois pour faire �voluer un syst�me plus grand (l'it�ration en cours d�pend de l'it�ration pr�c�dente, une approche �volutionniste). Nous parall�lisons (CPU) les �volutions (il faut r�p�ter les �volutions pour converger vers un r�sultat).

    Pourquoi ne pas utiliser des Frameworks de calcul haute performance : HPC, Hadoop, etc... plut�t que de r�inventer une roue carr�e ?
    N'y a t'il pas des Framework sp�cialis�s dans le domaine (calcul de structures, des fluides, �l�ments finis, etc...) qui sont d�j� �prouv�s ?
    Je ne suis pas s�r de suivre ici. Il n'y a pas de Framework (type librairie?) d�j� impl�ment�(e) sur ce sujet. Nous r�utilisons tout ce qui est d�j� document� dans notre domaine (c'est peut-�tre trop restrictif) pour produire un outil pour les chercheurs travaillant sur cette th�matique.

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Un domaine scientifique qui ne dispose pas de Frameworks/biblioth�ques d�di�, c'est tr�s rare de nos jours.
    Peut-�tre que vous avez un peu trop "serr�" votre domaine, non ?
    C'est quoi votre "domaine", SVP ?

    J'ai du mal � comprendre votre t�che dans la situation.
    Les briques de bases doivent fournir ce qu'il faut pour que le gout de l'utilisateur final ne soit pas brid�.
    En temps qu'utilisateur "final", vous faites comme cela vous arrange, car les briques de bases ne forcent pas un choix (cf. ligne pr�c�dente).

    N'ayant pas de vue d'ensemble, je me focalise sur le seul d�tail fourni, le grand nombre d'appel mais il y a peut-�tre des choses bien plus structurantes (localit�/taille des donn�es, d�pendances, conditions limites, etc...).
    On risque de louper l'�l�phant dans le couloir.
    Un grand nombre d'appel � des fonctions "simples" (peu de charge CPU) est un mauvais calcul, d'o� ma suggestion d'augmenter "la port�e" d'un appel, pour en r�duire le nombre.

    Une approche "�volutionniste" casse le parall�lisme.

    Moi, je chercherais un Framework pratique dans le domaine et je ferais en sorte que mon bidule soit facilement utilisable dans ce Framework.

  5. #5
    Expert confirm�
    Homme Profil pro
    Responsable Donn�es
    Inscrit en
    Janvier 2009
    Messages
    5 439
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Responsable Donn�es

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 439
    Par d�faut
    Bonjour,
    Quand je vois "C++" et "Multiple impl�mentation d'une fonction", je pense aussit�t "polymorphisme".
    Donc ici une interface (une classe abstraite) qui va d�clarer le prototype de la fonction (via une m�thode), et divers classes qui impl�mentent cet interface, chacune avec un algorithme qui va bien.

    Le code qui va faire "tourner le tout" n'attend qu'une classe qui impl�mente cette interface, et le choix de l'algorithme se fait en choisissant la classe � instancier.

    Tatayo.

  6. #6
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 537
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 537
    Par d�faut
    Citation Envoy� par Grasshoper Voir le message
    Je ne suis pas s�r de suivre ici. Il n'y a pas de Framework (type librairie?) d�j� impl�ment�(e) sur ce sujet. Nous r�utilisons tout ce qui est d�j� document� dans notre domaine (c'est peut-�tre trop restrictif) pour produire un outil pour les chercheurs travaillant sur cette th�matique.
    bonjour quel outil de d�veloppement ? Visual Studio ?
    Quelles biblioth�ques utilis�es ? Win32, MFC ?
    Qu'est-ce que c'est arma::mat ?
    Apparemment c'est Armadillo.
    Donc quelle interface utilisateur ? Quel OS ?

    Pour faire des fonctions parall�les il faut utiliser des threads au besoin.
    Mais avant �a faut r�pondre aux questions que j'ai pos�es.

Discussions similaires

  1. Multiple Definition d'une fonction SDL
    Par doltox dans le forum D�buter
    R�ponses: 7
    Dernier message: 01/07/2010, 14h52
  2. faire une selection multiple de feuilles en fonction de variables
    Par blackhelmet dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 18/10/2006, 10h32
  3. R�ponses: 6
    Dernier message: 12/07/2006, 19h29
  4. D�claration multiple d'une fonction
    Par Julien C. dans le forum Langage
    R�ponses: 2
    Dernier message: 17/06/2003, 16h38

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