29 subroutine mpp_init( flags, localcomm, test_level, alt_input_nml_path )
30 integer,
optional,
intent(in) :: flags
31 integer,
optional,
intent(in) :: localcomm
32 integer,
optional,
intent(in) :: test_level
34 character(len=*),
optional,
intent(in) :: alt_input_nml_path
35 integer :: my_pe, num_pes, len, i, logunit
36 logical :: opened, existed
40 if( module_is_initialized )
return
42 module_is_initialized = .true.
43 if(
present(test_level))
then
48 if(t_level == 0)
return
57 allocate( peset(0)%list(1) )
62 current_peset_num = world_peset_num
63 if(t_level == 1)
return
66 call system_clock( count=tick0, count_rate=ticks_per_sec, count_max=max_ticks )
67 tick_rate = 1./ticks_per_sec
68 clock0 =
mpp_clock_id(
'Total runtime', flags=mpp_clock_sync )
69 if(t_level == 2)
return
73 datatypes%head => null()
74 datatypes%tail => null()
81 allocate(mpp_byte%sizes(0))
82 allocate(mpp_byte%subsizes(0))
83 allocate(mpp_byte%starts(0))
87 mpp_byte%prev => null()
88 mpp_byte%next => null()
90 if(
PRESENT(flags) )
then
91 debug = flags.EQ.mpp_debug
92 verbose = flags.EQ.mpp_verbose .OR. debug
94 if(t_level == 3)
return
96 call mpp_init_logfile()
97 if (
present(alt_input_nml_path))
then
102 if(t_level == 4)
return
105 read (input_nml_file, mpp_nml, iostat=io_status)
106 if (io_status > 0)
then
107 call mpp_error(fatal,
'=>mpp_init: Error reading mpp_nml')
109 if(t_level == 5)
return
112 if (trim(etcfile) /=
'/dev/null')
then
113 write( etcfile,
'(a,i6.6)' )trim(etcfile)//
'.', pe
115 inquire(file=etcfile, exist=existed)
117 open( newunit=etc_unit, file=trim(etcfile), status=
'REPLACE' )
119 open( newunit=etc_unit, file=trim(etcfile) )
123 if( verbose )
call mpp_error( note,
'MPP_INIT: initializing MPP module...' )
124 if( pe.EQ.root_pe )
then
126 write( logunit,
'(/a)' )
'MPP module '//trim(version)
127 write( logunit,
'(a,i6)' )
'MPP started with NPES=', npes
128 write( logunit,
'(a)' )
'Using no library for message passing...'
129 write( logunit,
'(a26,es12.4,a6,i10,a11)' ) &
130 'Realtime clock resolution=', tick_rate,
' sec (', ticks_per_sec,
' ticks/sec)'
131 write( logunit,
'(a23,es12.4,a6,i20,a7)' ) &
132 'Clock rolls over after ', max_ticks*tick_rate,
' sec (', max_ticks,
' ticks)'
135 call mpp_clock_begin(clock0)
143 integer :: i, j, k, n, nmax, istat, out_unit
144 real :: t, tmin, tmax, tavg, tstd
145 real :: m, mmin, mmax, mavg, mstd, t_total
148 if( .NOT.module_is_initialized )
return
150 call mpp_clock_end(clock0)
151 t_total = clocks(clock0)%total_ticks*tick_rate
153 if( clock_num.GT.0 )
then
154 if( any(clocks(1:clock_num)%detailed) )
then
155 call sum_clock_data;
call dump_clock_summary
157 if( pe.EQ.root_pe )
then
158 write( out_unit,
'(/a,i6,a)' )
'Tabulating mpp_clock statistics across ', npes,
' PEs...'
159 if( any(clocks(1:clock_num)%detailed) ) &
160 write( out_unit,
'(a)' )
' ... see mpp_clock.out.#### for details on individual PEs.'
161 write( out_unit,
'(/32x,a)' ) &
162 &
' hits tmin tmax tavg tstd tfrac grain pemin pemax'
164 write( out_unit,
'(/37x,a)' )
'time'
166 call flush( out_unit )
169 if( .NOT.any(peset(clocks(i)%peset_num)%list(:).EQ.pe) )cycle
172 t = clocks(i)%total_ticks*tick_rate
173 tmin = t;
call mpp_min(tmin)
174 tmax = t;
call mpp_max(tmax)
175 tavg = t;
call mpp_sum(tavg); tavg = tavg/
mpp_npes()
176 tstd = (t-tavg)**2;
call mpp_sum(tstd); tstd = sqrt( tstd/
mpp_npes() )
177 if( pe.EQ.root_pe )
write( out_unit,
'(a32,i10,4f14.6,f7.3,3i6)' ) &
178 clocks(i)%name, clocks(i)%hits, tmin, tmax, tavg, tstd, tavg/t_total, &
179 clocks(i)%grain, minval(peset(clocks(i)%peset_num)%list), &
180 maxval(peset(clocks(i)%peset_num)%list)
181 if (pe.NE.root_pe)
write(out_unit,
'(a32,f14.6)') clocks(i)%name, clocks(i)%total_ticks*tick_rate
183 if( any(clocks(1:clock_num)%detailed) .AND. pe.EQ.root_pe )
write( out_unit,
'(/32x,a)' ) &
184 ' tmin tmax tavg tstd mmin mmax mavg mstd mavg/tavg'
188 if( .NOT.clocks(i)%detailed )cycle
189 do j = 1,max_event_types
190 n = clocks(i)%events(j)%calls; nmax = n
195 if( n.GT.0 )m = sum(clocks(i)%events(j)%bytes(1:n))
196 mmin = m;
call mpp_min(mmin)
197 mmax = m;
call mpp_max(mmax)
198 mavg = m;
call mpp_sum(mavg); mavg = mavg/
mpp_npes()
199 mstd = (m-mavg)**2;
call mpp_sum(mstd); mstd = sqrt( mstd/
mpp_npes() )
201 if( n.GT.0 )t = sum(clocks(i)%events(j)%ticks(1:n))*tick_rate
202 tmin = t;
call mpp_min(tmin)
203 tmax = t;
call mpp_max(tmax)
204 tavg = t;
call mpp_sum(tavg); tavg = tavg/
mpp_npes()
205 tstd = (t-tavg)**2;
call mpp_sum(tstd); tstd = sqrt( tstd/
mpp_npes() )
206 if( pe.EQ.root_pe )
write( out_unit,
'(a32,4f11.3,5es11.3)' ) &
207 trim(clocks(i)%name)//
' '//trim(clocks(i)%events(j)%name), &
208 tmin, tmax, tavg, tstd, mmin, mmax, mavg, mstd, mavg/tavg
214 inquire(unit=etc_unit, opened=opened)
216 call flush (etc_unit)
222 call mpp_max(mpp_stack_hwm)
223 if( pe.EQ.root_pe )
write( out_unit,* )
'MPP_STACK high water mark=', mpp_stack_hwm
231 integer,
intent(in) :: n
232 character(len=8) :: text
234 if( n.GT.mpp_stack_size .AND.
allocated(mpp_stack) )
deallocate(mpp_stack)
235 if( .NOT.
allocated(mpp_stack) )
then
236 allocate( mpp_stack(n) )
240 write( text,
'(i8)' )n
241 if( pe.EQ.root_pe )
call mpp_error( note,
'MPP_SET_STACK_SIZE: stack size set to '//text//
'.' )
247 character(len=*),
intent(inout) :: char_data(:)
248 integer,
intent(in) :: length, from_pe
249 integer,
intent(in),
optional :: pelist(:)
251 if( .NOT.module_is_initialized )
call mpp_error( fatal,
'mpp_broadcast_text: You must first call mpp_init.' )
263 #define MPP_TYPE_INIT_VALUE 0.
266 #define MPP_TRANSMIT_ mpp_transmit_real8
267 #undef MPP_TRANSMIT_SCALAR_
268 #define MPP_TRANSMIT_SCALAR_ mpp_transmit_real8_scalar
269 #undef MPP_TRANSMIT_2D_
270 #define MPP_TRANSMIT_2D_ mpp_transmit_real8_2d
271 #undef MPP_TRANSMIT_3D_
272 #define MPP_TRANSMIT_3D_ mpp_transmit_real8_3d
273 #undef MPP_TRANSMIT_4D_
274 #define MPP_TRANSMIT_4D_ mpp_transmit_real8_4d
275 #undef MPP_TRANSMIT_5D_
276 #define MPP_TRANSMIT_5D_ mpp_transmit_real8_5d
278 #define MPP_RECV_ mpp_recv_real8
279 #undef MPP_RECV_SCALAR_
280 #define MPP_RECV_SCALAR_ mpp_recv_real8_scalar
282 #define MPP_RECV_2D_ mpp_recv_real8_2d
284 #define MPP_RECV_3D_ mpp_recv_real8_3d
286 #define MPP_RECV_4D_ mpp_recv_real8_4d
288 #define MPP_RECV_5D_ mpp_recv_real8_5d
290 #define MPP_SEND_ mpp_send_real8
291 #undef MPP_SEND_SCALAR_
292 #define MPP_SEND_SCALAR_ mpp_send_real8_scalar
294 #define MPP_SEND_2D_ mpp_send_real8_2d
296 #define MPP_SEND_3D_ mpp_send_real8_3d
298 #define MPP_SEND_4D_ mpp_send_real8_4d
300 #define MPP_SEND_5D_ mpp_send_real8_5d
301 #undef MPP_BROADCAST_
302 #define MPP_BROADCAST_ mpp_broadcast_real8
303 #undef MPP_BROADCAST_SCALAR_
304 #define MPP_BROADCAST_SCALAR_ mpp_broadcast_real8_scalar
305 #undef MPP_BROADCAST_2D_
306 #define MPP_BROADCAST_2D_ mpp_broadcast_real8_2d
307 #undef MPP_BROADCAST_3D_
308 #define MPP_BROADCAST_3D_ mpp_broadcast_real8_3d
309 #undef MPP_BROADCAST_4D_
310 #define MPP_BROADCAST_4D_ mpp_broadcast_real8_4d
311 #undef MPP_BROADCAST_5D_
312 #define MPP_BROADCAST_5D_ mpp_broadcast_real8_5d
314 #define MPP_SCATTERV_ mpp_scatterv_real8
316 #define MPP_GATHER_ mpp_gather_real8
318 #define MPP_GATHERV_ mpp_gatherv_real8
320 #define MPP_TYPE_ real(r8_kind)
321 #undef MPP_TYPE_BYTELEN_
322 #define MPP_TYPE_BYTELEN_ 8
324 #define MPI_TYPE_ MPI_REAL8
325 #include <mpp_transmit_nocomm.fh>
329 #define MPP_TRANSMIT_ mpp_transmit_cmplx8
330 #undef MPP_TRANSMIT_SCALAR_
331 #define MPP_TRANSMIT_SCALAR_ mpp_transmit_cmplx8_scalar
332 #undef MPP_TRANSMIT_2D_
333 #define MPP_TRANSMIT_2D_ mpp_transmit_cmplx8_2d
334 #undef MPP_TRANSMIT_3D_
335 #define MPP_TRANSMIT_3D_ mpp_transmit_cmplx8_3d
336 #undef MPP_TRANSMIT_4D_
337 #define MPP_TRANSMIT_4D_ mpp_transmit_cmplx8_4d
338 #undef MPP_TRANSMIT_5D_
339 #define MPP_TRANSMIT_5D_ mpp_transmit_cmplx8_5d
341 #define MPP_RECV_ mpp_recv_cmplx8
342 #undef MPP_RECV_SCALAR_
343 #define MPP_RECV_SCALAR_ mpp_recv_cmplx8_scalar
345 #define MPP_RECV_2D_ mpp_recv_cmplx8_2d
347 #define MPP_RECV_3D_ mpp_recv_cmplx8_3d
349 #define MPP_RECV_4D_ mpp_recv_cmplx8_4d
351 #define MPP_RECV_5D_ mpp_recv_cmplx8_5d
353 #define MPP_SEND_ mpp_send_cmplx8
354 #undef MPP_SEND_SCALAR_
355 #define MPP_SEND_SCALAR_ mpp_send_cmplx8_scalar
357 #define MPP_SEND_2D_ mpp_send_cmplx8_2d
359 #define MPP_SEND_3D_ mpp_send_cmplx8_3d
361 #define MPP_SEND_4D_ mpp_send_cmplx8_4d
363 #define MPP_SEND_5D_ mpp_send_cmplx8_5d
364 #undef MPP_BROADCAST_
365 #define MPP_BROADCAST_ mpp_broadcast_cmplx8
366 #undef MPP_BROADCAST_SCALAR_
367 #define MPP_BROADCAST_SCALAR_ mpp_broadcast_cmplx8_scalar
368 #undef MPP_BROADCAST_2D_
369 #define MPP_BROADCAST_2D_ mpp_broadcast_cmplx8_2d
370 #undef MPP_BROADCAST_3D_
371 #define MPP_BROADCAST_3D_ mpp_broadcast_cmplx8_3d
372 #undef MPP_BROADCAST_4D_
373 #define MPP_BROADCAST_4D_ mpp_broadcast_cmplx8_4d
374 #undef MPP_BROADCAST_5D_
375 #define MPP_BROADCAST_5D_ mpp_broadcast_cmplx8_5d
377 #define MPP_SCATTERV_ mpp_scatterv_cmplx8
379 #define MPP_GATHER_ mpp_gather_cmplx8
381 #define MPP_GATHERV_ mpp_gatherv_cmplx8
383 #define MPP_TYPE_ complex(c8_kind)
384 #undef MPP_TYPE_BYTELEN_
385 #define MPP_TYPE_BYTELEN_ 16
387 #define MPI_TYPE_ MPI_DOUBLE_COMPLEX
388 #include <mpp_transmit_nocomm.fh>
392 #define MPP_TRANSMIT_ mpp_transmit_real4
393 #undef MPP_TRANSMIT_SCALAR_
394 #define MPP_TRANSMIT_SCALAR_ mpp_transmit_real4_scalar
395 #undef MPP_TRANSMIT_2D_
396 #define MPP_TRANSMIT_2D_ mpp_transmit_real4_2d
397 #undef MPP_TRANSMIT_3D_
398 #define MPP_TRANSMIT_3D_ mpp_transmit_real4_3d
399 #undef MPP_TRANSMIT_4D_
400 #define MPP_TRANSMIT_4D_ mpp_transmit_real4_4d
401 #undef MPP_TRANSMIT_5D_
402 #define MPP_TRANSMIT_5D_ mpp_transmit_real4_5d
404 #define MPP_RECV_ mpp_recv_real4
405 #undef MPP_RECV_SCALAR_
406 #define MPP_RECV_SCALAR_ mpp_recv_real4_scalar
408 #define MPP_RECV_2D_ mpp_recv_real4_2d
410 #define MPP_RECV_3D_ mpp_recv_real4_3d
412 #define MPP_RECV_4D_ mpp_recv_real4_4d
414 #define MPP_RECV_5D_ mpp_recv_real4_5d
416 #define MPP_SEND_ mpp_send_real4
417 #undef MPP_SEND_SCALAR_
418 #define MPP_SEND_SCALAR_ mpp_send_real4_scalar
420 #define MPP_SEND_2D_ mpp_send_real4_2d
422 #define MPP_SEND_3D_ mpp_send_real4_3d
424 #define MPP_SEND_4D_ mpp_send_real4_4d
426 #define MPP_SEND_5D_ mpp_send_real4_5d
427 #undef MPP_BROADCAST_
428 #define MPP_BROADCAST_ mpp_broadcast_real4
429 #undef MPP_BROADCAST_SCALAR_
430 #define MPP_BROADCAST_SCALAR_ mpp_broadcast_real4_scalar
431 #undef MPP_BROADCAST_2D_
432 #define MPP_BROADCAST_2D_ mpp_broadcast_real4_2d
433 #undef MPP_BROADCAST_3D_
434 #define MPP_BROADCAST_3D_ mpp_broadcast_real4_3d
435 #undef MPP_BROADCAST_4D_
436 #define MPP_BROADCAST_4D_ mpp_broadcast_real4_4d
437 #undef MPP_BROADCAST_5D_
438 #define MPP_BROADCAST_5D_ mpp_broadcast_real4_5d
440 #define MPP_SCATTERV_ mpp_scatterv_real4
442 #define MPP_GATHER_ mpp_gather_real4
444 #define MPP_GATHERV_ mpp_gatherv_real4
446 #define MPP_TYPE_ real(r4_kind)
447 #undef MPP_TYPE_BYTELEN_
448 #define MPP_TYPE_BYTELEN_ 4
450 #define MPI_TYPE_ MPI_REAL4
451 #include <mpp_transmit_nocomm.fh>
455 #define MPP_TRANSMIT_ mpp_transmit_cmplx4
456 #undef MPP_TRANSMIT_SCALAR_
457 #define MPP_TRANSMIT_SCALAR_ mpp_transmit_cmplx4_scalar
458 #undef MPP_TRANSMIT_2D_
459 #define MPP_TRANSMIT_2D_ mpp_transmit_cmplx4_2d
460 #undef MPP_TRANSMIT_3D_
461 #define MPP_TRANSMIT_3D_ mpp_transmit_cmplx4_3d
462 #undef MPP_TRANSMIT_4D_
463 #define MPP_TRANSMIT_4D_ mpp_transmit_cmplx4_4d
464 #undef MPP_TRANSMIT_5D_
465 #define MPP_TRANSMIT_5D_ mpp_transmit_cmplx4_5d
467 #define MPP_RECV_ mpp_recv_cmplx4
468 #undef MPP_RECV_SCALAR_
469 #define MPP_RECV_SCALAR_ mpp_recv_cmplx4_scalar
471 #define MPP_RECV_2D_ mpp_recv_cmplx4_2d
473 #define MPP_RECV_3D_ mpp_recv_cmplx4_3d
475 #define MPP_RECV_4D_ mpp_recv_cmplx4_4d
477 #define MPP_RECV_5D_ mpp_recv_cmplx4_5d
479 #define MPP_SEND_ mpp_send_cmplx4
480 #undef MPP_SEND_SCALAR_
481 #define MPP_SEND_SCALAR_ mpp_send_cmplx4_scalar
483 #define MPP_SEND_2D_ mpp_send_cmplx4_2d
485 #define MPP_SEND_3D_ mpp_send_cmplx4_3d
487 #define MPP_SEND_4D_ mpp_send_cmplx4_4d
489 #define MPP_SEND_5D_ mpp_send_cmplx4_5d
490 #undef MPP_BROADCAST_
491 #define MPP_BROADCAST_ mpp_broadcast_cmplx4
492 #undef MPP_BROADCAST_SCALAR_
493 #define MPP_BROADCAST_SCALAR_ mpp_broadcast_cmplx4_scalar
494 #undef MPP_BROADCAST_2D_
495 #define MPP_BROADCAST_2D_ mpp_broadcast_cmplx4_2d
496 #undef MPP_BROADCAST_3D_
497 #define MPP_BROADCAST_3D_ mpp_broadcast_cmplx4_3d
498 #undef MPP_BROADCAST_4D_
499 #define MPP_BROADCAST_4D_ mpp_broadcast_cmplx4_4d
500 #undef MPP_BROADCAST_5D_
501 #define MPP_BROADCAST_5D_ mpp_broadcast_cmplx4_5d
503 #define MPP_SCATTERV_ mpp_scatterv_cmplx4
505 #define MPP_GATHER_ mpp_gather_cmplx4
507 #define MPP_GATHERV_ mpp_gatherv_cmplx4
509 #define MPP_TYPE_ complex(c4_kind)
510 #undef MPP_TYPE_BYTELEN_
511 #define MPP_TYPE_BYTELEN_ 8
513 #define MPI_TYPE_ MPI_COMPLEX
514 #include <mpp_transmit_nocomm.fh>
517 #undef MPP_TYPE_INIT_VALUE
518 #define MPP_TYPE_INIT_VALUE 0
520 #define MPP_TRANSMIT_ mpp_transmit_int8
521 #undef MPP_TRANSMIT_SCALAR_
522 #define MPP_TRANSMIT_SCALAR_ mpp_transmit_int8_scalar
523 #undef MPP_TRANSMIT_2D_
524 #define MPP_TRANSMIT_2D_ mpp_transmit_int8_2d
525 #undef MPP_TRANSMIT_3D_
526 #define MPP_TRANSMIT_3D_ mpp_transmit_int8_3d
527 #undef MPP_TRANSMIT_4D_
528 #define MPP_TRANSMIT_4D_ mpp_transmit_int8_4d
529 #undef MPP_TRANSMIT_5D_
530 #define MPP_TRANSMIT_5D_ mpp_transmit_int8_5d
532 #define MPP_RECV_ mpp_recv_int8
533 #undef MPP_RECV_SCALAR_
534 #define MPP_RECV_SCALAR_ mpp_recv_int8_scalar
536 #define MPP_RECV_2D_ mpp_recv_int8_2d
538 #define MPP_RECV_3D_ mpp_recv_int8_3d
540 #define MPP_RECV_4D_ mpp_recv_int8_4d
542 #define MPP_RECV_5D_ mpp_recv_int8_5d
544 #define MPP_SEND_ mpp_send_int8
545 #undef MPP_SEND_SCALAR_
546 #define MPP_SEND_SCALAR_ mpp_send_int8_scalar
548 #define MPP_SEND_2D_ mpp_send_int8_2d
550 #define MPP_SEND_3D_ mpp_send_int8_3d
552 #define MPP_SEND_4D_ mpp_send_int8_4d
554 #define MPP_SEND_5D_ mpp_send_int8_5d
555 #undef MPP_BROADCAST_
556 #define MPP_BROADCAST_ mpp_broadcast_int8
557 #undef MPP_BROADCAST_SCALAR_
558 #define MPP_BROADCAST_SCALAR_ mpp_broadcast_int8_scalar
559 #undef MPP_BROADCAST_2D_
560 #define MPP_BROADCAST_2D_ mpp_broadcast_int8_2d
561 #undef MPP_BROADCAST_3D_
562 #define MPP_BROADCAST_3D_ mpp_broadcast_int8_3d
563 #undef MPP_BROADCAST_4D_
564 #define MPP_BROADCAST_4D_ mpp_broadcast_int8_4d
565 #undef MPP_BROADCAST_5D_
566 #define MPP_BROADCAST_5D_ mpp_broadcast_int8_5d
568 #define MPP_SCATTERV_ mpp_scatterv_int8
570 #define MPP_GATHER_ mpp_gather_int8
572 #define MPP_GATHERV_ mpp_gatherv_int8
574 #define MPP_TYPE_ integer(i8_kind)
575 #undef MPP_TYPE_BYTELEN_
576 #define MPP_TYPE_BYTELEN_ 8
578 #define MPI_TYPE_ MPI_INTEGER8
579 #include <mpp_transmit_nocomm.fh>
582 #define MPP_TRANSMIT_ mpp_transmit_int4
583 #undef MPP_TRANSMIT_SCALAR_
584 #define MPP_TRANSMIT_SCALAR_ mpp_transmit_int4_scalar
585 #undef MPP_TRANSMIT_2D_
586 #define MPP_TRANSMIT_2D_ mpp_transmit_int4_2d
587 #undef MPP_TRANSMIT_3D_
588 #define MPP_TRANSMIT_3D_ mpp_transmit_int4_3d
589 #undef MPP_TRANSMIT_4D_
590 #define MPP_TRANSMIT_4D_ mpp_transmit_int4_4d
591 #undef MPP_TRANSMIT_5D_
592 #define MPP_TRANSMIT_5D_ mpp_transmit_int4_5d
594 #define MPP_RECV_ mpp_recv_int4
595 #undef MPP_RECV_SCALAR_
596 #define MPP_RECV_SCALAR_ mpp_recv_int4_scalar
598 #define MPP_RECV_2D_ mpp_recv_int4_2d
600 #define MPP_RECV_3D_ mpp_recv_int4_3d
602 #define MPP_RECV_4D_ mpp_recv_int4_4d
604 #define MPP_RECV_5D_ mpp_recv_int4_5d
606 #define MPP_SEND_ mpp_send_int4
607 #undef MPP_SEND_SCALAR_
608 #define MPP_SEND_SCALAR_ mpp_send_int4_scalar
610 #define MPP_SEND_2D_ mpp_send_int4_2d
612 #define MPP_SEND_3D_ mpp_send_int4_3d
614 #define MPP_SEND_4D_ mpp_send_int4_4d
616 #define MPP_SEND_5D_ mpp_send_int4_5d
617 #undef MPP_BROADCAST_
618 #define MPP_BROADCAST_ mpp_broadcast_int4
619 #undef MPP_BROADCAST_SCALAR_
620 #define MPP_BROADCAST_SCALAR_ mpp_broadcast_int4_scalar
621 #undef MPP_BROADCAST_2D_
622 #define MPP_BROADCAST_2D_ mpp_broadcast_int4_2d
623 #undef MPP_BROADCAST_3D_
624 #define MPP_BROADCAST_3D_ mpp_broadcast_int4_3d
625 #undef MPP_BROADCAST_4D_
626 #define MPP_BROADCAST_4D_ mpp_broadcast_int4_4d
627 #undef MPP_BROADCAST_5D_
628 #define MPP_BROADCAST_5D_ mpp_broadcast_int4_5d
630 #define MPP_SCATTERV_ mpp_scatterv_int4
632 #define MPP_GATHER_ mpp_gather_int4
634 #define MPP_GATHERV_ mpp_gatherv_int4
636 #define MPP_TYPE_ integer(i4_kind)
637 #undef MPP_TYPE_BYTELEN_
638 #define MPP_TYPE_BYTELEN_ 4
640 #define MPI_TYPE_ MPI_INTEGER4
641 #include <mpp_transmit_nocomm.fh>
643 #undef MPP_TYPE_INIT_VALUE
644 #define MPP_TYPE_INIT_VALUE .false.
646 #define MPP_TRANSMIT_ mpp_transmit_logical8
647 #undef MPP_TRANSMIT_SCALAR_
648 #define MPP_TRANSMIT_SCALAR_ mpp_transmit_logical8_scalar
649 #undef MPP_TRANSMIT_2D_
650 #define MPP_TRANSMIT_2D_ mpp_transmit_logical8_2d
651 #undef MPP_TRANSMIT_3D_
652 #define MPP_TRANSMIT_3D_ mpp_transmit_logical8_3d
653 #undef MPP_TRANSMIT_4D_
654 #define MPP_TRANSMIT_4D_ mpp_transmit_logical8_4d
655 #undef MPP_TRANSMIT_5D_
656 #define MPP_TRANSMIT_5D_ mpp_transmit_logical8_5d
658 #define MPP_RECV_ mpp_recv_logical8
659 #undef MPP_RECV_SCALAR_
660 #define MPP_RECV_SCALAR_ mpp_recv_logical8_scalar
662 #define MPP_RECV_2D_ mpp_recv_logical8_2d
664 #define MPP_RECV_3D_ mpp_recv_logical8_3d
666 #define MPP_RECV_4D_ mpp_recv_logical8_4d
668 #define MPP_RECV_5D_ mpp_recv_logical8_5d
670 #define MPP_SEND_ mpp_send_logical8
671 #undef MPP_SEND_SCALAR_
672 #define MPP_SEND_SCALAR_ mpp_send_logical8_scalar
674 #define MPP_SEND_2D_ mpp_send_logical8_2d
676 #define MPP_SEND_3D_ mpp_send_logical8_3d
678 #define MPP_SEND_4D_ mpp_send_logical8_4d
680 #define MPP_SEND_5D_ mpp_send_logical8_5d
681 #undef MPP_BROADCAST_
682 #define MPP_BROADCAST_ mpp_broadcast_logical8
683 #undef MPP_BROADCAST_SCALAR_
684 #define MPP_BROADCAST_SCALAR_ mpp_broadcast_logical8_scalar
685 #undef MPP_BROADCAST_2D_
686 #define MPP_BROADCAST_2D_ mpp_broadcast_logical8_2d
687 #undef MPP_BROADCAST_3D_
688 #define MPP_BROADCAST_3D_ mpp_broadcast_logical8_3d
689 #undef MPP_BROADCAST_4D_
690 #define MPP_BROADCAST_4D_ mpp_broadcast_logical8_4d
691 #undef MPP_BROADCAST_5D_
692 #define MPP_BROADCAST_5D_ mpp_broadcast_logical8_5d
694 #define MPP_SCATTERV_ mpp_scatterv_logical8
696 #define MPP_GATHER_ mpp_gather_logical8
698 #define MPP_GATHERV_ mpp_gatherv_logical8
700 #define MPP_TYPE_ logical(l8_kind)
701 #undef MPP_TYPE_BYTELEN_
702 #define MPP_TYPE_BYTELEN_ 8
704 #define MPI_TYPE_ MPI_INTEGER8
705 #include <mpp_transmit_nocomm.fh>
708 #define MPP_TRANSMIT_ mpp_transmit_logical4
709 #undef MPP_TRANSMIT_SCALAR_
710 #define MPP_TRANSMIT_SCALAR_ mpp_transmit_logical4_scalar
711 #undef MPP_TRANSMIT_2D_
712 #define MPP_TRANSMIT_2D_ mpp_transmit_logical4_2d
713 #undef MPP_TRANSMIT_3D_
714 #define MPP_TRANSMIT_3D_ mpp_transmit_logical4_3d
715 #undef MPP_TRANSMIT_4D_
716 #define MPP_TRANSMIT_4D_ mpp_transmit_logical4_4d
717 #undef MPP_TRANSMIT_5D_
718 #define MPP_TRANSMIT_5D_ mpp_transmit_logical4_5d
720 #define MPP_RECV_ mpp_recv_logical4
721 #undef MPP_RECV_SCALAR_
722 #define MPP_RECV_SCALAR_ mpp_recv_logical4_scalar
724 #define MPP_RECV_2D_ mpp_recv_logical4_2d
726 #define MPP_RECV_3D_ mpp_recv_logical4_3d
728 #define MPP_RECV_4D_ mpp_recv_logical4_4d
730 #define MPP_RECV_5D_ mpp_recv_logical4_5d
732 #define MPP_SEND_ mpp_send_logical4
733 #undef MPP_SEND_SCALAR_
734 #define MPP_SEND_SCALAR_ mpp_send_logical4_scalar
736 #define MPP_SEND_2D_ mpp_send_logical4_2d
738 #define MPP_SEND_3D_ mpp_send_logical4_3d
740 #define MPP_SEND_4D_ mpp_send_logical4_4d
742 #define MPP_SEND_5D_ mpp_send_logical4_5d
743 #undef MPP_BROADCAST_
744 #define MPP_BROADCAST_ mpp_broadcast_logical4
745 #undef MPP_BROADCAST_SCALAR_
746 #define MPP_BROADCAST_SCALAR_ mpp_broadcast_logical4_scalar
747 #undef MPP_BROADCAST_2D_
748 #define MPP_BROADCAST_2D_ mpp_broadcast_logical4_2d
749 #undef MPP_BROADCAST_3D_
750 #define MPP_BROADCAST_3D_ mpp_broadcast_logical4_3d
751 #undef MPP_BROADCAST_4D_
752 #define MPP_BROADCAST_4D_ mpp_broadcast_logical4_4d
753 #undef MPP_BROADCAST_5D_
754 #define MPP_BROADCAST_5D_ mpp_broadcast_logical4_5d
756 #define MPP_SCATTERV_ mpp_scatterv_logical4
758 #define MPP_GATHER_ mpp_gather_logical4
760 #define MPP_GATHERV_ mpp_gatherv_logical4
762 #define MPP_TYPE_ logical(l4_kind)
763 #undef MPP_TYPE_BYTELEN_
764 #define MPP_TYPE_BYTELEN_ 4
766 #define MPI_TYPE_ MPI_INTEGER4
767 #include <mpp_transmit_nocomm.fh>
768 #undef MPP_TYPE_INIT_VALUE
775 #undef MPP_REDUCE_0D_
776 #define MPP_REDUCE_0D_ mpp_max_real8_0d
777 #undef MPP_REDUCE_1D_
778 #define MPP_REDUCE_1D_ mpp_max_real8_1d
780 #define MPP_TYPE_ real(r8_kind)
781 #undef MPP_TYPE_BYTELEN_
782 #define MPP_TYPE_BYTELEN_ 8
784 #define MPI_TYPE_ MPI_REAL8
786 #define MPI_REDUCE_ MPI_MAX
787 #include <mpp_reduce_nocomm.fh>
789 #undef MPP_REDUCE_0D_
790 #define MPP_REDUCE_0D_ mpp_max_real4_0d
791 #undef MPP_REDUCE_1D_
792 #define MPP_REDUCE_1D_ mpp_max_real4_1d
794 #define MPP_TYPE_ real(r4_kind)
795 #undef MPP_TYPE_BYTELEN_
796 #define MPP_TYPE_BYTELEN_ 4
798 #define MPI_TYPE_ MPI_REAL4
800 #define MPI_REDUCE_ MPI_MAX
801 #include <mpp_reduce_nocomm.fh>
803 #undef MPP_REDUCE_0D_
804 #define MPP_REDUCE_0D_ mpp_max_int8_0d
805 #undef MPP_REDUCE_1D_
806 #define MPP_REDUCE_1D_ mpp_max_int8_1d
808 #define MPP_TYPE_ integer(i8_kind)
809 #undef MPP_TYPE_BYTELEN_
810 #define MPP_TYPE_BYTELEN_ 8
812 #define MPI_TYPE_ MPI_INTEGER8
814 #define MPI_REDUCE_ MPI_MAX
815 #include <mpp_reduce_nocomm.fh>
817 #undef MPP_REDUCE_0D_
818 #define MPP_REDUCE_0D_ mpp_max_int4_0d
819 #undef MPP_REDUCE_1D_
820 #define MPP_REDUCE_1D_ mpp_max_int4_1d
822 #define MPP_TYPE_ integer(i4_kind)
823 #undef MPP_TYPE_BYTELEN_
824 #define MPP_TYPE_BYTELEN_ 4
826 #define MPI_TYPE_ MPI_INTEGER4
828 #define MPI_REDUCE_ MPI_MAX
829 #include <mpp_reduce_nocomm.fh>
831 #undef MPP_REDUCE_0D_
832 #define MPP_REDUCE_0D_ mpp_min_real8_0d
833 #undef MPP_REDUCE_1D_
834 #define MPP_REDUCE_1D_ mpp_min_real8_1d
836 #define MPP_TYPE_ real(r8_kind)
837 #undef MPP_TYPE_BYTELEN_
838 #define MPP_TYPE_BYTELEN_ 8
840 #define MPI_TYPE_ MPI_REAL8
842 #define MPI_REDUCE_ MPI_MIN
843 #include <mpp_reduce_nocomm.fh>
845 #undef MPP_REDUCE_0D_
846 #define MPP_REDUCE_0D_ mpp_min_real4_0d
847 #undef MPP_REDUCE_1D_
848 #define MPP_REDUCE_1D_ mpp_min_real4_1d
850 #define MPP_TYPE_ real(r4_kind)
851 #undef MPP_TYPE_BYTELEN_
852 #define MPP_TYPE_BYTELEN_ 4
854 #define MPI_TYPE_ MPI_REAL4
856 #define MPI_REDUCE_ MPI_MIN
857 #include <mpp_reduce_nocomm.fh>
859 #undef MPP_REDUCE_0D_
860 #define MPP_REDUCE_0D_ mpp_min_int8_0d
861 #undef MPP_REDUCE_1D_
862 #define MPP_REDUCE_1D_ mpp_min_int8_1d
864 #define MPP_TYPE_ integer(i8_kind)
865 #undef MPP_TYPE_BYTELEN_
866 #define MPP_TYPE_BYTELEN_ 8
868 #define MPI_TYPE_ MPI_INTEGER8
870 #define MPI_REDUCE_ MPI_MIN
871 #include <mpp_reduce_nocomm.fh>
873 #undef MPP_REDUCE_0D_
874 #define MPP_REDUCE_0D_ mpp_min_int4_0d
875 #undef MPP_REDUCE_1D_
876 #define MPP_REDUCE_1D_ mpp_min_int4_1d
878 #define MPP_TYPE_ integer(i4_kind)
879 #undef MPP_TYPE_BYTELEN_
880 #define MPP_TYPE_BYTELEN_ 4
882 #define MPI_TYPE_ MPI_INTEGER4
884 #define MPI_REDUCE_ MPI_MIN
885 #include <mpp_reduce_nocomm.fh>
888 #define MPP_SUM_ mpp_sum_real8
889 #undef MPP_SUM_SCALAR_
890 #define MPP_SUM_SCALAR_ mpp_sum_real8_scalar
892 #define MPP_SUM_2D_ mpp_sum_real8_2d
894 #define MPP_SUM_3D_ mpp_sum_real8_3d
896 #define MPP_SUM_4D_ mpp_sum_real8_4d
898 #define MPP_SUM_5D_ mpp_sum_real8_5d
900 #define MPP_TYPE_ real(r8_kind)
902 #define MPI_TYPE_ MPI_REAL8
903 #undef MPP_TYPE_BYTELEN_
904 #define MPP_TYPE_BYTELEN_ 8
905 #include <mpp_sum_nocomm.fh>
909 #define MPP_SUM_ mpp_sum_cmplx8
910 #undef MPP_SUM_SCALAR_
911 #define MPP_SUM_SCALAR_ mpp_sum_cmplx8_scalar
913 #define MPP_SUM_2D_ mpp_sum_cmplx8_2d
915 #define MPP_SUM_3D_ mpp_sum_cmplx8_3d
917 #define MPP_SUM_4D_ mpp_sum_cmplx8_4d
919 #define MPP_SUM_5D_ mpp_sum_cmplx8_5d
921 #define MPP_TYPE_ complex(c8_kind)
923 #define MPI_TYPE_ MPI_DOUBLE_COMPLEX
924 #undef MPP_TYPE_BYTELEN_
925 #define MPP_TYPE_BYTELEN_ 16
926 #include <mpp_sum_nocomm.fh>
930 #define MPP_SUM_ mpp_sum_real4
931 #undef MPP_SUM_SCALAR_
932 #define MPP_SUM_SCALAR_ mpp_sum_real4_scalar
934 #define MPP_SUM_2D_ mpp_sum_real4_2d
936 #define MPP_SUM_3D_ mpp_sum_real4_3d
938 #define MPP_SUM_4D_ mpp_sum_real4_4d
940 #define MPP_SUM_5D_ mpp_sum_real4_5d
942 #define MPP_TYPE_ real(r4_kind)
944 #define MPI_TYPE_ MPI_REAL4
945 #undef MPP_TYPE_BYTELEN_
946 #define MPP_TYPE_BYTELEN_ 4
947 #include <mpp_sum_nocomm.fh>
951 #define MPP_SUM_ mpp_sum_cmplx4
952 #undef MPP_SUM_SCALAR_
953 #define MPP_SUM_SCALAR_ mpp_sum_cmplx4_scalar
955 #define MPP_SUM_2D_ mpp_sum_cmplx4_2d
957 #define MPP_SUM_3D_ mpp_sum_cmplx4_3d
959 #define MPP_SUM_4D_ mpp_sum_cmplx4_4d
961 #define MPP_SUM_5D_ mpp_sum_cmplx4_5d
963 #define MPP_TYPE_ complex(c4_kind)
965 #define MPI_TYPE_ MPI_COMPLEX
966 #undef MPP_TYPE_BYTELEN_
967 #define MPP_TYPE_BYTELEN_ 8
968 #include <mpp_sum_nocomm.fh>
972 #define MPP_SUM_ mpp_sum_int8
973 #undef MPP_SUM_SCALAR_
974 #define MPP_SUM_SCALAR_ mpp_sum_int8_scalar
976 #define MPP_SUM_2D_ mpp_sum_int8_2d
978 #define MPP_SUM_3D_ mpp_sum_int8_3d
980 #define MPP_SUM_4D_ mpp_sum_int8_4d
982 #define MPP_SUM_5D_ mpp_sum_int8_5d
984 #define MPP_TYPE_ integer(i8_kind)
986 #define MPI_TYPE_ MPI_INTEGER8
987 #undef MPP_TYPE_BYTELEN_
988 #define MPP_TYPE_BYTELEN_ 8
989 #include <mpp_sum_nocomm.fh>
992 #define MPP_SUM_ mpp_sum_int4
993 #undef MPP_SUM_SCALAR_
994 #define MPP_SUM_SCALAR_ mpp_sum_int4_scalar
996 #define MPP_SUM_2D_ mpp_sum_int4_2d
998 #define MPP_SUM_3D_ mpp_sum_int4_3d
1000 #define MPP_SUM_4D_ mpp_sum_int4_4d
1002 #define MPP_SUM_5D_ mpp_sum_int4_5d
1004 #define MPP_TYPE_ integer(i4_kind)
1006 #define MPI_TYPE_ MPI_INTEGER4
1007 #undef MPP_TYPE_BYTELEN_
1008 #define MPP_TYPE_BYTELEN_ 4
1009 #include <mpp_sum_nocomm.fh>
1012 #define MPP_SUM_AD_ mpp_sum_real8_ad
1013 #undef MPP_SUM_SCALAR_AD_
1014 #define MPP_SUM_SCALAR_AD_ mpp_sum_real8_scalar_ad
1015 #undef MPP_SUM_2D_AD_
1016 #define MPP_SUM_2D_AD_ mpp_sum_real8_2d_ad
1017 #undef MPP_SUM_3D_AD_
1018 #define MPP_SUM_3D_AD_ mpp_sum_real8_3d_ad
1019 #undef MPP_SUM_4D_AD_
1020 #define MPP_SUM_4D_AD_ mpp_sum_real8_4d_ad
1021 #undef MPP_SUM_5D_AD_
1022 #define MPP_SUM_5D_AD_ mpp_sum_real8_5d_ad
1024 #define MPP_TYPE_ real(r8_kind)
1026 #define MPI_TYPE_ MPI_REAL8
1027 #undef MPP_TYPE_BYTELEN_
1028 #define MPP_TYPE_BYTELEN_ 8
1029 #include <mpp_sum_nocomm_ad.fh>
1033 #define MPP_SUM_AD_ mpp_sum_cmplx8_ad
1034 #undef MPP_SUM_SCALAR_AD_
1035 #define MPP_SUM_SCALAR_AD_ mpp_sum_cmplx8_scalar_ad
1036 #undef MPP_SUM_2D_AD_
1037 #define MPP_SUM_2D_AD_ mpp_sum_cmplx8_2d_ad
1038 #undef MPP_SUM_3D_AD_
1039 #define MPP_SUM_3D_AD_ mpp_sum_cmplx8_3d_ad
1040 #undef MPP_SUM_4D_AD_
1041 #define MPP_SUM_4D_AD_ mpp_sum_cmplx8_4d_ad
1042 #undef MPP_SUM_5D_AD_
1043 #define MPP_SUM_5D_AD_ mpp_sum_cmplx8_5d_ad
1045 #define MPP_TYPE_ complex(c8_kind)
1047 #define MPI_TYPE_ MPI_DOUBLE_COMPLEX
1048 #undef MPP_TYPE_BYTELEN_
1049 #define MPP_TYPE_BYTELEN_ 16
1050 #include <mpp_sum_nocomm_ad.fh>
1054 #define MPP_SUM_AD_ mpp_sum_real4_ad
1055 #undef MPP_SUM_SCALAR_AD_
1056 #define MPP_SUM_SCALAR_AD_ mpp_sum_real4_scalar_ad
1057 #undef MPP_SUM_2D_AD_
1058 #define MPP_SUM_2D_AD_ mpp_sum_real4_2d_ad
1059 #undef MPP_SUM_3D_AD_
1060 #define MPP_SUM_3D_AD_ mpp_sum_real4_3d_ad
1061 #undef MPP_SUM_4D_AD_
1062 #define MPP_SUM_4D_AD_ mpp_sum_real4_4d_ad
1063 #undef MPP_SUM_5D_AD_
1064 #define MPP_SUM_5D_AD_ mpp_sum_real4_5d_ad
1066 #define MPP_TYPE_ real(r4_kind)
1068 #define MPI_TYPE_ MPI_REAL4
1069 #undef MPP_TYPE_BYTELEN_
1070 #define MPP_TYPE_BYTELEN_ 4
1071 #include <mpp_sum_nocomm_ad.fh>
1075 #define MPP_SUM_AD_ mpp_sum_cmplx4_ad
1076 #undef MPP_SUM_SCALAR_AD_
1077 #define MPP_SUM_SCALAR_AD_ mpp_sum_cmplx4_scalar_ad
1078 #undef MPP_SUM_2D_AD_
1079 #define MPP_SUM_2D_AD_ mpp_sum_cmplx4_2d_ad
1080 #undef MPP_SUM_3D_AD_
1081 #define MPP_SUM_3D_AD_ mpp_sum_cmplx4_3d_ad
1082 #undef MPP_SUM_4D_AD_
1083 #define MPP_SUM_4D_AD_ mpp_sum_cmplx4_4d_ad
1084 #undef MPP_SUM_5D_AD_
1085 #define MPP_SUM_5D_AD_ mpp_sum_cmplx4_5d_ad
1087 #define MPP_TYPE_ complex(c4_kind)
1089 #define MPI_TYPE_ MPI_COMPLEX
1090 #undef MPP_TYPE_BYTELEN_
1091 #define MPP_TYPE_BYTELEN_ 8
1092 #include <mpp_sum_nocomm_ad.fh>
1096 #define MPP_SUM_AD_ mpp_sum_int8_ad
1097 #undef MPP_SUM_SCALAR_AD_
1098 #define MPP_SUM_SCALAR_AD_ mpp_sum_int8_scalar_ad
1099 #undef MPP_SUM_2D_AD_
1100 #define MPP_SUM_2D_AD_ mpp_sum_int8_2d_ad
1101 #undef MPP_SUM_3D_AD_
1102 #define MPP_SUM_3D_AD_ mpp_sum_int8_3d_ad
1103 #undef MPP_SUM_4D_AD_
1104 #define MPP_SUM_4D_AD_ mpp_sum_int8_4d_ad
1105 #undef MPP_SUM_5D_AD_
1106 #define MPP_SUM_5D_AD_ mpp_sum_int8_5d_ad
1108 #define MPP_TYPE_ integer(i8_kind)
1110 #define MPI_TYPE_ MPI_INTEGER8
1111 #undef MPP_TYPE_BYTELEN_
1112 #define MPP_TYPE_BYTELEN_ 8
1113 #include <mpp_sum_nocomm_ad.fh>
1116 #define MPP_SUM_AD_ mpp_sum_int4_ad
1117 #undef MPP_SUM_SCALAR_AD_
1118 #define MPP_SUM_SCALAR_AD_ mpp_sum_int4_scalar_ad
1119 #undef MPP_SUM_2D_AD_
1120 #define MPP_SUM_2D_AD_ mpp_sum_int4_2d_ad
1121 #undef MPP_SUM_3D_AD_
1122 #define MPP_SUM_3D_AD_ mpp_sum_int4_3d_ad
1123 #undef MPP_SUM_4D_AD_
1124 #define MPP_SUM_4D_AD_ mpp_sum_int4_4d_ad
1125 #undef MPP_SUM_5D_AD_
1126 #define MPP_SUM_5D_AD_ mpp_sum_int4_5d_ad
1128 #define MPP_TYPE_ integer(i4_kind)
1130 #define MPI_TYPE_ MPI_INTEGER4
1131 #undef MPP_TYPE_BYTELEN_
1132 #define MPP_TYPE_BYTELEN_ 4
1133 #include <mpp_sum_nocomm_ad.fh>
1141 #undef MPP_ALLTOALL_
1142 #undef MPP_ALLTOALLV_
1143 #undef MPP_ALLTOALLW_
1145 #undef MPP_TYPE_BYTELEN_
1147 #define MPP_ALLTOALL_ mpp_alltoall_int4
1148 #define MPP_ALLTOALLV_ mpp_alltoall_int4_v
1149 #define MPP_ALLTOALLW_ mpp_alltoall_int4_w
1150 #define MPP_TYPE_ integer(i4_kind)
1151 #define MPP_TYPE_BYTELEN_ 4
1152 #define MPI_TYPE_ MPI_INTEGER4
1153 #include <mpp_alltoall_nocomm.fh>
1155 #undef MPP_ALLTOALL_
1156 #undef MPP_ALLTOALLV_
1157 #undef MPP_ALLTOALLW_
1159 #undef MPP_TYPE_BYTELEN_
1161 #define MPP_ALLTOALL_ mpp_alltoall_int8
1162 #define MPP_ALLTOALLV_ mpp_alltoall_int8_v
1163 #define MPP_ALLTOALLW_ mpp_alltoall_int8_w
1164 #define MPP_TYPE_ integer(i8_kind)
1165 #define MPP_TYPE_BYTELEN_ 8
1166 #define MPI_TYPE_ MPI_INTEGER8
1167 #include <mpp_alltoall_nocomm.fh>
1169 #undef MPP_ALLTOALL_
1170 #undef MPP_ALLTOALLV_
1171 #undef MPP_ALLTOALLW_
1173 #undef MPP_TYPE_BYTELEN_
1175 #define MPP_ALLTOALL_ mpp_alltoall_real4
1176 #define MPP_ALLTOALLV_ mpp_alltoall_real4_v
1177 #define MPP_ALLTOALLW_ mpp_alltoall_real4_w
1178 #define MPP_TYPE_ real(r4_kind)
1179 #define MPP_TYPE_BYTELEN_ 4
1180 #define MPI_TYPE_ MPI_REAL4
1181 #include <mpp_alltoall_nocomm.fh>
1183 #undef MPP_ALLTOALL_
1184 #undef MPP_ALLTOALLV_
1185 #undef MPP_ALLTOALLW_
1187 #undef MPP_TYPE_BYTELEN_
1189 #define MPP_ALLTOALL_ mpp_alltoall_real8
1190 #define MPP_ALLTOALLV_ mpp_alltoall_real8_v
1191 #define MPP_ALLTOALLW_ mpp_alltoall_real8_w
1192 #define MPP_TYPE_ real(r8_kind)
1193 #define MPP_TYPE_BYTELEN_ 8
1194 #define MPI_TYPE_ MPI_REAL8
1195 #include <mpp_alltoall_nocomm.fh>
1197 #undef MPP_ALLTOALL_
1198 #undef MPP_ALLTOALLV_
1199 #undef MPP_ALLTOALLW_
1201 #undef MPP_TYPE_BYTELEN_
1203 #define MPP_ALLTOALL_ mpp_alltoall_logical4
1204 #define MPP_ALLTOALLV_ mpp_alltoall_logical4_v
1205 #define MPP_ALLTOALLW_ mpp_alltoall_logical4_w
1206 #define MPP_TYPE_ logical(l4_kind)
1207 #define MPP_TYPE_BYTELEN_ 4
1208 #define MPI_TYPE_ MPI_INTEGER4
1209 #include <mpp_alltoall_nocomm.fh>
1211 #undef MPP_ALLTOALL_
1212 #undef MPP_ALLTOALLV_
1213 #undef MPP_ALLTOALLW_
1215 #undef MPP_TYPE_BYTELEN_
1217 #define MPP_ALLTOALL_ mpp_alltoall_logical8
1218 #define MPP_ALLTOALLV_ mpp_alltoall_logical8_v
1219 #define MPP_ALLTOALLW_ mpp_alltoall_logical8_w
1220 #define MPP_TYPE_ logical(l8_kind)
1221 #define MPP_TYPE_BYTELEN_ 8
1222 #define MPI_TYPE_ MPI_INTEGER8
1223 #include <mpp_alltoall_nocomm.fh>
1230 #define MPP_TYPE_CREATE_ mpp_type_create_int4
1231 #define MPP_TYPE_ integer(i4_kind)
1232 #define MPI_TYPE_ MPI_INTEGER4
1233 #include <mpp_type_nocomm.fh>
1235 #define MPP_TYPE_CREATE_ mpp_type_create_int8
1236 #define MPP_TYPE_ integer(i8_kind)
1237 #define MPI_TYPE_ MPI_INTEGER8
1238 #include <mpp_type_nocomm.fh>
1240 #define MPP_TYPE_CREATE_ mpp_type_create_real4
1241 #define MPP_TYPE_ real(r4_kind)
1242 #define MPI_TYPE_ MPI_REAL4
1243 #include <mpp_type_nocomm.fh>
1245 #define MPP_TYPE_CREATE_ mpp_type_create_real8
1246 #define MPP_TYPE_ real(r8_kind)
1247 #define MPI_TYPE_ MPI_REAL8
1248 #include <mpp_type_nocomm.fh>
1250 #define MPP_TYPE_CREATE_ mpp_type_create_cmplx4
1251 #define MPP_TYPE_ complex(c4_kind)
1252 #define MPI_TYPE_ MPI_COMPLEX8
1253 #include <mpp_type_nocomm.fh>
1255 #define MPP_TYPE_CREATE_ mpp_type_create_cmplx8
1256 #define MPP_TYPE_ complex(c8_kind)
1257 #define MPI_TYPE_ MPI_COMPLEX16
1258 #include <mpp_type_nocomm.fh>
1260 #define MPP_TYPE_CREATE_ mpp_type_create_logical4
1261 #define MPP_TYPE_ logical(l4_kind)
1262 #define MPI_TYPE_ MPI_INTEGER4
1263 #include <mpp_type_nocomm.fh>
1265 #define MPP_TYPE_CREATE_ mpp_type_create_logical8
1266 #define MPP_TYPE_ logical(l8_kind)
1267 #define MPI_TYPE_ MPI_INTEGER8
1268 #include <mpp_type_nocomm.fh>
1273 #undef MPP_TYPE_CREATE_
1276 type(mpp_type),
pointer,
intent(inout) :: dtype
1278 call mpp_error(note,
'MPP_TYPE_FREE: ' &
1279 //
'This function should not be used in serial mode.')
integer function stdout()
This function returns the current standard fortran unit numbers for output.
subroutine mpp_set_current_pelist(pelist, no_sync)
Set context pelist.
subroutine mpp_init(flags, localcomm, test_level, alt_input_nml_path)
Initialize the mpp_mod module. Must be called before any usage.
subroutine read_input_nml(pelist_name_in, alt_input_nml_path)
Reads an existing input nml file into a character array and broadcasts it to the non-root mpi-tasks....
subroutine mpp_type_free(dtype)
Deallocates memory for mpp_type objects @TODO This should probably not take a pointer,...
subroutine mpp_exit()
Finalizes process termination. To be called at the end of a run. Certain mpi implementations(openmpi)...
integer function stdlog()
This function returns the current standard fortran unit numbers for log messages. Log messages,...
integer function mpp_npes()
Returns processor count for current pelist.
subroutine mpp_set_stack_size(n)
Set the mpp_stack variable to be at least n LONG words long.
subroutine mpp_sync(pelist, do_self)
Synchronize PEs in list.
integer function mpp_clock_id(name, flags, grain)
Return an ID for a new or existing clock.
subroutine mpp_broadcast_char(char_data, length, from_pe, pelist)
Broadcasts a character string from the given pe to it's pelist.