> On Sep 5, 2018, at 11:58 PM, TAY wee-beng <zon...@gmail.com> wrote:
> 
> 
> On 6/9/2018 12:09 PM, Smith, Barry F. wrote:
>> 
>>> On Sep 5, 2018, at 11:01 PM, Randall Mackie <rlmackie...@gmail.com> wrote:
>>> 
>>> You can use PetscMPIInt for integers in MPI calls.
>>> 
>>> Check petscsys.h for definitions of all of these.
>>     This is true but can be cumbersome because one may need to convert 
>> arrays of PetscInt to PetscMPIInt for MPI and then convert back after (with 
>> possible loss of precision).
>> 
>>      In C we have macros MPIU_INT that we use to indicate that the integer 
>> argument to the MPI call is 64 bit when 64 bit indices are used and 32 bit 
>> otherwise allowing users to write portable code that can just be 
>> reconfigured for 32 or 64 bit integers. I see we do not provide such a thing 
>> for Fortran; we should provide it. Unless Karl has coding time today we 
>> won't be able to get to it until tomorrow US time since it is already late 
>> in the US.
>> 
>>     Barry
> Hi,
> 
> That would be great! I've no problem waiting a few days. Does it mean that I 
> can then use:
> 
> call 
> MPI_ALLGATHER(counter,1,MPIU_INT,counter_global,1,MPIU_INT,MPI_COMM_WORLD,ierr)

   Likely to be consistent with Fortran MPI standards we would use MPI_INTEGER 
but otherwise yes.

