OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
timer_interf.F File Reference
#include "implicit_f.inc"
#include "chara_c.inc"
#include "spmd.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "units_c.inc"
#include "task_c.inc"
#include "timerr_c.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine open_interf_time (ispmd)
subroutine close_interf_time ()
subroutine int_startime (this, event)
subroutine int_stoptime (this, event)
subroutine printime_interf (intbuf_tab, ipari, intlist, nbintc, treshold)

Function/Subroutine Documentation

◆ close_interf_time()

subroutine close_interf_time

Definition at line 56 of file timer_interf.F.

57 USE metric_mod
58C-----------------------------------------------
59C I m p l i c i t T y p e s
60C-----------------------------------------------
61#include "implicit_f.inc"
62C-----------------------------------------------
63C D u m m y A r g u m e n t s
64C-----------------------------------------------
65 CLOSE(unit=file_id)
integer, parameter file_id
Definition metric_mod.F:67

◆ int_startime()

subroutine int_startime ( type(metric_struct_) this,
integer event )

Definition at line 77 of file timer_interf.F.

78C-----------------------------------------------
79C M o d u l e s
80C-----------------------------------------------
81 USE metric_mod
82C-----------------------------------------------
83C I m p l i c i t T y p e s
84C-----------------------------------------------
85#include "implicit_f.inc"
86C-----------------------------------------------
87C M e s s a g e P a s s i n g
88C-----------------------------------------------
89#include "spmd.inc"
90C-----------------------------------------------
91C D u m m y A r g u m e n t s
92C-----------------------------------------------
93 TYPE(METRIC_STRUCT_) :: THIS
94 INTEGER :: EVENT
95C-----------------------------------------------
96C L o c a l V a r i a b l e s
97C-----------------------------------------------
98 DOUBLE PRECISION :: tic
99
100#ifdef MPI
101 tic = mpi_wtime()
102 this%TIME(event,2)=tic
103#else
104 this%TIME(event,1:2)=0.0d0
105#endif
106 RETURN
double precision function mpi_wtime()
Definition mpi.f:561

◆ int_stoptime()

subroutine int_stoptime ( type(metric_struct_) this,
integer event )

Definition at line 117 of file timer_interf.F.

118C-----------------------------------------------
119C M o d u l e s
120C-----------------------------------------------
121 USE metric_mod
122C-----------------------------------------------
123C I m p l i c i t T y p e s
124C-----------------------------------------------
125#include "implicit_f.inc"
126C-----------------------------------------------
127C M e s s a g e P a s s i n g
128C-----------------------------------------------
129#include "spmd.inc"
130C-----------------------------------------------
131C D u m m y A r g u m e n t s
132C-----------------------------------------------
133 TYPE(METRIC_STRUCT_) :: THIS
134 INTEGER :: EVENT
135C-----------------------------------------------
136C L o c a l V a r i a b l e s
137C-----------------------------------------------
138 DOUBLE PRECISION :: toc
139C
140#ifdef MPI
141 toc = mpi_wtime()
142 this%TIME(event,1)=this%TIME(event,1) + (toc - this%TIME(event,2))
143#else
144 toc = 0.0d0
145 this%TIME(event,1)=this%TIME(event,1) + (toc - this%TIME(event,2))
146#endif
147 RETURN

◆ open_interf_time()

subroutine open_interf_time ( integer ispmd)

Definition at line 28 of file timer_interf.F.

29 USE metric_mod
30C-----------------------------------------------
31C I m p l i c i t T y p e s
32C-----------------------------------------------
33#include "implicit_f.inc"
34#include "chara_c.inc"
35
36C-----------------------------------------------
37C D u m m y A r g u m e n t s
38C-----------------------------------------------
39 INTEGER :: ISPMD
40C-----------------------------------------------
41 CHARACTER FILNAM*100
42 CHARACTER PROCNAM*4
43C-----------------------------------------------
44 WRITE(procnam,'(I4.4)')ispmd+1
45 filnam=rootnam(1:rootlen)//'_'//chrun//'_'//procnam//'.int'
46 OPEN(unit=4999,file=FILNAM(1:ROOTLEN+15),action='write',
47 . ACCESS='sequential',
48 . FORM='formatted',STATUS='unknown')

◆ printime_interf()

subroutine printime_interf ( type(intbuf_struct_), dimension(ninter), intent(in) intbuf_tab,
integer, dimension(npari,ninter), intent(in) ipari,
integer, dimension(nbintc), intent(in) intlist,
integer, intent(in) nbintc,
double precision treshold )

