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". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#26 Le 15/04/2013, à 18:58

JBF

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

pires57 a écrit :

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.

Il me semble que nous sommes sous Linux ici et nous avons GCC pour C/C++ et Fortran (et plein d'autres langages). D'ailleurs GCC est aussi disponible sous MS-Windows.

JBF


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

Hors ligne

#27 Le 16/04/2013, à 03:38

grim7reaper

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

Mouais enfin gcc pour le Fortran (gfortran donc), ça me fait mal de l’admettre mais il est à la ramasse niveau support du standard (extension IEEE du Fortran 2003 pour citer une limitation que j’ai rencontré récemment) et des perf’ du code généré par rapport au compilo’ Intel (ifort, dispo aussi sous Windows d’ailleurs).
À tel point que récemment, j’ai voulu compiler un code Fortran avec gfortran, en mode debug pas de souci mais avec -O2 => internal error du compilo => SIGSEGV

Hors ligne

#28 Le 16/04/2013, à 05:43

JBF

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

grim7reaper a écrit :

Mouais enfin gcc pour le Fortran (gfortran donc), ça me fait mal de l’admettre mais il est à la ramasse niveau support du standard (extension IEEE du Fortran 2003 pour citer une limitation que j’ai rencontré récemment)

Peux-tu détailler ?

grim7reaper a écrit :

À tel point que récemment, j’ai voulu compiler un code Fortran avec gfortran, en mode debug pas de souci mais avec -O2 => internal error du compilo => SIGSEGV

Aucun problème de ce genre pour moi.
Quelle version de GCC utilises-tu ? La version courante est la 4.8.
Est-ce que tu as rapporté le bug ?

JBF


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

Hors ligne

#29 Le 16/04/2013, à 07:35

Tom_L

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

Salut à tous,

grim7reaper a écrit :

il est à la ramasse niveau support du standard (extension IEEE du Fortran 2003 pour citer une limitation que j’ai rencontré récemment) et des perf’ du code généré par rapport au compilo’ Intel

Effectivement, gfortran ne gère pas l'arithmétique IEEE, et c'est bien dommage car c'est presque sa seule lacune vis-à-vis du Fortran 2003.
Voir cette page pour la compatibilité Fortran 2003, et voir celle-là pour le support de Fortran 2008.

Le compilo Intel est sûrement un des meilleurs pour le fortran, tant en terme de support que de performances (en tout cas sur des procs Intel).


~~~~~~
Thomas.

Hors ligne

#30 Le 16/04/2013, à 09:09

grim7reaper

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

JBF a écrit :
grim7reaper a écrit :

Mouais enfin gcc pour le Fortran (gfortran donc), ça me fait mal de l’admettre mais il est à la ramasse niveau support du standard (extension IEEE du Fortran 2003 pour citer une limitation que j’ai rencontré récemment)

Peux-tu détailler ?

Et bien les extensions IEEE, je le dit dans mon message.
Ça va faire 10 ans que le standard est publié, et c’est toujours pas dispo’ (mais supporté par presque tout les autres compilo’)

JBF a écrit :
grim7reaper a écrit :

À tel point que récemment, j’ai voulu compiler un code Fortran avec gfortran, en mode debug pas de souci mais avec -O2 => internal error du compilo => SIGSEGV

Aucun problème de ce genre pour moi.

Remarque inutile. cheztoiçamarche, bien j’en suis heureux, cela dit je ne pense pas qu’on compile le même code donc ça me fait une belle jambe :]

JBF a écrit :

Quelle version de GCC utilises-tu ?

7.4.2, version fournie avec Ubuntu.

JBF a écrit :

Est-ce que tu as rapporté le bug ?

Non. Pas plus que je n’ai essayé d’installer la dernière version de GCC pour tester (peut-être que ça fonctionnerai en effet)
Pour la simple est bonne raison que c’est dans le cadre de mon boulot et qu’ils utilisent le compilo’ Intel et en sont très content.
La tentative compiler le code avec gfortran c’était un petit plus que j’ai voulu tester mais on me paye pas pour ça donc je ne peux pas me permettre d’y passer trop de temps non plus.



Tom_L a écrit :

