<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">You can use PetscMPIInt for integers in MPI calls.<div class=""><br class=""></div><div class="">Check petscsys.h for definitions of all of these.</div><div class=""><br class=""></div><div class="">Randy</div><div class=""><br class=""></div><div class=""><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Sep 5, 2018, at 8:56 PM, TAY wee-beng <<a href="mailto:zonexo@gmail.com" class="">zonexo@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">
  
  <div text="#000000" bgcolor="#FFFFFF" class=""><p class="">Hi,</p><p class="">My code has some problems now after converting to 64bit indices.</p><p class="">After debugging, I realised that I'm using:</p><p class="">call
MPI_ALLGATHER(counter,1,MPI_INTEGER,counter_global,1,MPI_INTEGER,MPI_COMM_WORLD,ierr)</p><p class="">but now counter and counter_global are both 64bit integers. So
      should I change all mpi routine from MPI_INTEGER to MPI_INTEGER8?</p><p class="">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?</p><p class="">Is there an easier way?<br class="">
    </p>
    <pre class="moz-signature" cols="72">Thank you very much.

Yours sincerely,

================================================
TAY Wee-Beng (Zheng Weiming) 郑伟明
Personal research webpage: <a class="moz-txt-link-freetext" href="http://tayweebeng.wixsite.com/website">http://tayweebeng.wixsite.com/website</a>
Youtube research showcase: <a class="moz-txt-link-freetext" href="https://www.youtube.com/channel/UC72ZHtvQNMpNs2uRTSToiLA">https://www.youtube.com/channel/UC72ZHtvQNMpNs2uRTSToiLA</a>
linkedin: <a class="moz-txt-link-abbreviated" href="http://www.linkedin.com/in/tay-weebeng">www.linkedin.com/in/tay-weebeng</a>
================================================</pre>
    <div class="moz-cite-prefix">On 5/9/2018 6:25 PM, Matthew Knepley
      wrote:<br class="">
    </div>
    <blockquote type="cite" cite="mid:CAMYG4G=8n8V2TkqR+T7y+Pbsi0C83hERtbhSUB4j3C83sOwujA@mail.gmail.com" class="">
      <meta http-equiv="content-type" content="text/html; charset=utf-8" class="">
      <div dir="ltr" class="">
        <div class="gmail_quote">
          <div dir="ltr" class="">On Wed, Sep 5, 2018 at 3:27 AM TAY wee-beng
            <<a href="mailto:zonexo@gmail.com" moz-do-not-send="true" class="">zonexo@gmail.com</a>>
            wrote:<br class="">
          </div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="">
            On 31/8/2018 10:43 AM, Smith, Barry F. wrote:<br class="">
            ><br class="">
            >> On Aug 30, 2018, at 9:40 PM, TAY wee-beng <<a href="mailto:zonexo@gmail.com" target="_blank" moz-do-not-send="true" class="">zonexo@gmail.com</a>> wrote:<br class="">
            >><br class="">
            >><br class="">
            >> On 31/8/2018 10:38 AM, Smith, Barry F. wrote:<br class="">
            >>>    PetscReal is by default real(8) you can
            leave those alone<br class="">
            >>><br class="">
            >>>     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.<br class="">
            >>><br class="">
            >>>     Barry<br class="">
            >>><br class="">
            >> Hi,<br class="">
            >><br class="">
            >> ok, I got it. Btw, is it advisable to change all
            integer in my code to PetscInt?<br class="">
            >><br class="">
            >> Will it cause any conflict or waste a lot of
            memory?<br class="">
            >><br class="">
            >> Or should I only change those related to PETSc?<br class="">
            >      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.<br class="">
            ><br class="">
            >      Barry<br class="">
            Hi,<br class="">
            <br class="">
            For some small parts of the code, it is preferred to use
            integer <br class="">
            instead. Btw, to force variable as integer, I can use
            int(aa). However, <br class="">
            I tried to force variable as PetscInt using PetscInt(aa) but
            it can't work.<br class="">
            <br class="">
            Is there any way I can make it work?<br class="">
          </blockquote>
          <div class=""><br class="">
          </div>
          <div class="">I think you just define a PetscInt variable and use
            assignment.</div>
          <div class=""><br class="">
          </div>
          <div class="">   Matt</div>
          <div class=""> </div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            Thanks.<br class="">
            >> Thanks!<br class="">
            >>>> On Aug 30, 2018, at 9:35 PM, TAY wee-beng
            <<a href="mailto:zonexo@gmail.com" target="_blank" moz-do-not-send="true" class="">zonexo@gmail.com</a>> wrote:<br class="">
            >>>><br class="">
            >>>><br class="">
            >>>> On 31/8/2018 10:21 AM, Matthew Knepley
            wrote:<br class="">
            >>>>> On Thu, Aug 30, 2018 at 10:17 PM TAY
            wee-beng <<a href="mailto:zonexo@gmail.com" target="_blank" moz-do-not-send="true" class="">zonexo@gmail.com</a>>
            wrote:<br class="">
            >>>>> Hi,<br class="">
            >>>>><br class="">
            >>>>> Due to my increase grid size, I have to
            go 64bit. I compiled the 64bit<br class="">
            >>>>> PETSc w/o error. However, when I tried
            to compile my code using the<br class="">
            >>>>> 64bit PETSc, I got the error below. May
            I know why is this so?<br class="">
            >>>>><br class="">
            >>>>> What changes should I make?<br class="">
            >>>>><br class="">
            >>>>> Is it possible that you did not declare
            some inputs as PetscInt, so the interface check is failing?<br class="">
            >>>>><br class="">
            >>>>>     Matt<br class="">
            >>>> Hi,<br class="">
            >>>><br class="">
            >>>> I'm using the standard<br class="">
            >>>><br class="">
            >>>> integer ::<br class="">
            >>>><br class="">
            >>>> real(8) ::<br class="">
            >>>><br class="">
            >>>> for some variables. For some others
            relating to PETSc, I use PetscInt.<br class="">
            >>>><br class="">
            >>>> Should I change all to PetscInt and
            PetscReal?<br class="">
            >>>><br class="">
            >>>> Currently, I use real(8) for all real
            values. If I change all to PetscReal, will PetscReal be real
            or real(8) by default?<br class="">
            >>>><br class="">
            >>>> Thanks!<br class="">
            >>>>>   <br class="">
            >>>>> [tsltaywb@nus02 ibm3d_IIB_mpi]$ make -f
            makefile_2018<br class="">
            >>>>>
