Bien le bonjour,

Dans notre labo nous développons un solveur de mécanique des fluides en fortran. Je me suis décidé la semaine dernière à tenter de l'optimiser. J'ai donc commencé par le profiling: gprof, oprofile et Intel Vtune sont formels; une de mes subroutines consomment 20% du temps...alors qu'elle ne le devrait pas. donc j'ai un pb.

Sous oprofile ou sous Vtune on peut voir quelles sont les lignes de code consommant le plus de CPU. A notre grande surprise toutes les boucles DO servant à remettre à Zero les vecteurs consomment énormément de temps!!! Je fais par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
do inp=icst,icen
     su(inp)=d0
     pp(inp)=d0
enddo
ce qui est vraiment étrange c'est que qd je fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
do inp=icst,icen
     su(inp)=d0
enddo
do inp=icst,icen
     pp(inp)=d0
enddo
ces boucles DO n'apparaissent plus comme "hotspot" sous Vtune par exemple...à la place intel_new_memset (j'utilise intel fortran compiler) fait son apparition dans les subroutines consommant bcp de CPU.

Quelqu'un a une explication sur ce comportement. des liens ? une solution ?
Merci d'avance!