axiom-developer
[Top][All Lists]
Advanced

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

Re: [Axiom-developer] RE: algebra Makefiles with explicit dependencies,


From: Stephen Wilson
Subject: Re: [Axiom-developer] RE: algebra Makefiles with explicit dependencies, bootstrap, fixed-points etc.
Date: Fri, 7 Jan 2005 09:59:01 -0500
User-agent: Mutt/1.5.6+20040907i

My original message was rejected my the mailing list server as being
too large due to the archive file mentioned below. Attached is the
original message for the benefit of the list. Bill, Tim, if you did
not get the archive (and would like a copy :) let me know and I'll
send it out directly (or to any one else who is interested).

[original message]

Bill, Tim,

The discovery of inconsistencies as witnessed by Bill's fixedPoint.log
has me concerned. Im interested in understanding why this is
happening. Looking over fixedPoint.log demonstrates that most (but not
all) of the lisp code differs w.r.t the layout of the domain
vectors (most differences occur in lisp take the form (QREFELT $ N),
where N is an integer). 

To understand this better, I wrote some lisp to extract the functions
from Bills fixedPoint.log and `explode' it into several other,
pprinted files. Running diff on these files gives a more informative
report on what exactly has changed in the lisp. The code which does
this is in extract.lisp. The archive already contains the exploded
lisp files. 

To use extract.lisp, create a new directory and cd there. Fire up
gcl. Then do (with appropriate paths, of course :),

================================================================
>(load "../extract.lisp")

Loading ../extract.lisp
Finished loading ../extract.lisp
T

>(extract "../fixedPoint.log")

T

>(quit)
================================================================

This should produce a directory of files as contained in the attached
archive. Files of the form *1.lisp are the original functions, *2.lisp
contains those functions which seem to have been affected by
`propagation'. 

I have yet to build a version of axiom following Bill's
steps. However, I feel a comparison between the layouts of the domain
vectors from within the affected functions could prove useful. In the
archive is the file spadvec.lisp, which contains a simple lisp
function I use sometimes to print a domain vector from within
axiom. Here is how to use it:

Lets assume we want to print the domain vector from within the
function `|FC;setLabelValue;2Si;1|' as listed
in FC1.lisp. Lets copy this function to the file
'setlabel1.lisp', and add a call at the top to pspadvec. pspadvec takes
the domain vector as argument, and an optional depth argument. The
depth is 0 based, so calling with a depth of 1 will print two levels
deep into the domain vector (by deep I mean the function follows other
vectors). So, `setlabel1.lisp' could read:

================================================================
(DEFUN |FC;setLabelValue;2Si;1| (|u| $) 
       (pspadvec $ 1) 
       (SETELT $ 10 |u|))
================================================================

Sometimes getting the right version of the function to be called by
axiom is tricky. In this case, we can get this new function called as
follows:

================================================================
(1) -> (setq |$DALYMODE| t)

Value = T
(1) -> (load "spadvec.lisp")

Value = T
(1) -> (load "setlabel1.lisp")

Value = T
(1) -> (trace |FC;setLabelValue;2Si;1|)

