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

Fortran Discussion :

variables indexées en gfortran


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut variables indexées en gfortran
    Bonjour, bonsoir le forum,
    ce post fait suite à ces autres : http://www.developpez.net/forums/d13...n-c-voire-cpp/ et http://forum.ubuntu-fr.org/viewtopic.php?id=1310981, où je demandais quel langage de programmation choisir entre le fortran et le C voire le C++. J'ai finalement choisi de coder en fortran, parce que c'est le langage que je connais le mieux, et que j'envisage par la suite que la plupart du travail soit effectuée en parallèle sur plusieurs processeurs. (il y a des serveurs de calcul qui tournent déjà sur quarante proc's dans ma boite, pour d'autres applications)

    Le travail en question est la traduction d'un fichier d'entrée d'environ deux millions de lignes, en une suite de valeurs numériques déterminées d'après les informations de chaque ligne, et avec d'autres infos que l'on récupère dans deux autres fichiers d'entrée de quelques centaines de lignes chacun; on m'a informé sur ce forum ou sur celui de linux-ubuntu où j'ai exposé le problème aussi, que le travail en question s'apparentait à un "jointure" de bases de données.

    La première fois où le programme a tourné correctement jusqu'au bout, il a mis environ vingt minutes; suite aux discussions sur les forums, j'en suis arrivé à deux minutes environ (en améliorant sensiblement la logique de l'algo et les I/O), et aujourd'hui vendredi, en passant d'une vieille HP9000 à bout de souffle, à un bon PC sous linux avec un (seul) processeur itanium, j'en suis à 21 secondes.

    Petite question, j'utilise Gfortran pour compiler mon programme, et il râle quand des indices de tableaux sont eux-mêmes des variables indicées.
    Par exemple, je ne peux pas utiliser Ccvt1(iFScvt, M(iFScvt), T(iFScvt)), mais je dois passer par des variables intemédiaires,Mtmp=M(iFScvt), et Ttmp=T(iFScvt), pour pouvoir finalement accéder à Ccvt1(iFScvt, Mtmp , Ttmp). Y a-t'il un moyen de contourner cela ?

    Merci de me donner toutes les idées, même farfelues, que vous inspire ce post', car n'étant pas informaticien mais mécanicien (en calcul de structures), mon imagination et mes connaissances sont assez pauvres dans ces domaines,
    merci encore,

  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
    Citation Envoyé par dva2tlse Voir le message
    que j'envisage par la suite que la plupart du travail soit effectuée en parallèle sur plusieurs processeurs. (il y a des serveurs de calcul qui tournent déjà sur quarante proc's dans ma boite, pour d'autres applications)
    Rien à voir avec le reste de ton message, mais c'est plus simple de faire ça en C ou en C++ qu'en Fortran (et je sais de quoi je parle).

  3. #3
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    Bonjour Matthieu,
    merci de ton conseil, mais je connais pas mal le fortran alors que je ne suis que débutant en C, donc je vais faire ce que je connais, et cela devrait m'être beaucoup plus facile pour les nombreux tableaux que j'ai à utiliser parce que je galère avec les pointeurs...
    à +

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    Petite question, j'utilise Gfortran pour compiler mon programme, et il râle quand des indices de tableaux sont eux-mêmes des variables indicées.
    Par exemple, je ne peux pas utiliser Ccvt1(iFScvt, M(iFScvt), T(iFScvt)), mais je dois passer par des variables intemédiaires,Mtmp=M(iFScvt), et Ttmp=T(iFScvt), pour pouvoir finalement accéder à Ccvt1(iFScvt, Mtmp , Ttmp). Y a-t'il un moyen de contourner cela ?
    Donne nous le message d'erreur exacte parce qu'une expression de la forme Tableau(Tableau(indice)) est tout à fait conforme.

  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
    Raler = erreur ou warning ? C'est peut-etre un warning disant qu'il ne peut pas vectoriser ce genre de cas ?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Vectoriser au sens pipeliner ? Possible. Si c'est le cas, c'est un warning très soft. Des situations / constructions limitant la vectorisation sont très fréquentes et relèvent plus de l'analyse / suggestion que du warning...

  7. #7
    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
    Citation Envoyé par Sylvain Bergeron Voir le message
    Vectoriser au sens pipeliner ? Possible. Si c'est le cas, c'est un warning très soft. Des situations / constructions limitant la vectorisation sont très fréquentes et relèvent plus de l'analyse / suggestion que du warning...
    Tout a fait d'accord.

  8. #8
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    Bonjour, je viens de m'apercevoir ce matin en essayant de sélectionner les lignes qui faisaient planter la compilation, que c'était impossible.
    Donc ça ne plante plus quand l'indice d'un tableau est lui même une valeur indicée, ce qui est une des choses qui rend intéressant de travailler en fortran.
    Donc "Résolu", merci

  9. #9
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    @Matthieu et Sylvain, je ne suis plus au boulot, donc demain dès que j'arrive je mets en commentaire les deux ou trois petites modif's de rien du tout que j'avais faites pour que la compil' aille jusqu'au bout. (Il le semble me souvenir qu'elle ne se terminait pas)
    Merci et à demain,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une variable indexée dans une formule
    Par Nico_79 dans le forum SAS Base
    Réponses: 2
    Dernier message: 31/10/2012, 10h56
  2. Nom de variables indexés dans une boucle FOR-END
    Par matthieu.gaudet dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/05/2008, 18h11
  3. Réponses: 5
    Dernier message: 07/11/2007, 15h14
  4. Récupération de la variable Index
    Par Oncle_Pete dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/09/2007, 10h45
  5. [Tableau][matrices]changement d'index et variables variables
    Par The Wretched dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 18/04/2005, 10h01

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