MPICH error when using petsc-3.0.0-p4

Wee-Beng TAY zonexo at gmail.com
Mon Apr 13 11:11:10 CDT 2009


Hi Satish,

Compiling and building now worked without error. However, when I run, I 
get the error:

0 - MPI_ISEND : Datatype is MPI_TYPE_NULL
[0]  Aborting program !
[0] Aborting program!
Error 323, process 0, host GOTCHAMA-E73BB3:

The problem lies in this subroutine:

subroutine v_ast_row_copy

#include "finclude/petsc.h"
#include "finclude/petscvec.h"
#include "finclude/petscmat.h"
#include "finclude/petscksp.h"
#include "finclude/petscpc.h"
#include "finclude/petscsys.h"

!to copy data of jend row to others

integer :: inext,iprev,istatus(MPI_STATUS_SIZE),irecv1,ierr,isend1

inext = myid + 1
iprev = myid - 1

if (myid == num_procs - 1) inext = MPI_PROC_NULL

if (myid == 0) iprev = MPI_PROC_NULL

CALL 
MPI_ISEND(v_ast(1,jend),size_x,MPI_REAL8,inext,1,MPI_COMM_WORLD,isend1,ierr)
CALL 
MPI_IRECV(v_ast(1,jsta-1),size_x,MPI_REAL8,iprev,1,MPI_COMM_WORLD,irecv1,ierr)
CALL MPI_WAIT(isend1, istatus, ierr)
CALL MPI_WAIT(irecv1, istatus, ierr)

end subroutine v_ast_row_copy


I copied this subroutine from the RS6000 mpi manual and it used to work. 
I wonder if this is a MPI or PETSc problem? Strange because I already 
specify the type to be MPI_REAL8. However changing to MPI_REAL solves 
the problem.

If this is a MPI problem, then you can just ignore it. I'll check it in 
some MPI forum.


Thank you very much and have a nice day!

Yours sincerely,

Wee-Beng Tay



