Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 23/03/2007, à 22:21

Tom_L

Programmation scientifique: Fortran ou C/C++ ?

Bonsoir tout le monde !

Mon projet de doctorat m'amènera dans quelques temps à développer un code de calcul scientifique. Avant de commencer à coder quoi que ce soit, je me pose la question du langage. Là où je bosse y'a deux "clans" big_smile : les pro-fortran et les pro-C/C++, chacun me disant à peu près:

Y'a pas photo, [le fortran] [le C] (rayer la mention inutile) c'est carrément plus rapide et plus facile...

Bref, je me permets de vous demander vote avis, afin de m'en faire un smile !

Voilà en gros ce dont j'ai besoin/ce que je veux faire:

- L'objectif principal est la rapidité de calcul (calcul matriciel, algébrique, complexes)...
- Le code devra être portable (Linux/Windows)
- Le code se pilotera à l'aide de fichiers textes et ligne de commande (pas d'interface)
- Utilisation de librairies scientifiques (éventuellement dans un langage différent)
- Manipulation de structures de données complexes (maillages adaptatifs, couplés et multi-échelles)
- Simplicité (bah ouai ! j'suis pas informaticien moi, mais je suis motivé pour apprendre)

En fait j'ai un certaine expérience du Fortran qui selon moi est très bien niveau rapidité et simplicité.. Par contre au niveau de l'interfaçage avec d'autre langage et de la gestion des données, j'ai pas trouvé ça super pratique...

Quant au C/C++, après avoir parcouru un manuel, compilé quelques programmes, je me suis rendu compte que certaine choses étaient beaucoup plus facilement implémentables. Cette facilité se traduit-elle par une perte de performances ?

Cela vaut-il le coup que j'apprenne le C/C++ ??

Tous les avis sont les bienvenus !!
Merci !

Dernière modification par Tom_L (Le 23/03/2007, à 22:25)


~~~~~~
Thomas.

Hors ligne

#2 Le 23/03/2007, à 23:00

trashie

Re : Programmation scientifique: Fortran ou C/C++ ?

Salut Tom_L,

Il y a effectivement une véritable guerre des clans entre Fortran et C/C++ en recherche scientifique.
De mon point de vu (de par ma petite expérience dans ce domaine), je dirais que chacun a effectivement ses avantages.

Cependant, il faut noter que :

- Fortran est un langage vectoriel (donc très bien généralement en sciences)
- Fortran est un peu vieux comme langage (avenir ?)
- Fortran possède de très (très) nombreuses librairies scientifiques ultra performantes
- Fortran s'interface bien avec le C/C++ (et autres)

- C/C++ est "jeune" comme langage et a encore pas mal d'avenir
- C/C++ possède de très nombreuses librairies scientifiques ultra performantes
- C/C++ s'interface bien avec Fortran (et autres)

Pour ce qui est de la simplicité, cela dépend beaucoup de la personne. Moi personnellement je trouve Frotran plus simple mais de nombreuses personnes pensent le contraire.

Pour la portabilité, c'est à peu près équivalent, mais il faut noter qu'il y a plus de compilateurs performants disponibles pour Windows en C/C++ (enfin je crois).

Enfin, en ce qui concerne la rapidité, cela dépend énormément de la manière de coder; de plus si on utilise les avantages du calcul vectoriel Fortran, il peut s'avérer plus rapide que C/C++. Et pour la manipulation de structure, c'est juste du codage, donc je dirai = pour les 2.

Voilà, je t'ai dis ce que je savais (et je ne pense pas t'avoir aidé beaucoup). Je pense juste que le meilleur langage est celui avec lequel tu te sens le plus à l'aise.

Mathieu

PS : les compilateurs Intel (C/C++ ou Fortran) sont excellents !


"Que d'hommes se pressent vers la lumière non pas pour voir mieux, mais pour mieux briller." [Friedrich Nietzsche]

Hors ligne

#3 Le 23/03/2007, à 23:20

JBF

Re : Programmation scientifique: Fortran ou C/C++ ?

Bonsoir,

