|
From: Michael F. <mic...@no...> - 2011-10-14 18:04:52
|
hi Brian and Jennifer,
i noticed a diff in 'q shades' in gauser -- now using snprintf... this
tripped up my python the parses the output, just curious if this was
intended? not clear it really in is "<=" vice "<". the right hand side is the new gauser.c
the left older.
have a good weekend.
best /r mike
else if (cmpwrd(arg,"shades")) { | else if (cmpwrd(arg,"shades")) {
if (pcm->shdcnt<1) { | if (pcm->shdcnt<1) {
gaprnt(2,"None\n"); | gaprnt(2,"None\n");
} else { | } else {
sprintf(pout,"Number of levels = %i\n",pcm->shdcnt); | snprintf(pout,255,"Number of levels = %i\n",pcm->shdcnt);
gaprnt(2,pout); | gaprnt(2,pout);
for (i=0; i<pcm->shdcnt; i++) { | for (i=0; i<pcm->shdcnt; i++) {
if (i==0) | if (i==0)
sprintf (pout,"%i < %g\n",pcm->shdcls[i],pcm->shdlvs[1]); | snprintf(pout,255,"%i <= %g\n",pcm->shdcls[i],pcm->shdlvs[1]);
else if (i==pcm->shdcnt-1) | else if (i==pcm->shdcnt-1)
sprintf (pout,"%i %g >\n",pcm->shdcls[i],pcm->shdlvs[i]); | snprintf(pout,255,"%i %g >\n",pcm->shdcls[i],pcm->shdlvs[i]);
else | else
sprintf (pout,"%i %g %g\n",pcm->shdcls[i],pcm->shdlvs[i],pcm->shdlvs[i+1]); | snprintf(pout,255,"%i %g %g\n",pcm->shdcls[i],pcm->shdlvs[i],pcm->shdlvs[i+1]);
gaprnt(2,pout); | gaprnt(2,pout);
} | }
} | }
} | }
i've added your gxwmap.c to our opengrads/src (the only diff was your
caching code) and set
#define CACHEMAX 12000000
to handle the hires map as Gary suggested
i also added a tweak to 'set grid' to allow setting line thickness,
e.g.,
'set grid on 5 15 5'
to make the default grid a 5 thickness vice the default of 1
the mods are in grads.h, grads.c, gauser.c and gagx.c (attached).
that's the only tweaking i've done with the code the last couple of
years. i had added 'set z 1 last' but agree that it's not really proper
to support that option since 'z' is not the same kind of coordinate as
't'
best /r mike
On 10/13/11 7:23 PM, Brian Doty wrote:
> Hi Gary, I checked the font behavior, and it seems to be working as
> intended. I put a debug write statement in the routine that reads the
> font file, and it indicates it only gets called once, when a
> particular font is first used. I was testing with the COLA 2.0.0 code
> base. If you want to test with your version, you can put a debug
> write statement at the beginning of the function gxchrd in the
> gxchpl.c source file; gxchrd is the routine that actually reads in a
> font file... Brian
>
> On Oct 13, 2011, at 2:58 PM, Love, Mr. Gary, Contractor, Code 7542
> wrote:
>
>> Hi Brian,
>>
>> I think this solution is exactly on point and I will test it for
>> number of file reads and bytes read. This will be especially useful
>> when I convert to creating a series of plots within the same grads
>> sessions. I will be increasing CACHEMAX because we frequently use
>> the worldmap file for the ultra-high resolution coastlines. Since
>> it is 9671652 bytes, is 10MB big enough for CACHEMAX?
>>
>> When we profiled grads, an equal amount of bytes were read from the
>> font files as were read from the coastline files. I guess every
>> draw string must invoke a font read. Do you have a similar fix for
>> the font problem?
>>
>> Thanks,
>> Gary
>>
>> From: Brian Doty [mailto:do...@co...]
>> Sent: Thursday, October 13, 2011 7:56 AM
>> To: Love, Mr. Gary, Contractor, Code 7542
>> Cc: ope...@li...; Frost, Mr. Michael
>> Subject: Re: [Opengrads-devel] Dat File re-reads
>>
>> Ok, not too hard, I've added some basic caching of the map file to
>> gxwmap.c. The changes are all isolated to gxwmap.c for now. I kinda
>> did this quick so I haven't done a whole lot of testing on it. The
>> cache lasts for the entire grads session. I don't think this hurts
>> performance any for those cases when grads is just being run to do one
>> plot. This mod is applied to the gxwmap.c from the 2.0.0 code base --
>> but we will not include it in 2.0; it will be included in 2.1. Right
>> now the CACHEMAX is set to 2MB which will cache lowres, mres, and
>> hires. If you have your own map files that are larger, you may want
>> to increase the CACHEMAX value. This will have no affect on shapefile
>> usage.
>>
>> Gary, I'm not really sure this will help your situation; it will
>> depend on your system environment. Arlindo's suggestion to set up
>> some system-wide solution like a ramdisk may be more along the lines
>> of what you need... Brian
>>
>>
>>
>>
>> On Oct 12, 2011, at 8:38 PM, Love, Mr. Gary, Contractor, Code 7542
>> wrote:
>>
>>> Arlindo,
>>>
>>> We have some solid state disks that function as local disks because
>>> the global file systems running gpfs are too slow. So our challenge
>>> is how to accomplish how to do the shared memory which we also
>>> thought of using.
>>>
>>> Do you know if anyone else has this problem and who could benefit
>>> from the solution?
>>>
>>> Thanks for your input. Ill ask for more when we get into the
>>> project.
>>>
>>> Gary
>>>
>>> From: Arlindo da Silva [mailto:da...@al...]
>>> Sent: Wednesday, October 12, 2011 4:41 PM
>>> To: ope...@li...
>>> Cc: Brian Doty; Frost, Mr. Michael
>>> Subject: Re: [Opengrads-devel] Dat File re-reads
>>>
>>> On Wed, Oct 12, 2011 at 3:16 PM, Love, Mr. Gary, Contractor, Code
>>> 7542 <gar...@nr...> wrote:
>>> Hi Brian, Jennifer,
>>>
>>> We use GrADS extensively in a production mode and have found when
>>> profiling GrADS runs that 2/3 rds of the data reads are the
>>> coastlines and font files. This may not sound like much, but at
>>> FNMOC when running 100's of charts for each of 32 multi-grid
>>> projects, the coastline and font reads amount to terabytes for each
>>> 12 hour set of runs.
>>>
>>> The re-reads occur for each and every display of a variable from the
>>> same file after it is opened. We are going to try to store these
>>> files in memory after the first read.
>>>
>>> My first question is whether anyone else has looked at this and has
>>> a solution? My next questions, do you have any ideas or guidance to
>>> help us do this?
>>>
>>> I know that GrADS was designed to operate well on small platforms
>>> with little memory, so our goal is to implement a memory caching
>>> capability that would be controlled by a 'set' command and would be
>>> moderated by the amount of memory available.
>>>
>>> As Brian mentions, the map and font database are relatively small.
>>> So, it would be very feasible to setup a ramdisk to hold these files
>>> which would probably give you a nice performance boost with
>>> virtually no programming involved. Depending on your system
>>> architecture, this ramdisk could effectively function as "shared
>>> memory" used by multiple cores. (Because grads is not thread safe,
>>> having an explicit memory buffer to hold this would require that
>>> each grads process duplicate the memory necessary to hold the maps/
>>> font databases.) One hardware solution is to place grads and its
>>> data on a solid state disk, these are quite affordable these days.
>>>
>>> Just my 2 lazy cents.
>>>
>>> Arlindo
>>>
>>> --
>>> Arlindo da Silva
>>> da...@al...
>>
>
>
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure contains a
> definitive record of customers, application performance, security
> threats, fraudulent activity and more. Splunk takes this data and makes
> sense of it. Business sense. IT sense. Common sense.
> http://p.sf.net/sfu/splunk-d2d-oct
> _______________________________________________
> Opengrads-devel mailing list
> Ope...@li...
> https://lists.sourceforge.net/lists/listinfo/opengrads-devel
|