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 :

Fortran et le multithreading


Sujet :

Fortran

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Par défaut Fortran et le multithreading
    Bonjour à tous,

    Je me remets à mes recherches d'il y a quelques mois, c'est-à-dire trouver le (meilleur) moyen de développer un soft : en fortran pour les routines scientifiques et éventuellement C pour la GUI indépendante (GTK par ex pour un multi-plateformes). Les routines fortran lisent des infos de fréquence d'écriture de résultats (déterminée par l'utilisateur via la GUI) dans un fichier "in.dat" en entrée et les affichent dans un "out.dat" que la GUI lit (pour des barres de progression par exemple)

    La question que je me pose est :
    peut-on lancer des routines simultanément en fortran ? (multi-thread, sans passer par des .exe)
    Si c'était possible (mais ça ne me dit rien), on pourrait envisager d'utiliser une interface fortran-GTK (pilib en l'occurence) pour tout programmer en fortran ...

    Merci !

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    Il y a une version de MPI pour G95 le seul hic (j'en tremble aussi) c'est que tu ne peux parrallèlisé que tes boucles.... je crois qu'il est possible de lancer plusieur subroutines en parallèle de cette manière mais j'ai pas testé....

    autre hic, MPI est à mémoire divisée, donc il faut bien savoir quelle zonne mémoire tu envoie sur quel procésseur....

  3. #3
    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 : 84
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut Fortran et le mutithreading
    Salut!

    Je ne vois pas, comment, en Fortran standard, on pourrait lancer des routines simultanément; en revanche, en utilisant des .dll, il devrait être possible de lancer la même routine depuis des .exe distincts. Je n'ai jamais essayé moi-même (ça figure sur la très longue liste des choses que je voudrais faire quand j'aurai le temps...) mais il n'est pas exclu que ça soit la solution de ton problème. Si ça marche, je serais très curieux de le savoir.

    Bonne chance.
    Jean-Marc Blanc

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Le multi-thread en fortran 77, on oublie : le code n'est pas ré-entrant. Pour les Fortran plus récents, le compilateur Intel supporte le multi-threading via OpenMP. Sinon, il y a High Performance Fortran.

    Mais il faut voir si le jeu en vaut la chandelle. Dans ton cas, je verrais bien deux executables, un purement calculatoire, et l'autre qui analyse les résultats du premier à la volée (eventuellement, il peut même lancer le premier exec).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Par défaut
    Salut,

    merci à tous pour vos contributions.
    Je vais, a priori, rester sur la solution suivante : (vu aussi la contrib qui suit)
    Citation Envoyé par Sylvain Bergeron Voir le message
    Il est hautement recommandé d'éviter de faire des accès sur un fichier avec 2 langages distincts en même temps
    Une interface fortran à GTK (*****) appelle des exe fortran en rendant la main, et les échanges se font par fichier interposé (car je souhaite faire du multi-processus mais pas multi-processeurs)
    .... en espérant que le développement de ***** perdure.

  6. #6
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    tu peux aussi via une utilisation judicieuse des pointeurs, utiliser uniquement la RAM et faire des pipes d'un processus à l'autre affin de ne pas utiliser de fichiers de transfers....

    sinon tu peux essayer une synchronisation de tes processus (via les fonction time de fortran95) et les faire ouvrir/fermer le fichier tampon de manière asynchrone pour pas qu'il y ait de problèmes de lectures simultanée

  7. #7
    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 : 84
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Citation Envoyé par genteur slayer Voir le message
    les faire ouvrir/fermer le fichier tampon de manière asynchrone pour pas qu'il y ait de problèmes de lectures simultanée
    Je pense que c'est la bonne solution. On peut peut-être l'améliorer encore en définissant un fichier sur une unité virtuelle logée non pas sur le disque dur, mais dans la RAM. Je crois me souvenir que ça existe.

    Jean-Marc Blanc

  8. #8
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    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 540
    Par défaut
    Citation Envoyé par afrancisco Voir le message
    en fortran pour les routines scientifiques et éventuellement C pour la GUI indépendante (GTK par ex pour un multi-plateformes). Les routines fortran lisent des infos de fréquence d'écriture de résultats (déterminée par l'utilisateur via la GUI) dans un fichier "in.dat" en entrée et les affichent dans un "out.dat" que la GUI lit (pour des barres de progression par exemple)
    est-ce que c'est possible de faire des fichier objets obj avec Fortran ?
    Ainsi on peut les lier avec un programme développé en C/C++.
    Pour les I/O je conseillerais de les développer en C/C++

  9. #9
    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 : 84
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    En principe, il n'y a aucun problème à appeler un sous-programme en Fortran depuis un programme en C ou inversement. Il faut seulement se rappeler que le Fortran stocke les tableaux colonne par colonne et le C ligne par ligne.

    Jean-Marc Blanc

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Par défaut
    Salut,
    Citation Envoyé par FR119492 Voir le message
    Je pense que c'est la bonne solution. On peut peut-être l'améliorer encore en définissant un fichier sur une unité virtuelle logée non pas sur le disque dur, mais dans la RAM. Je crois me souvenir que ça existe.
    Merci pour cette info, j'avoue humblement que je ne connaissais pas, je vais chercher de ce côté ; même pour autre chose ça peut servir (vitesse de communication)
    Pour les pointeurs et les pipes, hummm... là, c'est un niveau au-dessus du mien. Mais, je vais chercher aussi ; genteur slayer a piqué ma curiosité

Discussions similaires

  1. programme multithread fortran
    Par fortran83 dans le forum Fortran
    Réponses: 14
    Dernier message: 21/06/2011, 23h13
  2. Problème en interfacant C et Fortran
    Par karl3i dans le forum MFC
    Réponses: 6
    Dernier message: 23/05/2006, 16h10
  3. [Win32]App multithread
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 25/09/2003, 09h57
  4. [TP]Portage d'un encodeur MP3 Fortran en pur Pascal...
    Par Christophe Fantoni dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 04/07/2003, 17h34
  5. Multithreading sous HP Ux 11
    Par pykoon dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 18/10/2002, 23h36

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