réponse n°1 :
je crois que pour ce que tu veux faire, le langage à préférer est celui que tu maîtrises le mieux et pour lequel tu maîtrises bien les outils nécessaires : compilateur et ses finesses d'optimisation, make, debugger, profiler, bibliothèques scientifiques, etc.

réponse n°2 :
si tu préfères commencer une liste à partir du numéro 1 tu prends Fortran, si tu préfères commencer à partir du numéro 0 tu prends C/C++ ...

réponse n°3 :
donne toi des règles de codage propres qui te permettront de limiter les risques d'erreur et de relire ton code dans 2 ans et puis fais comme tu veux. Le reste n'est que littérature.

JBF


LibreOffice : http://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)

En ligne

#4 Le 24/03/2007, à 02:29

Luc Hermitte

Re : Programmation scientifique: Fortran ou C/C++ ?

Fortran a une énorme base de bibliothèques à son avantage. Souvent, j'ai l'impression que des sociétés préfèrent s'interfacer avec l'existant plutôt que de le réécrire.

C/C++ n'est pas un langage. En revanche, c'est un terme que j'utilise pour qualifier une forme de très mauvaise pratique du C++.

Il existe en C++ des bibliothèques qui facilitent les écritures de code (Blitz++, boost.ublas, ...).
Il doit y avoir des trucs pour le calcul réparti, mais j'avoue que je n'ai plus suivi depuis lontemps.

Si les perfs sont si citiques, préfère les compilos C++ commerciaux.

Tu peux aussi envisager des trucs comme matlab ou scilab pour le prototypage.

#5 Le 24/03/2007, à 02:49

sonal

Re : Programmation scientifique: Fortran ou C/C++ ?

Tom_L a écrit :

Tous les avis sont les bienvenus !!

Bonjour,

as tu pensé à Matlab ?


Sonal

Patience et longueur de temps, font plus que force, ni que rage

Hors ligne

#6 Le 24/03/2007, à 11:45

trashie

Re : Programmation scientifique: Fortran ou C/C++ ?

Matlab ne permet pas de faire du calcul scientifique, dans le sens où pour les gros programmes cela mettrait une temps bien supérieur à du code compilé et optimisé ! Et là justement cela rentre en contradiction avec le critère de rapidité voulu.

Matlab est très bien pour faire de l'analyse (de même qu'IDL, scilab...)

Mais si la rapidité est si crucial dans ton projet, je te conseille de suivre quelques cours (par un prof ou sur des polys/livre) de méthodes numériques (pour éviter des sources d'erreurs parfois difficiles à détecter, pour faire le moins d'itérations possibles, pour bien optimiser le programme, pour ne pas casser la chaîne de prédilection du proceseur...)

Mathieu

Dernière modification par trashie (Le 24/03/2007, à 11:48)


"Que d'hommes se pressent vers la lumière non pas pour voir mieux, mais pour mieux briller." [Friedrich Nietzsche]

Hors ligne

#7 Le 24/03/2007, à 14:44

Tom_L

Re : Programmation scientifique: Fortran ou C/C++ ?

Bonjour, et tout d'abord merci pour vos réponses !

@Trashie & JBF : merci pour toute ces infos sur les deux langages. Je trouve aussi le Fortran globalement plus simple (mais je connais peu le C). Et il est vrai que je suis à l'aise en Fortran...

@Luc Hermitte : Les bibliothèques sont très nombreuses dans les deux langages (notemment les "Numerical recipes", existant dans les deux langages). Et oui, je suis d'accord que C/C++ n'est pas un langage, mais bien deux. Mais c'est quand même similaire. Perso j'utilise ce terme car je connais peu les différences (hormis la POO).

@sonal : merci pour l'idée, mais Matlab n'est pas envisageable. Matlab est certe pratique et rapide pour tester des algos et surtout pour le tracé de fonction 2D/3D, mais comparé à un langage compilé c'est extremement lent... Je pense que je me servirai de Matlab (ou Scilab, tant qu'a faire, autant rester dans le libre smile) pour l'affichage ou pour tester des solutions...