> 
> Thanks!
>>> Randy
>>> 
>>> 
>>>> On Sep 5, 2018, at 8:56 PM, TAY wee-beng <zon...@gmail.com> wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> My code has some problems now after converting to 64bit indices.
>>>> 
>>>> After debugging, I realised that I'm using:
>>>> 
>>>> call 
>>>> MPI_ALLGATHER(counter,1,MPI_INTEGER,counter_global,1,MPI_INTEGER,MPI_COMM_WORLD,ierr)
>>>> 
>>>> but now counter and counter_global are both 64bit integers. So should I 
>>>> change all mpi routine from MPI_INTEGER to MPI_INTEGER8?
>>>> 
>>>> But if I switch back to using the 32bit PETSc, do I have to switch back 
>>>> again? In that case, does it mean I need to have 2 copies of my code - one 
>>>> to compile with PETSc 32, another to compile with PETSc 64?
>>>> 
>>>> Is there an easier way?
>>>> Thank you very much.
>>>> 
>>>> Yours sincerely,
>>>> 
>>>> ================================================
>>>> TAY Wee-Beng (Zheng Weiming) 郑伟明
>>>> Personal research webpage:
>>>> http://tayweebeng.wixsite.com/website
>>>> 
>>>> Youtube research showcase:
>>>> https://www.youtube.com/channel/UC72ZHtvQNMpNs2uRTSToiLA
>>>> 
>>>> linkedin:
>>>> www.linkedin.com/in/tay-weebeng
>>>> 
>>>> ================================================
>>>> 
>>>> On 5/9/2018 6:25 PM, Matthew Knepley wrote:
>>>>> On Wed, Sep 5, 2018 at 3:27 AM TAY wee-beng <zon...@gmail.com> wrote:
>>>>> 
>>>>> On 31/8/2018 10:43 AM, Smith, Barry F. wrote:
>>>>>>> On Aug 30, 2018, at 9:40 PM, TAY wee-beng <zon...@gmail.com> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>> On 31/8/2018 10:38 AM, Smith, Barry F. wrote:
>>>>>>>>    PetscReal is by default real(8) you can leave those alone
>>>>>>>> 
>>>>>>>>     Any integer you pass to a PETSc routine needs to be declared as 
>>>>>>>> PetscInt (not integer) otherwise the 64 bit indices stuff won't work.
>>>>>>>> 
>>>>>>>>     Barry
>>>>>>>> 
>>>>>>> Hi,
>>>>>>> 
>>>>>>> ok, I got it. Btw, is it advisable to change all integer in my code to 
>>>>>>> PetscInt?
>>>>>>> 
>>>>>>> Will it cause any conflict or waste a lot of memory?
>>>>>>> 
>>>>>>> Or should I only change those related to PETSc?
>>>>>>      That is up to you. Since you probably pass the values between PETSc 
>>>>>> and non-PETSc part of the code it is probably easier just to make all 
>>>>>> the integer PetscInt instead. No performance difference that you can 
>>>>>> measure by keeping a few integer around.
>>>>>> 
>>>>>>      Barry
>>>>> Hi,
>>>>> 
>>>>> For some small parts of the code, it is preferred to use integer
>>>>> instead. Btw, to force variable as integer, I can use int(aa). However,
>>>>> I tried to force variable as PetscInt using PetscInt(aa) but it can't 
>>>>> work.
>>>>> 
>>>>> Is there any way I can make it work?
>>>>> 
>>>>> I think you just define a PetscInt variable and use assignment.
>>>>> 
>>>>>    Matt
>>>>>  Thanks.
>>>>>>> Thanks!
>>>>>>>>> On Aug 30, 2018, at 9:35 PM, TAY wee-beng <zon...@gmail.com> wrote:
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On 31/8/2018 10:21 AM, Matthew Knepley wrote:
>>>>>>>>>> On Thu, Aug 30, 2018 at 10:17 PM TAY wee-beng <zon...@gmail.com> 
>>>>>>>>>> wrote:
>>>>>>>>>> Hi,
>>>>>>>>>> 
>>>>>>>>>> Due to my increase grid size, I have to go 64bit. I compiled the 
>>>>>>>>>> 64bit
>>>>>>>>>> PETSc w/o error. However, when I tried to compile my code using the
>>>>>>>>>> 64bit PETSc, I got the error below. May I know why is this so?
>>>>>>>>>> 
>>>>>>>>>> What changes should I make?
>>>>>>>>>> 
>>>>>>>>>> Is it possible that you did not declare some inputs as PetscInt, so 
>>>>>>>>>> the interface check is failing?
>>>>>>>>>> 
>>>>>>>>>>     Matt
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> I'm using the standard
>>>>>>>>> 
>>>>>>>>> integer ::
>>>>>>>>> 
>>>>>>>>> real(8) ::
>>>>>>>>> 
>>>>>>>>> for some variables. For some others relating to PETSc, I use PetscInt.
>>>>>>>>> 
>>>>>>>>> Should I change all to PetscInt and PetscReal?
>>>>>>>>> 
>>>>>>>>> Currently, I use real(8) for all real values. If I change all to 
>>>>>>>>> PetscReal, will PetscReal be real or real(8) by default?
>>>>>>>>> 
>>>>>>>>> Thanks!
>>>>>>>>>>   [tsltaywb@nus02 ibm3d_IIB_mpi]$ make -f makefile_2018
>>>>>>>>>> /app/intel/xe2018/compilers_and_libraries_2018.0.128/linux/mpi/intel64/bin/mpif90
>>>>>>>>>> -g -ip -ipo -O3 -c -fPIC  -save kinefunc.F90
>>>>>>>>>> /app/intel/xe2018/compilers_and_libraries_2018.0.128/linux/mpi/intel64/bin/mpif90
>>>>>>>>>> -g -ip -ipo -O3 -c -fPIC  -save  -w
>>>>>>>>>> -I/home/users/nus/tsltaywb/propeller/lib/petsc-3.9.3_intel_2018_64bit_rel/include
>>>>>>>>>> -I/app/intel/xe2018/compilers_and_libraries_2018.0.128/linux/mpi/intel64/include
>>>>>>>>>> global.F90
>>>>>>>>>> global.F90(979): error #6285: There is no matching specific 
>>>>>>>>>> subroutine
>>>>>>>>>> for this generic subroutine call.   [DMDACREATE3D]
>>>>>>>>>> call
>>>>>>>>>> DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&
>>>>>>>>>> -----^
>>>>>>>>>> global.F90(989): error #6285: There is no matching specific 
>>>>>>>>>> subroutine
>>>>>>>>>> for this generic subroutine call.   [DMDACREATE3D]
>>>>>>>>>>       call
>>>>>>>>>> DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&
>>>>>>>>>> ---------^
>>>>>>>>>> global.F90(997): error #6285: There is no matching specific 
>>>>>>>>>> subroutine
>>>>>>>>>> for this generic subroutine call.   [DMDACREATE3D]
>>>>>>>>>>       call
>>>>>>>>>> DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&
>>>>>>>>>> ---------^
>>>>>>>>>> global.F90(1005): error #6285: There is no matching specific 
>>>>>>>>>> subroutine
>>>>>>>>>> for this generic subroutine call.   [DMDACREATE3D]
>>>>>>>>>>       call
>>>>>>>>>> DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&
>>>>>>>>>> ---------^
>>>>>>>>>> global.F90(1013): error #6285: There is no matching specific 
>>>>>>>>>> subroutine
>>>>>>>>>> for this generic subroutine call.   [DMDACREATE3D]
>>>>>>>>>>       call
>>>>>>>>>> DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&
>>>>>>>>>> ---------^
>>>>>>>>>> global.F90(1021): error #6285: There is no matching specific 
>>>>>>>>>> subroutine
>>>>>>>>>> for this generic subroutine call.   [DMDACREATE3D]
>>>>>>>>>>       call
>>>>>>>>>> DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&
>>>>>>>>>> ---------^
>>>>>>>>>> global.F90(1029): error #6285: There is no matching specific 
>>>>>>>>>> subroutine
>>>>>>>>>> for this generic subroutine call.   [DMDACREATE3D]
>>>>>>>>>>       call
>>>>>>>>>> DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&
>>>>>>>>>> ---------^
>>>>>>>>>> compilation aborted for global.F90 (code 1)
>>>>>>>>>> 
>>>>>>>>>> -- 
>>>>>>>>>> Thank you very much.
>>>>>>>>>> 
>>>>>>>>>> Yours sincerely,
>>>>>>>>>> 
>>>>>>>>>> ================================================
>>>>>>>>>> TAY Wee-Beng (Zheng Weiming) 郑伟明
>>>>>>>>>> Personal research webpage: http://tayweebeng.wixsite.com/website
>>>>>>>>>> Youtube research showcase: 
>>>>>>>>>> https://www.youtube.com/channel/UC72ZHtvQNMpNs2uRTSToiLA
>>>>>>>>>> linkedin: www.linkedin.com/in/tay-weebeng
>>>>>>>>>> ================================================
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> -- 
>>>>>>>>>> What most experimenters take for granted before they begin their 
>>>>>>>>>> experiments is infinitely more interesting than any results to which 
>>>>>>>>>> their experiments lead.
>>>>>>>>>> -- Norbert Wiener
>>>>>>>>>> 
>>>>>>>>>> https://www.cse.buffalo.edu/~knepley/
>>>>> 
>>>>> 
>>>>> -- 
>>>>> What most experimenters take for granted before they begin their 
>>>>> experiments is infinitely more interesting than any results to which 
>>>>> their experiments lead.
>>>>> -- Norbert Wiener
>>>>> 
>>>>> https://www.cse.buffalo.edu/~knepley/
> 

Reply via email to