Hi Barry,
I've put the functions and fortran bindings in the attached
files. In our code, we use them as follows:
CALL mpi_bcast(value,1,MPI_LOGICAL,iproc,MPI_COMM_WORLD,ier)
IF(ier/=0) CALL tracing_abort('ERROR in bcast logical root !')
IF (iproc==thisprocess) THEN
ier = PetscAdminSend(1*(nprocesses-1),MPI_LOGICAL)
ELSE
ier = PetscAdminRecv(1,MPI_LOGICAL)
END IF
I also noted that you changed the treshold from 0.1% to 0.01%, so
I tried to change it as a user with PetscLogSetThreshold, but
this function seems not accessible to users (and there's no
fortran version or manual page).
Chris
dr. ir. Christiaan Klaij | Senior Researcher | Research & Development
MARIN | T +31 317 49 33 44 | mailto:[email protected] | http://www.marin.nl
MARIN news:
http://www.marin.nl/web/News/News-items/Kom-zaterdag-10-november-naar-de-open-dag-in-Wageningen.htm
________________________________________
From: Smith, Barry F. <[email protected]>
Sent: Saturday, April 07, 2018 5:36 PM
To: Klaij, Christiaan
Cc: [email protected]; Koos Huijssen
Subject: Re: nested timers transfers and reductions
> On Apr 6, 2018, at 5:22 AM, Klaij, Christiaan <[email protected]> wrote:
>
> Hi Barry,
>
> In our version of the nested timers, we had the functions
> PetscAdminSend, PetscAdminRecv and PetscAdminReduce. So I was
> expecting to find them at the end of the file
> petsc-3.8.4/src/sys/logging/xmllogevent.c but apparently
> you (re)moved them?
I do not remember why I would have removed these functions. If you can send
a patch that would return them I would gladly try to get them working with
PETSc again.
Barry
>
> We basically used these functions to fill the transfer(GiB/s) and
> reductions/s columns of the log just like we use PetscLogFlops to
> fill the compute(Mflops) column for our registered events.
>
> How should I do this with the petsc version of the nested timers?
>
> Chris
>
>
> dr. ir. Christiaan Klaij | Senior Researcher | Research & Development
> MARIN | T +31 317 49 33 44 | mailto:[email protected] | http://www.marin.nl
>
> MARIN news:
> http://www.marin.nl/web/News/News-items/Application-of-potential-flow-methods-to-fast-displacement-ships-at-transcritical-speeds-in-shallow-water-1.htm
>
!*************************************************************************************
!* M A R I T I M E R E S E A R C H I N S T I T U T E N E T H E R L A N D S *
!*************************************************************************************
!* authors: Bas van 't Hof, Koos Huijssen, Christiaan M. Klaij *
!*************************************************************************************
!* content: Support for nested PetscTimers *
!*************************************************************************************
module petsc_MPIadminF
use iso_c_binding
interface
function PetscAdminSend(count, datatype) bind(c,name='PetscAdminSend') result(ierr)
use iso_c_binding
implicit none
integer(c_int), value :: count
integer(c_int), value :: datatype
integer(c_int) :: ierr
end function PetscAdminSend
function PetscAdminRecv(count, datatype) bind(c,name='PetscAdminRecv') result(ierr)
use iso_c_binding
implicit none
integer(c_int), value :: count
integer(c_int), value :: datatype
integer(c_int) :: ierr
end function PetscAdminRecv
function PetscAdminReduce() bind(c,name='PetscAdminReduce') result(ierr)
use iso_c_binding
implicit none
integer(c_int) :: ierr
end function PetscAdminReduce
end interface
end module petsc_MPIadminF
/*************************************************************************************
* M A R I T I M E R E S E A R C H I N S T I T U T E N E T H E R L A N D S *
*************************************************************************************
* authors: Bas van 't Hof, Koos Huijssen, Christiaan M. Klaij *
*************************************************************************************
* content: Support for nested PetscTimers *
*************************************************************************************/
#include <petsclog.h>
/*****************************************************************/
#undef __FUNCT__
#define __FUNCT__ "PetscAdminSend"
PetscErrorCode PetscAdminSend(int count, int datatype) {
PetscErrorCode ierr;
PetscFunctionBegin;
petsc_send_ct++;
ierr = PetscMPITypeSize(&petsc_send_len,count, MPI_Type_f2c((MPI_Fint) datatype)); CHKERRQ(ierr);
PetscFunctionReturn(0);
}
/*****************************************************************/
#undef __FUNCT__
#define __FUNCT__ "PetscAdminRecv"
PetscErrorCode PetscAdminRecv(int count, int datatype) {
PetscErrorCode ierr;
PetscFunctionBegin;
petsc_recv_ct++;
ierr = PetscMPITypeSize(&petsc_recv_len,count, MPI_Type_f2c((MPI_Fint) datatype)); CHKERRQ(ierr);
PetscFunctionReturn(0);
}
/*****************************************************************/
#undef __FUNCT__
#define __FUNCT__ "PetscAdminReduce"
PetscErrorCode PetscAdminReduce() {
PetscFunctionBegin;
petsc_allreduce_ct++;
PetscFunctionReturn(0);
}