Je vais essayer de trouver de la doc sur les méthodes numériques... Je vais pour l'instant rester sur du Fortran, en essayant de "traduire" quelques programmes en C, histoire de voir ce que ça donne...

Encore merci à tous pour vos réponses !


~~~~~~
Thomas.

Hors ligne

#8 Le 24/03/2007, à 15:35

Luc Hermitte

Re : Programmation scientifique: Fortran ou C/C++ ?

Les NR et les BLAS ne sont que le b a ba.
Il y a une énorme différence avec bien plus de choses qui existent déjà en Fortran qu'en C ou C++.
Si tu n'as pas besoin de cette base d'existant, Fortran devient moins "nécessaire" -- bien que des interfaçages soient possibles.

PS: le C++, c'est bien plus que du C avec des classes. Les choses qu'il apporte en plus permettent de simplifier grandement la gestion de la mémoire.

#9 Le 24/03/2007, à 17:31

JBF

Re : Programmation scientifique: Fortran ou C/C++ ?

PS: le C++, c'est bien plus que du C avec des classes. Les choses qu'il apporte en plus permettent de simplifier grandement la gestion de la mémoire.

Dans le même ordre d'idée, Fortran c'est bien plus que le Fortran 77. Ne pas oublier les nouvelles fonctions intrinsèques (kind, date_and_time, cputime, etc.), la manipulation globale des tableaux, les types dérivés (très utiles pour manipuler des structures complexes), les modules pour remplacer les commons et l'allocation dynamique des tableaux. Et les pointeurs pour ceux qui aiment.

JBF


LibreOffice : http://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)

En ligne

#10 Le 24/03/2007, à 22:57

JoelS

Re : Programmation scientifique: Fortran ou C/C++ ?

Ca fait un bail que je ne suis plus dans l'informatique scientifique que j'ai quitté en 1999, mais à cette époque je me souviens que les compilos fortran étaient vraiment mauvais par rapport aux compilos C et C++ sur les plateformes Windows. Bien sur sous Unix c'était le contraire. Je me souviens que dans certains cas, on obtenait même de meilleurs résultats en transformant automatiquement le fortran vers du C puis en compilant le C sur les machines windows.

Bon à l'époque, les bons compilos F90 n'étaient pas encore vraiment disponibles. Ca a peut être changé. Mais si tu vises une portabilité et malgré tout des performances équivalentes, c'est un point à ne pas négliger.

Je me souviens aussi qu'une étude américaine prétendait à l'époque qu'on obtenait du code très performant en C++ même sur Unix en repensant les algos et surtout en prenant un approche de type "template" lors de la réécriture du code (c'est le terme en C++ je crois). Cette approche permet au compilateur C++ de générer le code nécessaire en fonction de la définition du template, et donc d'avoir du code optimisé et aussi d'éviter les appels aux tables "d'indirection", gourmand en temps.

Bon je sais pas ce que ça a donné. Si quelqu'un peut confirmer ou infirmer ça, ça m'intéresse à titre nostalgique :-)

Hors ligne

#11 Le 24/03/2007, à 23:08

Luc Hermitte

Re : Programmation scientifique: Fortran ou C/C++ ?

Je demande si les benchs de ce dont tu parles ne seraient pas sur le site de Blitz++ -- que j'ai déjà cité.

Depuis, de plus en plus de compilos supportent les expression-template ; le but étant l'élimination des temporaires et autres copies inutiles. Pour les tables d'indirection, je ne vois pas le rapport -- dans le contexte du calcul scientifique.

Aujourd'hui, je me demande si les perfs optimales (tout en supportant une expressivité se rapprochant plus des maths qu'un saxpy) ne sont pas atteintes par une encasulation d'ATLAS dans boost.uBLAS, du moins sur les procs intel.

#12 Le 25/03/2007, à 19:40

Pistolero

Re : Programmation scientifique: Fortran ou C/C++ ?

Tom_L a écrit :

Tous les avis sont les bienvenus !!

