Skip to content

Commit

Permalink
trying cmake change
Browse files Browse the repository at this point in the history
  • Loading branch information
edhartnett committed Jul 12, 2019
1 parent e45c9e4 commit e3ca52b
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/flib/pio.F90
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ module pio
pio_freedecomp, pio_syncfile, &
pio_finalize, pio_set_hint, pio_getnumiotasks, pio_file_is_open, &
PIO_deletefile, PIO_get_numiotasks, PIO_iotype_available, &
#ifdef NETCDF_INTEGRATION
nf_init_intracom, &
#endif
pio_set_rearr_opts

use pio_types, only : io_desc_t, file_desc_t, var_desc_t, iosystem_desc_t, &
Expand Down
63 changes: 63 additions & 0 deletions src/flib/piolib_mod.F90
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#define __PIO_FILE__ "piolib_mod.f90"
#include "config.h"
!>
!! @file
!! Initialization Routines for PIO.
Expand Down Expand Up @@ -97,6 +98,9 @@ module piolib_mod
PIO_deletefile, &
PIO_get_numiotasks, &
PIO_iotype_available, &
#ifdef NETCDF_INTEGRATION
nf_init_intracom, &
#endif
PIO_set_rearr_opts

!-----------------------------------------------------------------------
Expand Down Expand Up @@ -133,6 +137,12 @@ module piolib_mod
module procedure setframe
end interface PIO_setframe

#ifdef NETCDF_INTEGRATION
interface nf_init_intracom
module procedure nf_init_intracom
end interface nf_init_intracom
#endif

!>
!! Increment the record number for a future read/write of distributed
!! arrays (see @ref PIO_write_darray, @ref PIO_read_darray).
Expand Down Expand Up @@ -971,6 +981,59 @@ end function PIOc_Init_Intracomm_from_F90
#endif
end subroutine init_intracom

#ifdef NETCDF_INTEGRATION
!>
!! @public
!! @ingroup PIO_init
!! Initialize the pio subsystem. This is a collective call. Input
!! parameters are read on comp_rank=0 values on other tasks are
!! ignored. This variation of PIO_init locates the IO tasks on a
!! subset of the compute tasks.
!!
!! @param comp_rank mpi rank of each participating task,
!! @param comp_comm the mpi communicator which defines the
!! collective.
!! @param num_iotasks the number of iotasks to define.
!! @param num_aggregator the mpi aggregator count
!! @param stride the stride in the mpi rank between io tasks.
!! @param rearr @copydoc PIO_rearr_method
!! @param iosystem a derived type which can be used in subsequent
!! pio operations (defined in PIO_types).
!! @param base @em optional argument can be used to offset the first
!! io task - default base is task 1.
!! @param rearr_opts the rearranger options.
!! @author Jim Edwards
!<
subroutine nf_init_intracom(comp_rank, comp_comm, num_iotasks, num_aggregator, stride, rearr, iosystem,base, rearr_opts)
use pio_types, only : pio_internal_error, pio_rearr_opt_t
use iso_c_binding

integer(i4), intent(in) :: comp_rank
integer(i4), intent(in) :: comp_comm
integer(i4), intent(in) :: num_iotasks
integer(i4), intent(in) :: num_aggregator
integer(i4), intent(in) :: stride
integer(i4), intent(in) :: rearr
type (iosystem_desc_t), intent(out) :: iosystem ! io descriptor to initalize
integer(i4), intent(in),optional :: base
type (pio_rearr_opt_t), intent(in), optional :: rearr_opts
integer :: ierr

interface
integer(C_INT) function nc_set_iosystem(iosystemid) &
bind(C,name="nc_set_iosystem")
use iso_c_binding
integer(C_INT), intent(in), value :: iosystemid
end function nc_set_iosystem
end interface

call init_intracom(comp_rank, comp_comm, num_iotasks, num_aggregator, stride, rearr, iosystem,base, rearr_opts)

ierr = nc_set_iosystem(iosystem%iosysid)

end subroutine nf_init_intracom
#endif

!! @public
!! @ingroup PIO_init
!! Initialize the pio subsystem. This is a collective call. Input
Expand Down

0 comments on commit e3ca52b

Please sign in to comment.