Again I solve this problem through alternatively typing the variable:<br><br>#ifdef PNETCDF<br>&nbsp; use parallel_mod, only : nfsizekind=&gt;mpi_offset_kind<br>#else<br>&nbsp; use kinds, only : nfsizekind=&gt;int_kind<br>#endif<br>
<br>&nbsp; integer(kind=nfsizekind),parameter :: unlim_dim=nf_unlimited<br><br><br><div><span class="gmail_quote">On 10/25/06, <b class="gmail_sendername">John Michalakes</b> &lt;<a href="mailto:john@michalakes.us">john@michalakes.us
</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">That would be helpful. But I think putting 32 in the name would be<br>
misleading, since this is only an issue on 64 bit compiles.&nbsp;&nbsp;(On 32 bit<br>compiles, MPI_Offset is the same length as a Fortran INTEGER).<br><br>John<br><br>&gt; -----Original Message-----<br>&gt; From: William Gropp [mailto:
<a href="mailto:gropp@mcs.anl.gov">gropp@mcs.anl.gov</a>]<br>&gt; Sent: Wednesday, October 25, 2006 9:51 AM<br>&gt; To: <a href="mailto:john@michalakes.us">john@michalakes.us</a><br>&gt; Cc: <a href="mailto:parallel-netcdf@mcs.anl.gov">
parallel-netcdf@mcs.anl.gov</a><br>&gt; Subject: Re: Issue with &quot;integer&quot; arguments in Fortran API for PNetCDF<br>&gt;<br>&gt;<br>&gt; As the Fortran interfaces are generated with a script, we could<br>&gt; create an alternate version that was closer to the serial NetCDF
<br>&gt; interface, using a different prefix to avoid confusion (e.g., maybe<br>&gt; nf32mpi_xxx).&nbsp;&nbsp;Would that help?&nbsp;&nbsp;What do others think of that approach?<br>&gt;<br>&gt; Bill<br>&gt;<br>&gt; On Oct 25, 2006, at 2:06 AM, John Michalakes wrote:
<br>&gt;<br>&gt; &gt; PS... There is a problem with the pnetcdf.inc file itself.&nbsp;&nbsp;This file<br>&gt; &gt; defines INTEGER parameters such as NF_UNLIMITED which may be used as<br>&gt; &gt; arguments to NFMPI_* routines that are defined as
<br>&gt; &gt; INTEGER(KIND=MPI_OFFSET_KIND). An example is the 3rd argument of:<br>&gt; &gt;<br>&gt; &gt; FORTRAN_API int FORT_CALL nfmpi_def_dim_ ( int *v1, char *v2<br>&gt; &gt; FORT_MIXED_LEN(d2), MPI_Offset *v3, MPI_Fint *v4 FORT_END_LEN(d2) )
<br>&gt; &gt;<br>&gt; &gt; Since MPI_Offset can be 64-bits if compiled with OBJECT_MODE 64 on<br>&gt; &gt; the IBM,<br>&gt; &gt; passing NF_UNLIMITED (32-bits) as the third argument is incorrect.<br>&gt; &gt;<br>&gt; &gt; John
<br>&gt; &gt;<br>&gt; &gt;&gt; -----Original Message-----<br>&gt; &gt;&gt; From: <a href="mailto:owner-parallel-netcdf@mcs.anl.gov">owner-parallel-netcdf@mcs.anl.gov</a><br>&gt; &gt;&gt; [mailto:<a href="mailto:owner-parallel-netcdf@mcs.anl.gov">
owner-parallel-netcdf@mcs.anl.gov</a>]On Behalf Of John<br>&gt; &gt;&gt; Michalakes<br>&gt; &gt;&gt; Sent: Tuesday, October 24, 2006 3:30 PM<br>&gt; &gt;&gt; To: <a href="mailto:parallel-netcdf@mcs.anl.gov">parallel-netcdf@mcs.anl.gov
</a><br>&gt; &gt;&gt; Subject: Issue with &quot;integer&quot; arguments in Fortran API for PNetCDF<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I'm having a problem adapting parallel NetCDF as an option in the WRF<br>
&gt; &gt;&gt; (Weather Research and Forecast) model I/O API. WRF currently supports<br>&gt; &gt;&gt; non-parallel NetCDF, and we're now trying to extend the model to<br>&gt; &gt;&gt; use the new<br>&gt; &gt;&gt; parallel NetCDF code. Have run into a problem with some of the
<br>&gt; &gt;&gt; arguments in<br>&gt; &gt;&gt; the API for parallel-NetCDF:<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; The original NetCDF Fortran API defines lengths, starts, and<br>&gt; &gt;&gt; other arguments<br>&gt; &gt;&gt; as INTEGER. PnetCDF recasts some (but not all) of these arguments as
<br>&gt; &gt;&gt; MPI_Offset. We compile WRF with OBJECT_MODE 64 on the IBMs where<br>&gt; &gt;&gt; KIND=MPI_OFFSET_KIND works out to 8 bytes. Thus, the calls in WRF<br>&gt; &gt;&gt; that pass<br>&gt; &gt;&gt; these arguments as 32-bit INTEGERs from Fortran are causing
<br>&gt; &gt;&gt; PNetCDF to see<br>&gt; &gt;&gt; garbage in the high four bytes of the dummy argument. For example,<br>&gt; &gt;&gt; the<br>&gt; &gt;&gt; length argument to NFMPI_DEF_DIM ends up being 73 + a very-large-<br>
&gt; &gt;&gt; garbage<br>&gt; &gt;&gt; value instead of 73.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I was hoping for a relatively quick drop-in of PnetCDF into WRF<br>&gt; &gt;&gt; I/O API but<br>&gt; &gt;&gt; this now seems unlikely. There is a large amount of NetCDF
<br>&gt; &gt;&gt; interface code in<br>&gt; &gt;&gt; WRF that will need to be gone through.&nbsp;&nbsp;Or I can write a wrapper<br>&gt; &gt;&gt; lib for all<br>&gt; &gt;&gt; these routines.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Has anyone done this already? What's needed is for the wrapper
<br>&gt; &gt;&gt; routine to<br>&gt; &gt;&gt; accept INTEGER arguments and copy them to INTEGER<br>&gt; &gt;&gt; (KIND=MPI_OFFSET_KIND) to<br>&gt; &gt;&gt; be used as arguments to the actual NFMPI_* routines in PNetCDF and
<br>&gt; &gt;&gt; (in the<br>&gt; &gt;&gt; case of return values) copy them back to INTEGER again.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Not arguing, but curious: since PNetCDF is supposed to be a parallel<br>&gt; &gt;&gt; implementation of the NetCDF API, why was the API altered this way
<br>&gt; &gt;&gt; to use<br>&gt; &gt;&gt; arguments of type MPI_Offset instead of INTEGER? At least for what<br>&gt; &gt;&gt; I'm<br>&gt; &gt;&gt; trying to do, it is a significant impediment.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I really appreciate that parallel NetCDF is being developed. It
<br>&gt; &gt;&gt; is very much<br>&gt; &gt;&gt; needed, especially now as we try moving to Petascale. Kudos to the<br>&gt; &gt;&gt; developers.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; John<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; -----------------------------------------------------------
<br>&gt; &gt;&gt; John Michalakes, Software Engineer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:michalak@ucar.edu">michalak@ucar.edu</a><br>&gt; &gt;&gt; NCAR, MMM Division&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voice: +1 303 497 8199<br>&gt; &gt;&gt; 3450 Mitchell Lane&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fax: +1 303 497 8181
<br>&gt; &gt;&gt; Boulder, Colorado 80301 U.S.A.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cell: +1 720 209 2320<br>&gt; &gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.mmm.ucar.edu/individual/michalakes">http://www.mmm.ucar.edu/individual/michalakes</a><br>&gt; &gt;&gt; -----------------------------------------------------------
<br>&gt; &gt;&gt;<br>&gt; &gt;<br>&gt;<br><br></blockquote></div><br>