Salut,
pour le calcul scientifique j'utilise python, un bon équilibre entre un langage de prototypage (Octave/Matlab) et un langage rapide (C++). D'accord ce n'est pas aussi rapide que le C, mais les nombreuses bibliothèques SciPy, NumPY, etc. en fait un langage très performant. Il permet de travailler en console car c'est un langage interprété.

Quelque mots sur le choix d'un langage :
Il faut faire attention à ne pas confondre faisabilité (recherche) et intégration (développement). Pendant une thèse le but n'est pas de passer ton temps à programmer dans tous les sens (surtout que tu n'es pas informaticien), ton objectif est théorie, calculs, méthode, algorithmie, ... Je sais que les résultats doivent être pondue rapidement, mais il vaut mieux attendre une heure de plus un résultat que de passer trois moins sur un prog pour au final ne gagner que quelques minutes (je sais j'exagère un peu tongue). Le boulot d'implémentation c'est le boulot d'ingénieur pas de chercheur. Alors choisie un langage qui te permettes de concilier la performance sans que tu perdes ton temps en programmation, elle n'a aucune valeur ajouté dans une thèse.

Bon courage wink.

Dernière modification par Pistolero (Le 25/03/2007, à 19:41)


Desole pour les accents, je suis esclave d'un qwerty.

Hors ligne

#13 Le 26/03/2007, à 20:51

Petit Lepton

Re : Programmation scientifique: Fortran ou C/C++ ?

Bonsoir à tous,
je vais me permettre d'intervenir. Je suis scientifique, je termine une thèse de physique avec une part importante de numérique : j'ai écrit un code de calcul parallèle pour les plasmas. Et ce code, je l'ai écrit en Fortran 90. C'est relativement facile d'utilisation, la gestion des tableaux est extrêmement pratique.
Maintenant, il semble que le milieu scientifique soit en train de basculer petit à petit vers le C++ et la programmation orientée objet. Le CERN, par exemple, utilise le C++ depuis un bout de temps.
Tu peux toujours développer la double compétence, cela ne fait pas de mal!

Hors ligne

#14 Le 05/05/2007, à 11:32

Tom_L

Re : Programmation scientifique: Fortran ou C/C++ ?

Bonjour à tous,

Après quelques semaines, je pense avoir trouvé une solution efficace: Python+Fortran:

- Python: pour tout ce qui est gestion de données, appels de routines.
- Fortran: pour faire tourner les grosses routines numériques

Je fait l'appel des routines Fortran avec F2PY, ça marche nickel, et j'affiche le résultat avec matplotlib (module de tracés python, syntaxe proche de Matlab).

En bref, je peux profiter de la souplesse de Python et de la puissance de calcul de Fortran... Jusque là, ça marche nickel !! Le tout s'intègre très bien dans Komodo Edit, que du bonheur...

Merci à ceux qui m'ont aidé à voir plus clair. Et pour ceux qui serait dans le même cas que moi, je vous encourage à tester cette solution, c'est vraiment simple, et très efficace...

Dernière modification par Tom_L (Le 05/05/2007, à 11:32)


~~~~~~
Thomas.

Hors ligne

#15 Le 07/11/2008, à 16:34

s@mson

Re : Programmation scientifique: Fortran ou C/C++ ?

Bonjour à tous,

J'utilise la même solution, Python+Fortran, avec f2py.

Je viens actuellement d'installer python-numpy sur intrepid (f2py fait partie de python-numpy). Pour que f2py fonctionne, il faudra également installer le paquet python-dev. (je crois que c'est la même chose sous hardy).

Dernière modification par s@mson (Le 07/11/2008, à 16:34)

Hors ligne

#16 Le 09/11/2008, à 03:50

elmer_tandem

Re : Programmation scientifique: Fortran ou C/C++ ?