Satish Balay wrote:
> Yes - all includes statements in both the sourcefiles should start
> with "finclude/..." [so that -Id:\cygwin\codes\petsc-3.0.0-p4 is not
> needed]
>
> And where you needed PETSC_AVOID_DECLARATIONS - you need to use the
> 'def.h' equivelent includes.. The def.h files have only the
> declarations [so the PETSC_AVOID_DECLARATIONS flag is no longer
> needed/used]. You need only the definitions in the datasection of
> 'module flux_area'. [All subroutines should use the regular includes]
>
> Satish
>
>
> On Mon, 13 Apr 2009, Wee-Beng TAY wrote:
>
>   
>> Hi Satish,
>>
>> I now used
>>
>> #include "finclude/petsc.h"
>> #include "finclude/petscvec.h"
>> #include "finclude/petscmat.h"
>> #include "finclude/petscksp.h"
>> #include "finclude/petscpc.h"
>> #include "finclude/petscsys.h"
>>
>> for global.F and
>>
>> #include "finclude/petscdef.h"
>> #include "finclude/petscvecdef.h"
>> #include "finclude/petscmatdef.h"
>> #include "finclude/petsckspdef.h"
>> #include "finclude/petscpcdef.h"
>>
>> for flux_area.f90 and it's working now. Can you explain what's happening? Is
>> this the correct way then?
>>
>> Thank you very much and have a nice day!
>>
>> Yours sincerely,
>>
>> Wee-Beng Tay
>>
>>
>>
>> Satish Balay wrote:
>>     
>>> 2 changes you have to make for 3.0.0
>>>
>>> 1. "include/finclude.. -> "finclude..."
>>>
>>> 2. PETSC_AVOID_DECLARATIONS should be removed - and use petscdef.h
>>> equivalnet files.
>>> i.e
>>>
>>> change:
>>> #define PETSC_AVOID_DECLARATIONS
>>> #include "include/finclude/petsc.h"
>>> #include "include/finclude/petscvec.h"
>>> #include "include/finclude/petscmat.h"
>>> #include "include/finclude/petscksp.h"
>>> #include "include/finclude/petscpc.h"
>>> #undef PETSC_AVOID_DECLARATIONS
>>>
>>> to:
>>> #include "finclude/petscdef.h"
>>> #include "finclude/petscvecdef.h"
>>> #include "finclude/petscmatdef.h"
>>> #include "finclude/petsckspdef.h"
>>> #include "finclude/petscpcdef.h"
>>>
>>> Satish
>>>
>>> On Sun, 12 Apr 2009, Wee-Beng TAY wrote:
>>>
>>>   
>>>       
>>>> Hi Satish,
>>>>
>>>> I am now using the PETSc ex2f example. I tried "make ex2f" and manage to
>>>> build
>>>> and run the file. Then I used the options as a reference for my visual
>>>> fortran
>>>> and it worked.
>>>>
>>>> The options are:
>>>>
>>>> /compile_only /debug:full /include:"Debug/"
>>>> /include:"d:\cygwin\codes\petsc-3.0.0-p4\win32_mpi_debug\include"
>>>> /include:"d:\cygwin\codes\petsc-3.0.0-p4\include"
>>>> /include:"E:\cygwin\codes\MPICH\SDK\include" /nologo /threads
>>>> /warn:nofileopt
>>>> /module:"Debug/" /object:"Debug/" /pdbfile:"Debug/DF60.PDB" /fpp:"/m"
>>>>
>>>> and
>>>>
>>>> ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
>>>> advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
>>>> odbccp32.lib libpetscts.lib libpetscsnes.lib libpetscksp.lib
>>>> libpetscdm.lib
>>>> libpetscmat.lib libpetscvec.lib libpetsc.lib mpich.lib libfblas.lib
>>>> libflapack.lib /nologo /subsystem:console /incremental:yes
>>>> /pdb:"Debug/ex2f.pdb" /debug /machine:I386 /out:"Debug/ex2f.exe"
>>>> /pdbtype:sept
>>>> /libpath:"d:\cygwin\codes\petsc-3.0.0-p4\win32_mpi_debug\lib"
>>>> /libpath:"E:\cygwin\codes\MPICH\SDK\lib"
>>>>
>>>> Now I add my own file called global.F and tried to compile, using the same
>>>> options.But now it failed. The error is:
>>>>
>>>> --------------------Configuration: ex2f - Win32 Debug--------------------
>>>> Compiling Fortran...
>>>> ------------------------------------------------------------------------
>>>> D:\cygwin\codes\petsc-3.0.0-p4\projects\fortran\ksp\ex2f\global.F:
>>>>    7: #include "include/finclude/petsc.h"
>>>>        ^
>>>> ** error  on line 7 in D:\cygwin\codes\pets: cannot find file specified
>>>>     in include directive.
>>>>    8: #include "include/finclude/petscvec.h"
>>>>        ^
>>>> ** error  on line 8 in D:\cygwin\codes\pets: cannot find file specified
>>>>     in include directive.
>>>>    9: #include "include/finclude/petscmat.h"
>>>>        ^
>>>> ** error  on line 9 in D:\cygwin\codes\pets: cannot find file specified
>>>>     in include directive.
>>>>   10: #include "include/finclude/petscksp.h"
>>>>        ^
>>>> ** error  on line 10 in D:\cygwin\codes\pets: cannot find file
>>>>     specified in include directive.
>>>>   11: #include "include/finclude/petscpc.h"
>>>>        ^
>>>> ** error  on line 11 in D:\cygwin\codes\pets: cannot find file
>>>>     specified in include directive.
>>>>   12: #include "include/finclude/petscsys.h"
>>>>        ^
>>>> ** error  on line 12 in D:\cygwin\codes\pets: cannot find file
>>>>     specified in include directive.
>>>>   97: #include "include/finclude/petsc.h"
>>>>        ^
>>>> ** error  on line 97 in D:\cygwin\codes\pets: cannot find file
>>>>     specified in include directive.
>>>>   98: #include "include/finclude/petscvec.h"
>>>>        ^
>>>> ** error  on line 98 in D:\cygwin\codes\pets: cannot find file
>>>>     specified in include directive.
>>>>   99: #include "include/finclude/petscmat.h"
>>>>        ^
>>>> ** error  on line 99 in D:\cygwin\codes\pets: cannot find file
>>>>     specified in include directive.
>>>>  100: #include "include/finclude/petscksp.h"
>>>>        ^
>>>> ** error  on line 100 in D:\cygwin\codes\pets: cannot find file
>>>>     specified in include directive.
>>>>  101: #include "include/finclude/petscpc.h"
>>>>        ^
>>>> ** error  on line 101 in D:\cygwin\codes\pets: cannot find file
>>>>     specified in include directive.
>>>>  102: #include "include/finclude/petscsys.h"
>>>>        ^
>>>> ** error  on line 102 in D:\cygwin\codes\pets: cannot find file
>>>>     specified in include directive.
>>>> global.i
>>>> D:\cygwin\codes\petsc-3.0.0-p4\projects\fortran\ksp\ex2f\global.F(65) :
>>>> Error:
>>>> Syntax error, found ',' when expecting one of: ( : % . = =>
>>>> Vec    xx,b_rhs,xx_uv,b_rhs_uv
>>>> -----------------^
>>>> D:\cygwin\codes\petsc-3.0.0-p4\projects\fortran\ksp\ex2f\global.F(67) :
>>>> Error:
>>>> Syntax error, found ',' when expecting one of: ( : % . = =>
>>>> Mat    A_mat,A_mat_uv    !  /* sparse matrix */
>>>> --------------------^
>>>> D:\cygwin\codes\petsc-3.0.0-p4\projects\fortran\ksp\ex2f\global.F(69) :
>>>> Error:
>>>> Syntax error, found ',' when expecting one of: ( : % . = =>
>>>> KSP   ksp,ksp_uv    !/* linear solver context */
>>>> -----------------^
>>>> D:\cygwin\codes\petsc-3.0.0-p4\projects\fortran\ksp\ex2f\global.F(71) :
>>>> Error:
>>>> Syntax error, found ',' when expecting one of: ( : % . = =>
>>>> PC pc,pc_uv
>>>> ------------------^
>>>> D:\cygwin\codes\petsc-3.0.0-p4\projects\fortran\ksp\ex2f\global.F(73) :
>>>> Error:
>>>> Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
>>>> PCType      ptype
>>>> -------------------------^
>>>> D:\cygwin\codes\petsc-3.0.0-p4\projects\fortran\ksp\ex2f\global.F(75) :
>>>> Error:
>>>> Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
>>>> KSPType  ksptype....
>>>>
>>>>
>>>> I can get it to compile if I use :
>>>>
>>>> Debug/;d:\cygwin\codes\petsc-3.0.0-p4;d:\cygwin\codes\petsc-3.0.0-p4\include;d:\cygwin\codes\petsc-3.0.0-p4\win32_mpi_debug\include;E:\cygwin\codes\MPICH\SDK\include
>>>>
>>>> Compared to the original one above which is:
>>>>
>>>> Debug/;d:\cygwin\codes\petsc-3.0.0-p4\win32_mpi_debug\include;d:\cygwin\codes\petsc-3.0.0-p4\include;E:\cygwin\codes\MPICH\SDK\include
>>>>
>>>> Hence, there is an additional "d:\cygwin\codes\petsc-3.0.0-p4"
>>>>
>>>> I have attached my global.F. I wonder if this is the cause of the MPICH
>>>> error.
>>>>
>>>> Currently, I have removed all other f90 files, except for global.F and
>>>> flux_area.f90. It's when I 'm compiling flux_area.f90 that I got the MPI
>>>> error
>>>> stated below. I got the same error if I compile under cygwin using the
>>>> same
>>>> parameters.
>>>>
>>>> Hope you can help.
>>>>
>>>> Thank you very much and have a nice day!
>>>>
>>>> Yours sincerely,
>>>>
>>>> Wee-Beng Tay
>>>>
>>>>
>>>>
>>>> Satish Balay wrote:
>>>>     
>>>>         
>>>>> Do you get these errors with PETSc f90 examples?
>>>>>
>>>>> what 'USE statement' do you have in your code?
>>>>>
>>>>> I guess you'll have to check your code to see how you are using f90
>>>>> modules/includes.
>>>>>
>>>>> If you can get a minimal compileable code that can reproduce this
>>>>> error - send us the code so that we can reproduce the issue
>>>>>
>>>>> Satish
>>>>>
>>>>> On Thu, 9 Apr 2009, Wee-Beng TAY wrote:
>>>>>
>>>>>         
>>>>>           
>>>>>> Hi,
>>>>>>
>>>>>> I just built petsc-3.0.0-p4 with mpich and after that, I reinstalled
>>>>>> my
>>>>>> windows xp and installed mpich in the same directory. I'm using CVF
>>>>>>
>>>>>> Now, I found that when I'm trying to compile my code, I got the error:
>>>>>>
>>>>>> :\cygwin\codes\MPICH\SDK\include\mpif.h(105) : Error: The attributes
>>>>>> of
>>>>>> this
>>>>>> name conflict with those made accessible by a USE statement.
>>>>>> [MPI_STATUS_SIZE]
>>>>>>      INTEGER MPI_STATUS_IGNORE(MPI_STATUS_SIZE)
>>>>>> --------------------------------^
>>>>>> E:\cygwin\codes\MPICH\SDK\include\mpif.h(106) : Error: The attributes
>>>>>> of
>>>>>> this
>>>>>> name conflict with those made accessible by a USE statement.
>>>>>> [MPI_STATUS_SIZE]
>>>>>>      INTEGER MPI_STATUSES_IGNORE(MPI_STATUS_SIZE)
>>>>>> ----------------------------------^
>>>>>> E:\cygwin\codes\petsc-3.0.0-p4\include/finclude/petsc.h(154) : Error:
>>>>>> The
>>>>>> attributes of this name conflict with those made accessible by a USE
>>>>>> statement.   [MPI_DOUBLE_PRECISION]
>>>>>>      parameter(MPIU_SCALAR = MPI_DOUBLE_PRECISION)
>>>>>> ------------------------------^
>>>>>> Error executing df.exe.
>>>>>>
>>>>>> flux_area.obj - 3 error(s), 0 warning(s)
>>>>>>
>>>>>> My include option is :
>>>>>>
>>>>>> Debug/;$(PETSC_DIR);$(PETSC_DIR)\$(PETSC_ARCH)\;$(PETSC_DIR)\$(PETSC_ARCH)\include;$(PETSC_DIR)\include;E:\cygwin\codes\MPICH\SDK\include
>>>>>>
>>>>>>
>>>>>> Interestingly, when I change my PETSC_DIR to petsc-dev, which
>>>>>> correspond
>>>>>> to an
>>>>>> old build of petsc-2.3.3-p13, there is no problem.
>>>>>>
>>>>>> May I know what's wrong? Btw, I've converted my mpif.h from using "C"
>>>>>> as
>>>>>> comments to "!".
>>>>>>
>>>>>> Thank you very much and have a nice day!
>>>>>>
>>>>>> Yours sincerely,
>>>>>>
>>>>>> Wee-Beng Tay
>>>>>>
>>>>>>
>>>>>>             
>>>>>>             
>>>>>         
>>>>>           
>>>   
>>>       
>
>
>   


More information about the petsc-users mailing list