<br><font size=2 face="sans-serif">I absolutely agree with you, the -i8 stuff is tricky. We use it since our build system is not as sophisticated as the one for PETSc. Moreover it's sometimes difficult to find a particular library with a 64bits integer interface (for example, the Intel MKL BLAS didn't have such an interface until recent releases and the provided MPI implementation for our cluster doesn't either).</font>
<br>
<br><font size=2 face="sans-serif">Anyway thanks for your explanation.</font>
<br>
<br><font size=2 face="sans-serif">Thomas</font>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td>
<td><font size=1 face="sans-serif"><b>owner-petsc-dev@mcs.anl.gov</b></font>
<p><font size=1 face="sans-serif">07/04/2008 18:15</font>
<br><font size=1 face="sans-serif">Veuillez répondre à petsc-dev</font>
<br>
<td><font size=1 face="Arial">        </font>
<br><font size=1 face="sans-serif">        Pour :        petsc-dev@mcs.anl.gov</font>
<br><font size=1 face="sans-serif">        cc :        (ccc : Thomas DE-SOZA/RETD/EDFGDF/FR)</font>
<br><font size=1 face="sans-serif">        Objet :        Re: Réf. : Re: Fortran integer declaration in petscdef.h</font></table>
<br>
<br>
<br><font size=2 face="Courier New">On Mon, 7 Apr 2008, Thomas DE-SOZA wrote:<br>
<br>
> The reason I was asking about this is that in a previous version of PETSc <br>
> (2.3.2p10) we had had to modify petscdef.h in order to comply with our <br>
> code. Indeed our code is written mainly in Fortran77 with its own memory <br>
> manager (it is 20 years old) and to take full advantage of architectures <br>
> with a lot of memory we need to compile it with -i8 option (intel compiler <br>
> syntax) so that integers are 64bits wide. We use PETSc as a solver with <br>
> this code.<br>
> So PETSc was first compiled separetely in standard 32 bits mode, then the <br>
> PETSc Fortran interface to our code was compiled with the options -i8 and <br>
> it was messy (we encountered errors during initialization in MPI).<br>
> Recently we updated to the latest 2.3.3 version and found out that you had <br>
> updated petscdef.h so that it defines correctly integer*4 and integer*8 <br>
> when necessary. We didn't modify anything this time and it seems to work <br>
> OK. I looked closely at petscdef.h and saw that these two lines were the <br>
> only ones left as "integer", that's why I asked the question.<br>
<br>
Yeah - we take care of the PETSc parts to be -i8 neutral - but leave<br>
the MPI part unchanged . All this -i8 stuff is tricky - and it breaks<br>
c/fortran interoperability. Its fine as long as its used in<br>
*fortran-only* world.<br>
<br>
If you need -i8 - ideally you should compile everything - MPI, PETSc<br>
etc with this option. But I'm not sure if MPI part would work<br>
properly..<br>
<br>
If we set MPI_Comm to integer*4 in petscdef.h - and a fortran user<br>
uses integer [intead of MPI_Comm] in his part of MPI code [which would<br>
be valid usage as per MPI standard] - things will break with -i8.<br>
<br>
Satish<br>
<br>
</font>
<br>
<br>