[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

20030805: NEC performance issues (cont.)



Matt,

>Date: Tue, 05 Aug 2003 08:48:52 -0600
>From: Russ Rew <address@hidden>
>Organization: UCAR Unidata Program
>To: Matt Huddleston <address@hidden>
>Subject: Re: 20030627: NEC performance issues (cont.) 

The above message contained the following:

> > Well, I've solved my performance problems.  Here are two pieces of code
> > that do the same thing :
> > 
> > (A)
> > DO Iob=1,NumOb
> >   iret = nf90_put_var(ncid,  potm_id, RealNobNLevVar(IOb,:), &
> >                                                     start=(/1,IOb/))
> > ENDDO
> > 
> > (B)
> > iret = nf90_put_var(ncid, potm_id, RealNobNLevVar,    &
> >           count=(/NumObLevUsed,NumOb/), map=(/ NumOb,1 /) )

I'm afraid I don't understand the above examples.  In example A,
variable "IOb" is used to index the inner dimension of "RealNobNLevVar"
but is the index of the outer netCDF dimension in the "start" vector.

In example B, the "map" vector indicates that adjacent elements along the
inner dimension of the netCDF variable "potm_id" correspond to elements
in "RealNobNLevVar" that are "NumOb" elements apart.

Are you transposing the array?

Regards,
Steve Emmerson