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 :

tables de travail


Sujet :

Fortran

  1. #1
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Points : 49
    Points
    49
    Par défaut tables de travail
    Bonjour,
    En regardant du code fortran 77, il est beaucoup question de tables de travail pour certaines fonctions. Je ne vois pas bien de quoi il s'agit et ne trouve pas grand chose avec des moteurs de recherche (ni dans les livres et poly dont je dispose...)
    Voyez-vous de quoi il s'agit ?
    Est-ce la bonne terminologie ?
    Est-ce spécifique au fortran 77 ?
    Merci pour vos éclaircissements.

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Je travaille depuis de nombreuses années en Fortran 77 et je n'ai jamais entendu parler de "tables de travail". Il est possible que ce terme ait été inventé par l'auteur de ton programme. Si tu nous donnais un petit exemple, on pourrait essayer de t'aider.
    Jean-Marc Blanc

  3. #3
    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
    Points : 1 346
    Points
    1 346
    Par défaut
    Faudrait voir un exemple, mais c'est possiblement du « working storage ».

    En Fortran 77, il n'y avait pas d'allocation dynamique de mémoire. Pour traiter des problèmes où des tableaux étaient requis, mais que les dimensions n'étaient pas connues au moment de la compilation, des grands tableaux étaient déclarés et le programme n'utilisait qu'une partie de ceux-ci selon la taille requise pour un problème particulier.

    Ce genre de stratégie n'est plus requis depuis l'apparition des allocations dynamiques en Fortran 90.

  4. #4
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci à vous, ça m'a bien l'air d'être ce que tu dis Sylvain : le mot workspace est aussi employé.
    Voici un petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    c-----------------------------------------------------------------------
          SUBROUTINE STEP ( n, mudt, chol, sqdt, dwork, step )
    c-----------------------------------------------------------------------
    c
    c     INPUT 
    c       n         : number of elements                           integer
    c       mudt[n]   : mu(i)*deltat, (n)                             double
    c       chol[n,n] : choleski factor of covariance (n*n)           double
    c       sqdt      : sqrt of dt (discret. step in years)           double
    c
    c     WORKSPACE
    c       dwork     : ( 2*n )                                       double
    c
    c     OUTPUT 
    c       step[n]   : generated step (n)                            double
    c
    c     CALL   
    c       PMLV      : M*V = vector (M(n*n), V vector(n),
    c                   gives M*V vector(n))
    c       SVVX      : V1 + V2*X, V1 and V2 vectors(n), X scalar, give vector(n)
    c
    c-----------------------------------------------------------------------
    c
          IMPLICIT NONE
    c
    c     arguments i/o
          INTEGER n
          DOUBLE PRECISION sqdt
          DOUBLE PRECISION mudt(*), chol(*), step(*)
    c
    c     workspaces
          DOUBLE PRECISION dwork(*)
    c
    c     local variables
          INTEGER i, pdb, pdc
          DOUBLE PRECISION mean, std
          PARAMETER ( mean = 0.0d0, std = 1.0d0 )
    c
    c-----------------------------------------------------------------------
    c
    c     initialization
    c
    c     pointers for double precision work space  : dwork
    c     -------------------------------------------------
          pdb   = 1
    c     pdb   : pointer for noise vector(nelem), so (n) more,
          pdc   = pdb + ( n )
    c     pdc   : pointer for work vector(nelem), so (n) more,
    c
    c     Total size of dwork array = (n) + (n) = ( 2*n )
    c
    c-----------------------------------------------------------------------
    c
    c     generate n-Gaussian number N(m,std)
          CALL IVXRN ( n, mean, std, dwork(pdb) )
    c
    c     sigma*dW, vector(n)
          CALL PMLV ( n, chol, dwork(pdb), dwork(pdc) ) 
    c
    c     [mu*dt] + [sigma*dW*sqrt(t)], vector(n)
          CALL SVVX (  n, mudt, dwork(pdc), sqdt, step ) 
    c
          RETURN
          END

  5. #5
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Comme ça, on voit mieux de quoi il s'agit: pour faire son travail, ton sous-programme a besoin de place en mémoire en plus des tableaux d'entrée et de sortie. C'est pour ça qu'en Fortran 77 on réserve un certain espace (ici le tableau dwork) dont le contenu n'a aucune importance pour l'utilisateur.
    Jean-Marc Blanc

  6. #6
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    ok, si je comprends bien (je reformule avec mes mots...), on les utilise quand on a besoin dans une fonction de variables locales "tableaux" de dimension dépendant d'un paramètre d'entrée de la fonction ; comme on ne peut allouer dynamiquement de la mémoire en fortran 77, celle-ci est allouée en amont de la fonction : en effet, en amont, :
    • Soit on réserve un très grand tableau statique, qu'on appelle comme variable d'entrée des différentes fonctions nécessitant des variables locales tableaux.
    • Soit on alloue un tableau dynamiquement, si le langage en amont gère l'allocation dynamique (fortran 90, C, etc.)


    Vous êtes d'accord?
    Merci .

  7. #7
    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
    Points : 1 346
    Points
    1 346
    Par défaut
    D'accord, oui. Mais une petite précision quand même au niveau des possibilités. Il y en a une 3ième et elle est fréquente :
    • Les dimensions du tableau peuvent très bien être connues du programmeur "en amont", parce qu'il connait le problème à résoudre. L'exigence d'un tableau dynamique est purement local à la fonction. On obtient alors un programme F77 très simple où tout est fixe, sauf qu'il faut passer un « workspace » à la fonction.

Discussions similaires

  1. Table de travail, CURSOR et LOCK
    Par chris92 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/07/2010, 14h13
  2. Meilleur choix pour 'table de travail'
    Par SergioMaster dans le forum Bases de données
    Réponses: 44
    Dernier message: 30/07/2007, 13h52
  3. Quellue interface pour travailler sur une grosse table ?
    Par grinder59 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/12/2006, 16h25
  4. [ASE]augmenter le nombre de tables de travail allouées
    Par MERER Gildas dans le forum Sybase
    Réponses: 5
    Dernier message: 24/02/2006, 17h06
  5. tables de travail
    Par divableue dans le forum Langage SQL
    Réponses: 5
    Dernier message: 24/10/2003, 11h06

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