/app/intel/xe2018/compilers_and_libraries_2018.0.128/linux/mpi/intel64/bin/mpif90<br class="">
            >>>>> -g -ip -ipo -O3 -c -fPIC  -save
            kinefunc.F90<br class="">
            >>>>>
/app/intel/xe2018/compilers_and_libraries_2018.0.128/linux/mpi/intel64/bin/mpif90<br class="">
            >>>>> -g -ip -ipo -O3 -c -fPIC  -save  -w<br class="">
            >>>>>
-I/home/users/nus/tsltaywb/propeller/lib/petsc-3.9.3_intel_2018_64bit_rel/include<br class="">
            >>>>>
-I/app/intel/xe2018/compilers_and_libraries_2018.0.128/linux/mpi/intel64/include<br class="">
            >>>>> global.F90<br class="">
            >>>>> global.F90(979): error #6285: There is
            no matching specific subroutine<br class="">
            >>>>> for this generic subroutine call. 
             [DMDACREATE3D]<br class="">
            >>>>> call<br class="">
            >>>>>
DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&<br class="">
            >>>>> -----^<br class="">
            >>>>> global.F90(989): error #6285: There is
            no matching specific subroutine<br class="">
            >>>>> for this generic subroutine call. 
             [DMDACREATE3D]<br class="">
            >>>>>       call<br class="">
            >>>>>
DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&<br class="">
            >>>>> ---------^<br class="">
            >>>>> global.F90(997): error #6285: There is
            no matching specific subroutine<br class="">
            >>>>> for this generic subroutine call. 
             [DMDACREATE3D]<br class="">
            >>>>>       call<br class="">
            >>>>>
DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&<br class="">
            >>>>> ---------^<br class="">
            >>>>> global.F90(1005): error #6285: There is
            no matching specific subroutine<br class="">
            >>>>> for this generic subroutine call. 
             [DMDACREATE3D]<br class="">
            >>>>>       call<br class="">
            >>>>>
DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&<br class="">
            >>>>> ---------^<br class="">
            >>>>> global.F90(1013): error #6285: There is
            no matching specific subroutine<br class="">
            >>>>> for this generic subroutine call. 
             [DMDACREATE3D]<br class="">
            >>>>>       call<br class="">
            >>>>>
DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&<br class="">
            >>>>> ---------^<br class="">
            >>>>> global.F90(1021): error #6285: There is
            no matching specific subroutine<br class="">
            >>>>> for this generic subroutine call. 
             [DMDACREATE3D]<br class="">
            >>>>>       call<br class="">
            >>>>>
DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&<br class="">
            >>>>> ---------^<br class="">
            >>>>> global.F90(1029): error #6285: There is
            no matching specific subroutine<br class="">
            >>>>> for this generic subroutine call. 
             [DMDACREATE3D]<br class="">
            >>>>>       call<br class="">
            >>>>>
DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&<br class="">
            >>>>> ---------^<br class="">
            >>>>> compilation aborted for global.F90
            (code 1)<br class="">
            >>>>><br class="">
            >>>>> -- <br class="">
            >>>>> Thank you very much.<br class="">
            >>>>><br class="">
            >>>>> Yours sincerely,<br class="">
            >>>>><br class="">
            >>>>>
            ================================================<br class="">
            >>>>> TAY Wee-Beng (Zheng Weiming) 郑伟明<br class="">
            >>>>> Personal research webpage: <a href="http://tayweebeng.wixsite.com/website" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">http://tayweebeng.wixsite.com/website</a><br class="">
            >>>>> Youtube research showcase: <a href="https://www.youtube.com/channel/UC72ZHtvQNMpNs2uRTSToiLA" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">https://www.youtube.com/channel/UC72ZHtvQNMpNs2uRTSToiLA</a><br class="">
            >>>>> linkedin: <a href="http://www.linkedin.com/in/tay-weebeng" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">www.linkedin.com/in/tay-weebeng</a><br class="">
            >>>>>
            ================================================<br class="">
            >>>>><br class="">
            >>>>><br class="">
            >>>>><br class="">
            >>>>> -- <br class="">
            >>>>> What most experimenters take for
            granted before they begin their experiments is infinitely
            more interesting than any results to which their experiments
            lead.<br class="">
            >>>>> -- Norbert Wiener<br class="">
            >>>>><br class="">
            >>>>> <a href="https://www.cse.buffalo.edu/%7Eknepley/" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">https://www.cse.buffalo.edu/~knepley/</a><br class="">
            <br class="">
          </blockquote>
        </div>
        <br clear="all" class="">
        <div class=""><br class="">
        </div>
        -- <br class="">
        <div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">
          <div dir="ltr" class="">
            <div class="">
              <div dir="ltr" class="">
                <div class="">
                  <div dir="ltr" class="">
                    <div class="">What most experimenters take for granted before
                      they begin their experiments is infinitely more
                      interesting than any results to which their
                      experiments lead.<br class="">
                      -- Norbert Wiener</div>
                    <div class=""><br class="">
                    </div>
                    <div class=""><a href="http://www.cse.buffalo.edu/%7Eknepley/" target="_blank" moz-do-not-send="true" class="">https://www.cse.buffalo.edu/~knepley/</a><br class="">
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br class="">
  </div>

</div></blockquote></div><br class=""></div></div></body></html>