Comme dit plus haut, pour ce qui est de la performance, y a pas vraiment de langage qui se distingue (voir l'exemple de blitz++ ecrit en C++ et qui depasse le fortran dans certains cas). Les compilos actuels font de bonnes optimisations en general (ok, pour les puristes, on peut verifier a la mano si le code produit est vraiment optimal), et il te reste a ecrire un code propre sans trop de fioritures, comme d'habitude en calcul scientifique.

Tu dis travailler avec des maillages adaptatifs, soit pas de problemes que ce soit en fortran ou c ou c++, mais quelles sont les bibliotheques avec lesquelles tu dois interfacer ? Si elles sont en C++, alors il est preferable de construire ton code en C++ aussi, ne serai ce que pour la simplicite d'appel des fonctions/methodes de la bibli. en question.

Si les bibli. que tu utilises, pour les matrices/vecteurs/maillages sont _toutes_ en fortran, alors j'aurai pour ma part tendance a programmer le truc en fortran aussi. Non pas que Fortran soit legendairement plus optimise pour ce qui est des operations sur les tableaux (ce qui est vrai) mais simplement pour la simplicite de mise en oeuvre.

De toute maniere, comme dit plus haut, le plus simple est peut etre de partir de ce que tu connais.

A propos, tu dois coder quoi ? Elements/Volumes finis ? Quelles bibli. dois tu utiliser ?

Bon codage.

A+.

Bob.

#17 Le 25/07/2009, à 23:30

rais

Re : Programmation scientifique: Fortran ou C/C++ ?

Bonjour Tom.
vous avez cité le maillage adaptatif. pouvez vous m'aidez à avoir un simple programme sur le FORTRAN. je prépare actuellement mon mémoire et je n'arrive pas à développer ce genre de programme et surtout comment faire pour tracer les carrés (maillage).
Je compte beaucoup sur votre aide et celle des autres.
Merci d'avance.

#18 Le 26/07/2009, à 13:24

Le Farfadet Spatial

Re : Programmation scientifique: Fortran ou C/C++ ?

Salut à tous !

rais a écrit :

vous avez cité le maillage adaptatif. pouvez vous m'aidez à avoir un simple programme sur le FORTRAN. je prépare actuellement mon mémoire et je n'arrive pas à développer ce genre de programme et surtout comment faire pour tracer les carrés (maillage).

Hum... Exhumer un sujet vieux de deux ans, pour poser une question qui n'est pas vraiment la même plutôt que de créer un nouveau sujet, ce n'est pas terrible.

   Cela dit, je ne comprends pas trop la question. Est-ce que tu te rends compte que l'adaptation de maillages est encore un sujet de recherche ? Te rends-tu compte qu'un code différences/éléments/volumes finis ne se fait pas sur le pouce ? Ta demande n'a rien de simple.

   À tout le moins, je peux te donner ces références :

      Introduction au calcul numérique
      Brigitte LUCQUIN et Olivier PIRONNEAU
      Masson

      Simulation numérique en C++
      Ionut DANAILA, Frédéric HECHT et Olivier PIRONNEAU
      Dunod

      Maillages, applications aux éléments finis
      Pascal Jean FREY et Paul-Louis GEORGE
      Hermes

   À bientôt.

                                                                                                                                 Le Farfadet Spatial


L'antre du farfadet :
http://le.farfadet.spatial.free.fr/
Textes, musiques et peintures

Hors ligne

#19 Le 26/07/2009, à 13:42

freaxmind

Re : Programmation scientifique: Fortran ou C/C++ ?

Je te recommanderais l'utilisation de python et de psyco, une librairie simple à utiliser mais qui augmente considérablement la vitesse de python pour les process i386.

Il dispose de nombreuse librairie, il est très simple à utiliser et à maintenir. C'est très flexible, si pour toi cela compte. Et c'est très portable.

Le seul avantage du c ou fortran pour moi c'est la rapidité, mais je pense qu'avec la puissance des machines de nos jours, cela est négligable. Avoir la capacité de se retourner facilement est importante.

Hors ligne

#20 Le 26/07/2009, à 16:47

Le Farfadet Spatial

Re : Programmation scientifique: Fortran ou C/C++ ?

Salut à tous !

freaxmind a écrit :

Le seul avantage du c ou fortran pour moi c'est la rapidité, mais je pense qu'avec la puissance des machines de nos jours, cela est négligable. Avoir la capacité de se retourner facilement est importante.

Dites, les Python-maniaques, il faut arrêter de mettre toutes les sauces sur le tapis --- une désopilante allusion culturelle se trouve dans cette phrase, sauras-tu la trouver ?

   Je sais que c'est difficile à admettre, mais il n'existe pas de plus meilleur langage du monde parfait pour tout et ta femme revient dans les 36 chronos. Chacun a son domaine d'application. Python est un excellent langage, mais il est comme tous les langages : il a ses intérêts et ses défauts.

   Soyons clairs : il n'est pas possible, même avec la puissance des processeurs actuels, de faire un code raisonnable d'éléments finis en Python.

   Cela dit, je rappelle que Tom-L a posé sa question le 23 mars 2007. Espérons pour lui et l'avancement de sa thèse qu'il a déjà fait son choix...

   À bientôt.

                                                                                                                                 Le Farfadet Spatial


L'antre du farfadet :
http://le.farfadet.spatial.free.fr/
Textes, musiques et peintures

Hors ligne

#21 Le 13/04/2013, à 00:49

kunos

Re : Programmation scientifique: Fortran ou C/C++ ?

Salut à tous

Je ressorts ce post des cartons pour l'élargir un peu : je n'arrive pas à trouver de comparatifs de performance entre  C / Fortran  / Java / Python / matlab. Je maitrise très bien matlab et compte passer à du libre, tout en améliorant les performances du code et en maintenant les possibilité de visualiser facilement des données.

[*][/*] j'aurai besoin d'inverser de très grosses matrices (20000 * 20000 ou plus), et j'aimerai savoir si utiliser du C ou du Java plutôt que du Python apporterait un gain de temps appréciable. 
[*][/*] S'il est vraiment nécessaire de passer à un langage  non interprété, existe-t-il un équivalent de f2py pour le C dans python ?

à Tom_L : quels sont tes retours d'expérience 6 ans après ?

Hors ligne

#22 Le 13/04/2013, à 18:01

JBF

Re : Programmation scientifique: Fortran ou C/C++ ?

Qu'est-ce que tu appelles "inverser des matrices" ? S'agit-il de calculer la matrice inverse ou bien de résoudre des systèmes linéaires ?
Remarque : une matrice 20.000 x 20.000 ça fait 400.000.000 de valeurs ; si on compte 8 octets par nombre en virgule flottante ça fait 3,2 Go ...
--> question : est-ce que tes matrices ont une structure particulière ?

Pour répondre globalement à ta question : oui, un code compilé a toutes les chances d'être plus rapide qu'un code interprété. Et pour faire du calcul intensif il n'y a pas vraiment plus efficace que C / C++ et Fortran.

JBF


LibreOffice : http://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)

En ligne

#23 Le 13/04/2013, à 21:36

nicolas66

Re : Programmation scientifique: Fortran ou C/C++ ?

La question de JBF sur la structure de tes matrices est importante. Par exemple, si tes matrices sont creuses, tu peux utiliser des structures de données plus économes en mémoire.


"The computer was born to solve problems that did not exist before." (B. Gates)

Hors ligne

#24 Le 15/04/2013, à 12:44

Tom_L

Re : Programmation scientifique: Fortran ou C/C++ ?

Salut à tous,

kunos a écrit :

je n'arrive pas à trouver de comparatifs de performance entre  C / Fortran  / Java / Python / matlab.

Voir cette page qui regroupe un certain nombre de benchmarks sur plusieurs machines/plusieurs langages de programmation. Pas mal d'information à en tirer...

kunos a écrit :

j'aurai besoin d'inverser de très grosses matrices (20000 * 20000 ou plus), et j'aimerai savoir si utiliser du C ou du Java plutôt que du Python apporterait un gain de temps appréciable.

JBF a écrit :

oui, un code compilé a toutes les chances d'être plus rapide qu'un code interprété, c'est sûr. Et pour faire du calcul intensif il n'y a pas vraiment plus efficace que C / C++ et Fortran.

Je ne suis qu'à moitié d'accord. De façon générale, du code complié sera plus rapide que de l'interprété. Sauf que dans ce cas précis de résolution de systèmes linéaires, Python fait appel à la librairie LAPACK...écrite en Fortran. Il n'y a donc aucun intérêt à recoder en langage compilé. Si par contre tu as des besoins très spécifiques auxquels aucune librairie existante ne réponds, alors oui, recoder en langage compilé te permettra de gagner du temps.

Je pense que le choix du langage impose de se poser les questions suivantes (entre autre) :
[*]Qu'est-ce que je veux faire? Question évidente à priori, mais ca n'est pas forcément si simple : quel problème résoudre ? quelle précision ? nombre réels/complexe? est-ce que je serai amené à faire évoluer les besoins par la suite?[/*]
[*]Est-ce qu'il existe des outils permettant de répondre à la problématique? Dans 95% des cas il existe une/des librairies permettant de répondre au problème posé. Lorsque c'est le cas il ne faut pas chercher à réinventer la roue. Pour des librairies génériques voir ici et ici. Ce ne sont que deux exemples parmi d'autres, si tu me donnes plus de détails sur ton problème je pourrai peut être t'orienter vers d'autres outils...[/*]
[*]Si un outil répond aux besoins en terme de fonctionnalités/performances : est-t-il robuste (bugs?), maintenu, la communauté d'utilisateur est-t-elle suffisante pour remonter et corriger les bugs?[/*]

Si je ne trouve pas d'outil :
[*]Quel gain puis-je attendre en recodant en Fortran/C++? Python/Matlab utilisent du code compilé pour les parties critiques : résolution de systèmes linéaires => LAPACK, algèbre linéaire =>BLAS, FFT => fftw (il y en a bcp d'autre). Dans ces cas là, le gain potentiel est nul ou très faible...[/*]
[*]Si le gain est potentiellement important, ne vais-je pas passer plus de temps à l'apprentissage du langage qu'à "calculer"? Autant le Fortran est assez facile d'accès, autant le C++ nécessite un investissement non négligeable.[/*]

Quelques remarques complémentaires après quelques années d'utilisation intensive d'outils de calcul scientifique en tout genre :
[*]Il faut prendre le temps de bien définir son problème. On a tendance à passer rapidemment cette étape, mais c'est primordial : c'est les besoins qui définissent les outils et non l'inverse! Et ce n'est pas après 1 an de boulot sur une appli scientifique que l'on change de noyau de calcul parcequ'on se rend compte qu'il ne répond pas aux besoins.[/*]
[*]Ne pas réinventer la roue ; prendre le temps de chercher et d'évaluer les outils existants. Dans bon nombre de cas il existe des solutions "sur étagère"[/*]
[*]Si j'ai des besoins spécifiques qui nécessitent l'utilisation d'un langage compilé : limiter son utilisation aux parties critiques. Passer 2 semaines sur une section de code qui prend 1 seconde n'a pas de sens. Ca parait évident, mais quand on se prend au jeu de l'optimisation, on tombe vite dans ce genre de travers... De plus Python/Matlab sont des outils fantastiques pour le pré/post processing et visualisation. Quand on voit ce qu'il faut pour tracer une simple courbe en Fortran/C++, on revient vite à Python...[/*]
[*]F2PY et SWIG sont de très bons outils et permettent d'allier le meilleur des 2 mondes : la flexibilité de Python pour le pré/post-processing, la rapidité de Fortran/C++ pour les parties critiques[/*]

Voilà, je pourrai en parler des heures durant mais je m'arrête là.

En espérant que ça aide,

Dernière modification par Tom_L (Le 15/04/2013, à 14:26)


~~~~~~
Thomas.

Hors ligne

#25 Le 15/04/2013, à 18:00

pires57

Re : Programmation scientifique: Fortran ou C/C++ ?

Personnellement je prendrais du C pour de la portabilité, fortran c'est bien mais les compilo fortran sous Win c'est bof ... Ensuite je prendrais le C simplement parce que c'est le langage que je maitrise le mieux. A toi de te faire une idée mais ce que tu doit te dire c'est quel langage je maîtrise le mieux.


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.

En ligne

Haut de page ↑