Value = (|FC;setLabelValue;2Si;1|)
(1) -> setLabelValue(0)$FC

  1> (|FC;setLabelValue;2Si;1| 0 #<vector 08d5b460>)
  <1 (|FC;setLabelValue;2Si;1| 0)

   (1)  0
                                                          Type: SingleInteger
(2) -> (load "setlabel1.lisp")

Value = T
(2) -> setLabelValue(0)$FC

  1> (|FC;setLabelValue;2Si;1| 0 #<vector 08d5b460>)
0: (FortranCode)
1: (#<compiled-function lookupComplete> #<vector 08d5b460> #<vector 08d5b4ec>)
2: NIL
3: 0
4: (#<vector 08d5b444> #<vector 08d5b4b4> . #<vector 08d5b47c>)
5: NIL
6: <vector> :
  ....
  ....
180: (#<compiled-function FC;assign;SE$;78> . #<vector 08d5b460>)
181: (#<compiled-function FC;assign;SE$;79> . #<vector 08d5b460>)
182: (#<compiled-function FC;call;S$;80> . #<vector 08d5b460>)
  <1 (|FC;setLabelValue;2Si;1| 0)

   (2)  0
                                                          Type: SingleInteger
================================================================

Note that the vectors are huge structures; printing them with a depth
greater than 2 will produce an enormous amount of output.

Bill, perhaps you can try examining some of the affected functions as
above and comparing the domain vectors between the two builds? I'd be
very interested in seeing how they differ (I will try building my own
version of axiom as you described later today). 

I hope this will be useful in understanding the problem.


Cheers,
Steve


On Fri, Jan 07, 2005 at 04:01:32AM -0500, Bill Page wrote:
> On Friday, January 07, 2005 2:59 AM I wrote:
> > ... 
> > Because of my first experiments, I did not expect to see any
> > differences, but to my surprize (or was it relief because of
> > my earlier convictions :) I did find some small but apparently
> > significant differences in the following files.
> > 
> > --- int/algebra/BINFILE.lsp     Thu Jan  6 22:22:55 2005
> > +++ int/algebra/BINFILE.NRLIB/code.lsp  Thu Jan  6 23:09:32 2005
> > --- int/algebra/D01AGNT.lsp     Thu Jan  6 22:22:57 2005
> > +++ int/algebra/D01AGNT.NRLIB/code.lsp  Fri Jan  7 00:23:04 2005
> > --- int/algebra/FC.lsp  Thu Jan  6 22:23:00 2005
> > +++ int/algebra/FC.NRLIB/code.lsp       Thu Jan  6 23:59:50 2005
> > --- int/algebra/FFCGP.lsp       Thu Jan  6 22:23:01 2005
> > +++ int/algebra/FFCGP.NRLIB/code.lsp    Thu Jan  6 23:39:00 2005
> > --- int/algebra/FORTRAN.lsp     Thu Jan  6 22:23:02 2005
> > +++ int/algebra/FORTRAN.NRLIB/code.lsp  Fri Jan  7 00:00:23 2005
> > --- int/algebra/INBFF.lsp       Thu Jan  6 22:23:04 2005
> > +++ int/algebra/INBFF.NRLIB/code.lsp    Fri Jan  7 00:23:21 2005
> > --- int/algebra/OMENC.lsp       Thu Jan  6 22:23:10 2005
> > +++ int/algebra/OMENC.NRLIB/code.lsp    Thu Jan  6 22:49:46 2005
> > --- int/algebra/PATTERN.lsp     Thu Jan  6 22:23:11 2005
> > +++ int/algebra/PATTERN.NRLIB/code.lsp  Thu Jan  6 23:45:01 2005
> > --- int/algebra/PRIMELT.lsp     Thu Jan  6 22:23:13 2005
> > +++ int/algebra/PRIMELT.NRLIB/code.lsp  Thu Jan  6 23:45:25 2005
> > --- int/algebra/RECLOS.lsp      Thu Jan  6 22:23:14 2005
> > +++ int/algebra/RECLOS.NRLIB/code.lsp   Thu Jan  6 23:45:39 2005
> > --- int/algebra/ROIRC.lsp       Thu Jan  6 22:23:14 2005
> > +++ int/algebra/ROIRC.NRLIB/code.lsp    Thu Jan  6 23:28:06 2005
> > 
> > None of these are bootstrap files.
> > 
> > I am now in the process of re-iterating the above steps to see
> > if these differences will disappear in the next cycle or if they
> > will propagate further to other files that depend on these. I
> > will let you know what happens a little later.
> > ...
> 
> Ok. The 2nd iteration just finished with no differences found in
> the *.lsp files. So the "fixed point" was found after 2 consecutive
> builds.
> 
> I am beginning to wonder now whether the differences in the first
> step is really due to some previously unresolved propagation of
> dependencies (as I first suspected)? Or could it be something else
> like perhaps the database files beging slightly inconsistent with
> the spad sources during the initial build? What do you think?
> 
> I have attached the fixedPoint.log.gz file containing the diffs
> for iteration 1.
> 
> Regards,
> Bill Page.


> _______________________________________________
> Axiom-developer mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/axiom-developer





reply via email to

[Prev in Thread] Current Thread [Next in Thread]