Definition at line 159 of file timer_interf.F.

160C-----------------------------------------------
161C M o d u l e s
162C-----------------------------------------------
163 USE intbufdef_mod
164 USE metric_mod
165C-----------------------------------------------
166C I m p l i c i t T y p e s
167C-----------------------------------------------
168#include "implicit_f.inc"
169C-----------------------------------------------
170C C o m m o n B l o c k s
171C-----------------------------------------------
172#include "com01_c.inc"
173#include "com04_c.inc"
174#include "units_c.inc"
175#include "task_c.inc"
176#include "timerr_c.inc"
177#include "param_c.inc"
178C-----------------------------------------------
179C D u m m y A r g u m e n t s
180C-----------------------------------------------
181 INTEGER, INTENT(IN) :: NBINTC
182 INTEGER, INTENT(IN) :: INTLIST(NBINTC),IPARI(NPARI,NINTER)
183 TYPE(INTBUF_STRUCT_),DIMENSION(NINTER), INTENT(IN) :: INTBUF_TAB
184 DOUBLE PRECISION :: TRESHOLD
185C-----------------------------------------------
186C L o c a l V a r i a b l e s
187C-----------------------------------------------
188 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: SENDBUF
189 DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: RECVBUF
190 INTEGER :: I,J,N,P
191 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: RATIO
192 DOUBLE PRECISION,DIMENSION(:,:,:), ALLOCATABLE :: SUMMARY
193 DOUBLE PRECISION ::PMAX,TOTAL_TIME
194 INTEGER :: NB_PRINTED_INTERF
195
196
197
198 IF(nspmd > 0) THEN
199 ALLOCATE(sendbuf(size_metric * nbintc))
200 sendbuf(1:size_metric*nbintc) = 0
201 IF(ispmd == 0) THEN
202 ALLOCATE(recvbuf(size_metric*nbintc,nspmd))
203 recvbuf(1:size_metric*nbintc,1:nspmd) = 0
204 ALLOCATE(ratio(nbintc))
205 ALLOCATE(summary(size_metric,3,nbintc))
206 ELSE
207 ALLOCATE(recvbuf(1,1))
208 ALLOCATE(ratio(1))
209 ALLOCATE(summary(1,1,1))
210 ENDIF
211
212 DO i = 1,nbintc
213 n = intlist(i)
214 j = (i-1) * size_metric
215 sendbuf(j + i_main_crit_tri)=intbuf_tab(n)%METRIC%TIME(i_main_crit_tri,1)
216 sendbuf(j + i_main_tri )=intbuf_tab(n)%METRIC%TIME(i_main_tri,1)
217 sendbuf(j + i_main_opt_tri )=intbuf_tab(n)%METRIC%TIME(i_main_opt_tri,1)
218 sendbuf(j + i_main_forces )=intbuf_tab(n)%METRIC%TIME(i_main_forces,1)
219 sendbuf(j + i_noint )=dble(intbuf_tab(n)%METRIC%NOINT )
220 sendbuf(j + i_multimp )=dble(intbuf_tab(n)%METRIC%MULTIMP )
221 sendbuf(j + i_nsn )=dble(intbuf_tab(n)%METRIC%NSN )
222 sendbuf(j + i_nsnr )=dble(intbuf_tab(n)%METRIC%NSNR )
223 sendbuf(j + i_ncont )=dble(intbuf_tab(n)%METRIC%NCONT )
224 ENDDO
225 IF(nspmd > 1) THEN
226 CALL spmd_dgather(sendbuf,size_metric*nbintc,recvbuf,0)
227 ELSE
228 recvbuf(1:size_metric*nbintc,1) = sendbuf(1:size_metric*nbintc)
229 ENDIF
230
231C=================== PRINT ON PROC 0
232 IF( ispmd == 0) THEN
233
234 nb_printed_interf = 0
235 ratio(1:nbintc) = 0.0d0
236 summary(1:size_metric,1:3,1:nbintc) = 0.0d0
237 DO i = 1,nbintc
238 pmax = 0.0d0
239 DO p = 1,nspmd
240 j = (i-1) * size_metric
241
242 ratio(i) = max(ratio(i),
243 . recvbuf(j + i_main_crit_tri,p)
244 . + recvbuf(j + i_main_tri ,p)
245 . + recvbuf(j + i_main_opt_tri ,p)
246 . + recvbuf(j + i_main_forces ,p))
247
248C =========== SUM OVER PROCESSORS
249 summary(i_main_opt_tri,1,i) = summary(i_main_opt_tri,1,i) + recvbuf(j + i_main_opt_tri,p)
250 summary(i_main_crit_tri,1,i)= summary(i_main_crit_tri,1,i)+ recvbuf(j + i_main_crit_tri,p)
251 summary(i_main_tri,1,i) = summary(i_main_tri,1,i) + recvbuf(j + i_main_tri,p)
252 summary(i_main_forces,1,i) = summary(i_main_forces,1,i) + recvbuf(j + i_main_forces,p)
253
254 summary(i_nsn,1,i) = summary(i_nsn,1,i) + recvbuf(j + i_nsn,p)
255 summary(i_nsnr,1,i) = summary(i_nsnr,1,i) + recvbuf(j + i_nsnr,p)
256
257
258C =========== MAX OVER PROCESSORS
259 total_time = recvbuf(i_main_opt_tri+j,p)
260 . + recvbuf(i_main_crit_tri+j,p)
261 . + recvbuf(i_main_tri+j,p)
262 . + recvbuf(i_main_forces+j,p)
263
264 IF(total_time > pmax) THEN
265 summary(i_main_opt_tri,2,i) = recvbuf(j + i_main_opt_tri,p)
266 summary(i_main_crit_tri,2,i)= recvbuf(j + i_main_crit_tri,p)
267 summary(i_main_tri,2,i) = recvbuf(j + i_main_tri,p)
268 summary(i_main_forces,2,i) = recvbuf(j + i_main_forces,p)
269 pmax = total_time
270 ENDIF
271 ENDDO !P
272 IF(ratio(i) > treshold) nb_printed_interf = nb_printed_interf + 1
273 ENDDO ! I
274 IF(nb_printed_interf > 0) THEN
275 WRITE(iout,*)' '
276 WRITE(iout,*)
277 . ' ** INTERFACE SUMMARY **'
278
279 DO i = 1,nbintc
280 IF(ratio(i) > treshold) THEN
281 n = intlist(i)
282 WRITE(iout,*)' '
283 WRITE(iout,*)
284 . 'INTERFACE ID:',intbuf_tab(n)%METRIC%NOINT,' TYPE: ',ipari(7,n)
285 WRITE(iout,'(A,F12.3,A)')
286 . 'REMOTE SECONDARY:',summary(i_nsnr,1,i)/summary(i_nsn,1,i),'%'
287 WRITE(iout,*) 'TIME (s) MAX AVG'
288 WRITE(iout,'(A,2F12.2)')
289 . ' SORT.MAIN:',summary(i_main_tri,2,i),summary(i_main_tri,1,i)/nspmd
290 WRITE(iout,'(A,2F12.3)')
291 . ' SORT.CRIT:',summary(i_main_crit_tri,2,i),summary(i_main_crit_tri,1,i)/nspmd
292 WRITE(iout,'(A,2F12.3)')
293 . ' SORT.OPT:',summary(i_main_opt_tri,2,i),summary(i_main_opt_tri,1,i)/nspmd
294 WRITE(iout,'(A,2F12.3)')
295 . ' FORCES:',summary(i_main_forces,2,i),summary(i_main_forces,1,i)/nspmd
296 ENDIF
297 ENDDO !I = 1,NBINTC
298 ENDIF
299 ENDIF
300 ENDIF
301
302
303 DEALLOCATE(ratio,sendbuf,recvbuf,summary)
304 RETURN
#define max(a, b)
Definition macros.h:21
integer, parameter i_main_tri
Definition metric_mod.F:54
integer, parameter size_metric
Definition metric_mod.F:64
integer, parameter i_nsnr
Definition metric_mod.F:60
integer, parameter i_ncont
Definition metric_mod.F:61
integer, parameter i_main_opt_tri
Definition metric_mod.F:55
integer, parameter i_main_forces
Definition metric_mod.F:56
integer, parameter i_multimp
Definition metric_mod.F:58
integer, parameter i_main_crit_tri
Definition metric_mod.F:53
integer, parameter i_noint
Definition metric_mod.F:57
integer, parameter i_nsn
Definition metric_mod.F:59
subroutine spmd_dgather(sendbuf, length, recvbuf, rank)
Definition spmd_gather.F:32