Le compilo Intel est sûrement un des meilleurs pour le fortran, tant en terme de support que de performances (en tout cas sur des procs Intel).

Oui, auparavant ils utilisaient g95 (ou gfortran, je ne sais plus), et le passage à ifort leur a fait gagner au moins un facteur 5 en vitesse. C’est loin d’être négligeable.
Après bien sûr, c’est sur architecture Intel donc c’est normal que leurs compilo soit très performant. Sur une archi’ AMD la différence serait peut-être moins flagrante.



Édit : après, il ne faut pas se méprendre hein. Je ne dis pas que gfortran est à chier ou à jeter.
Il fait plutôt bien son boulot, mais c’est pas une référence non plus. On fait mieux.
Pour le C, gcc est dans le peloton de tête des meilleurs compilateurs, mais pour le Fortran, gfortran n’en fait pas partie.

Dernière modification par grim7reaper (Le 16/04/2013, à 09:21)

Hors ligne

#31 Le 16/04/2013, à 09:42

Nasman

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

Je pense que ton problème d'inversion de matrices 20000x20000 ne me semble pas réaliste pour une question de précision de calculs. Très vite les imprécisions des calculs qui font intervenir des trucs du genre axb-cxd vont te donner des trucs soit nuls soit très proches de zéro - et ce n'est pas du tout la même chose. Très vite une erreur - disont de 10**-10 feront que tu obtiendras des résultats très différents.
Sauf dans le cas de matrices très particulières, je pense que ton problème risque de donner des solutions très instables (du genre si une des mesures de départ est disons 2,456390345 et non pas 2,456390346 alors ton résultat sera complètement différent).


PC fixe et portable avec Precise 64 bits

Hors ligne

#32 Le 24/06/2013, à 10:40

kunos

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

merci à tous pour vos réponses et la discussion qui a suivi.

En ce qui concerne les matrices à inverser, elles sont à la fois creuses et pas creuses. En fait je colle deux matrices l'une à l'autre, l'une creuse et l'autre pas creuse... l'ensemble n'est donc pas creux. Toujours est-il que je n'arrive à inverser avec matlab que des matrices d'environ 12000*12000 et plus petites avec python. Je n'ai pas encore testé en C

D'ailleurs, quelle librairie en C conseillez vous pour ce type de calcul ?

Nasman a écrit :

Sauf dans le cas de matrices très particulières, je pense que ton problème risque de donner des solutions très instables (du genre si une des mesures de départ est disons 2,456390345 et non pas 2,456390346 alors ton résultat sera complètement différent).

est-ce que travailler avec un OS en 64 bit permettrait de résoudre en partie ce type de problème ?

Merci

Hors ligne

#33 Le 26/07/2013, à 15:50

Seym

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

kunos a écrit :

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 ?

Python vs Matlab : Ça dépend très fortement de du python que tu utilise :
-Python standard est plus lent que matlab (même avec scipy, numpy, et la vectorisation)
-Python avec la technologie MKL (on peut trouver ça dans "epd" de "entought", payant sauf si on est étudiant) à la même rapidité que matlab (vous trouverez des benchmarks qui le confirme).

C vs Fortran : les différences de rapidités sont négligeable, on ne choisit pas l'un ou l'autre pour sa rapidité.

Java, c'est pas fait pour la programmation scientifique.

Il faut aussi préciser que, que ce soit en Fortran, C ou python, c'est avec LAPACK que tu inversera tes matrices, et elle est écrite en Fortran.

Tom_L a écrit :
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.

Désolé, mais même en vectorisant et en utilisant le numpy et scipy avec MKL, j'avais moi même obtenu un facteur 3 ou 4 entre python et fortran sur des exemple simples.


Sinon pour ce qui est des compilos, faut arrêter de chipoter, gcc est très bien pour la plupart des utilisation (dans certains cas particulier même plus rapide que ceux d'Intel), mais si on a vraiment besoin du maximum de performance pour du code industriel, on peut passer aux compilateurs d'Intel

@Kunos : Pour tes matrices, en double précision ça devrait passer. Comme je l'ai dit au début de mon post, c'est LAPACK qu'il te faut.


Boycottez les baladeurs qui ne lisent pas l'ogg vorbis et le FLAC!

Hors ligne

Haut de page ↑