Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 05/02/2010, à 15:54

Ph3nix_

Re : De l'utillité de la POO en programmation scientifique

Luc Hermitte a écrit :

Pas vraiment non.
Le pipeline, c'est quand tu enchaines des choses à la queue-leu-leu sans attendre que la chose précédente ait fini d'être traitée. -> http://fr.wikipedia.org/wiki/Pipeline_%28informatique%29

Si c'est a la queue-leu-leu c'est pas un pipeline.
C'est donc si compliquer a comprendre ?
Code C++:

for (int i=0;i++;i<N)
          tab[i]=0;

Ensuite compliation du code avec les options adaptés:
Le code sera interprété ainsi sur une machine bi-processeur:

for (int i=0;i++;i<N/2) {
          tab[2i]=0;
          tab[2i+1]=0;
}

A chaque itération:
le processeur 1 éxécutera: tab[2i]=0;
le processeur 2 éxécutera: tab[2i+1]=0;
en même temps, les instructions n'ont aucune dépendance entre elle cela est donc tout a fait possible

La complexité passe de O(N) a O(N/2)
Cette exemple est le plus simple, car il n'y a pas de dépendance entre chaque itération contrairement a une instruction comme tab[i]+=tab[i-1] (par exemple)


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

#27 Le 05/02/2010, à 16:21

Luc Hermitte

Re : De l'utillité de la POO en programmation scientifique

Tu confonds pipeliner avec paralléliser sur plusieurs proc/coeurs.
Le pipelining est à rapprocher du déroulage de boucles: on exploite le pipeline DU processeur pour réaliser plus vite des actions. Les actions sont démarrées les unes après les autres si tu préfères, mais pas en parallèle.

Hors ligne

#28 Le 05/02/2010, à 17:28

Ph3nix_

Re : De l'utillité de la POO en programmation scientifique

en effet, tu as raison.
Je m'en était même pas rendu compte, il faudra donc veuiller a remplacer pipeline par parallèle dans mon explication smile


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

#29 Le 06/02/2010, à 17:12

xamaco

Re : De l'utillité de la POO en programmation scientifique

Pour en revenir à la question originelle, la programmation objet n'est pas une panacée. Elle est très efficace quand on programme des éléments réutilisables. Sinon, pour une solution ad-hoc (résoudre un problème donné rapidement sans trop se soucier de la lisibilité pour des d'éventuelles tierce personnes), il y a des solutions plus efficaces. Pour les scientifiques, je pense que les langages fonctionnels peuvent être fantastiques (l'ancêtre lisp, scheme, ml, ocaml, ...).

Hors ligne

#30 Le 07/02/2010, à 17:56

Le Farfadet Spatial

Re : De l'utillité de la POO en programmation scientifique

Salut à tous !

no_spleen a écrit :

Le Farfadet Spatial

Désolé, j'ai pris une semaine de vacances -- la première depuis plus d'un an, alors j'ai décidé de m'isoler de toutes tentations -- et je viens à peine de lire ton intervention.

no_spleen a écrit :

Quels sont les principaux écueils à éviter pour obtenir les meilleurs performances possibles en c++ ?

Vaste question, qui nous ramène au fait que C++ nécessite un apprentissage assez long.

   Déjà, il y a tous les écueils à éviter en général en C++, principalement celui qui consiste à penser que C++ est une sur-couche de C. Notamment, il vaut mieux bannir les conversions de type C et les macro-commandes à la C. Tant qu'il n'y a pas à assurer la compatibilité avec un code C, il est préférable de ne pas utiliser la bibliothèque standard C, mais la bibliothèque standard C++. En cas d'utilisation de la bibliothèque standard C, le mieux est d'utiliser son encapsulation dans l'espace de nommage standard -- d'ailleurs, il vaut mieux utiliser les espaces de nommages. Également, en C++, on utilise beaucoup moins les pointeurs qu'en C. Pour un code d'éléments finis, en choisissant bien ces bibliothèques, il est parfaitement possible de se passer totalement des pointeurs. Enfin, C++ n'est pas Java et, notamment pour des codes aux éléments finis, il vaut mieux éviter de tout mettre dans des classes.

   Cela dit, il y aurait beaucoup à dire à ce sujet. Je dois reconnaître que le Danaila et al. ne présente pas toujours un très bon style de programmation C++, raison pour laquelle il est bon de lire également le Stroustrup. Je prépare également un document sur la programmation C++, fortement influencé par ma pratique de la programmation scientifique. Je compte le mettre en ligne avant qu'il ne soit fini, mais c'est encore un peu tôt pour l'instant.

no_spleen a écrit :

Question plus précise, qu'utilises-tu comme librairie pour la gestion de tes matrices, PETSc ?

Pour commencer et également pour réaliser de bons codes, celles qu'a donné Omc sont très bien. Elles sont performantes, se basent sur de l'acquis et ont une bonne approche de C++.

xamaco a écrit :

la programmation objet n'est pas une panacée

J'ai déjà écrit très exactement cela ailleurs sur le forum et je te remercie de me donner l'occasion de dire que je suis entièrement d'accord.

xamaco a écrit :

Pour les scientifiques, je pense que les langages fonctionnels peuvent être fantastiques (l'ancêtre lisp, scheme, ml, ocaml, ...).

J'ai également souvent défendu les langages fonctionnels ailleurs sur ce forum, donc je suis plutôt d'accord. D'ailleurs, je serais plus heureux si j'utilisais quotidiennement un langage fonctionnel plutôt que C++. Cependant, je ne connais pas de langage fonctionnel utilisable aujourd'hui pour réaliser un code aux éléments finis raisonnable.

   Sinon, tout pareil que Luc HERMITTE (pour changer).

   À bientôt.

                                                                                                                                 Le Farfadet Spatial

Hors ligne