ghc-6.6.1 win32 msi available

2007-05-08 Thread Sigbjorn Finne

In case anyone's interested,

  http://www.galois.com/~sof/msi/ghc-6-6-1.msi

contains a Windows installer for 6.6.1; most (all?) libraries/ are in there;
no C++ bits (sorry.)

enjoy
--sigbjorn

[And, if it's your preference, a ghc-6-6-1.zip is also available from
that same dir.]

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


problems using ghc-6.6.1 (due to fgl-5.4.1)

2007-05-08 Thread Christian Maeder
I wrote:
> Dear Hets- and GHC-Developers,

> we have a problem using ghc-6.6.1. The created hets binary runs a
> couple
> of times slower than the one created using ghc-6.6.

This problem is gone when I install and use fgl-5.3 (where "hiding
(indices)" needs to be deleted in Data.Graph.Inductive.Monad.IOArray).

I strongly suspect the new functions context1l' and context4l' in
Data.Graph.Inductive.Graph (fgl-5.4.1) to be the reason for our drastic
slow down.

In fgl-5.3 the functions fst4 and fth4 have been used instead. A cyclic
edge (an edge from and to the very same node) was only returned as
ingoing edge and not as outgoing one. (a design decision documented
elsewhere).

I think, the change in fgl-5.4.1 now returns a cyclic edge also as
outgoing edge (and possibly twice as ingoing one).

Our application heavily uses in- and outgoing edges that may be cyclic.

Christian

P.S. ghc-6.6.1/libraries/fgl/Setup.hs does not compile with ghc-6.6.1

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 6.6.1 Windows installer, test version

2007-05-08 Thread Neil Mitchell

Hi


So I want to know "What version of MinGW do you use?" and "Is your
MinGW has C++ files?"


None, I don't have it installed. I took the binaries straight from the
GHC 6.6.1 .tar.bz on haskell.org, I guess Ian would know how they
build that.


I think these tasks are easy, and they don't become bottleneck to
release installer.


As before, its not something I have any power over.


GHC 6.6's installer (MSI) has three Installation Mode, Typical,
Custom, Complete. These mode doesn't work GHC 6.6's one, but some
other installer uses these Installation Mode, to suport install
options.


I'll add that, its not overly hard, but I want something functional,
robust and now. For the next version you'll have options over what to
install.

Thanks

Neil
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


SMP question

2007-05-08 Thread Cristian Perfumo

Some days ago I sent an email to the list asking about the reason why I
couldn't run my programs with the "-Nx" RTS option even if I compiled them
with -threaded.
AH! by the way, the architecture is ia64 (Itanium).
Today I realized that when I ./configure, a preprocessor variable called
"NOSMP" is defined and it disallows the multiple OS threads (the -Nx
option).
Looking a bit deeper I figured out that there's no Itanium version for the
functions xchg (exchange), cas (compare-and-swap) and write_barrier in the
header file SMP.h (includes/SMP.h) so there's no way that the holy -N option
is available.
My question is: is it enough to implement xchg, cas and write_barrier for
ia64 to make multiple OSthreads available on ia64? If not, what else should
be implemented/changed?
Regards.
Cristian Perfumo
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: problems using ghc-6.6.1

2007-05-08 Thread Joel Reymont
You seem to be generating 8x the garbage with the 6.6.1 version which  
could account for the 2x slowdown.


On May 8, 2007, at 2:19 PM, Christian Maeder wrote:


ghc-6.6.1:
   hets +RTS -H300m -M1g -p -RTS -o prf Basic/Numbers.casl

total time  = 1979.05 secs   (39581 ticks @ 50 ms)
total alloc = 167,752,167,576 bytes  (excludes profiling  
overheads)


--
http://wagerlabs.com/





___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


problems using ghc-6.6.1

2007-05-08 Thread Christian Maeder
Dear Hets- and GHC-Developers,

we have a problem using ghc-6.6.1. The created hets binary runs a couple
of times slower than the one created using ghc-6.6. (see below)

What might be the cause for this?

Cheers Christian


ghc-6.6.1:
   hets +RTS -H300m -M1g -p -RTS -o prf Basic/Numbers.casl

total time  = 1979.05 secs   (39581 ticks @ 50 ms)
total alloc = 167,752,167,576 bytes  (excludes profiling overheads)

COST CENTREMODULE   %time %alloc

selectProofBasis   Proofs.EdgeUtils  82.8   86.1
sl_signCASL.Sublogic  5.33.7
compInclusion  Logic.Grothendieck 3.23.2
getAllPathsOfTypesBetween  Proofs.EdgeUtils   1.51.6
isSubOpMap CASL.Sign  1.20.9
primCoerce Logic.Coerce   0.81.1


ghc-6.6:
   hets +RTS -H300m -M1g -p -RTS -o prf Basic/Numbers.casl

total time  =  215.25 secs   (4305 ticks @ 50 ms)
total alloc = 20,691,103,008 bytes  (excludes profiling overheads)

COST CENTREMODULE   %time %alloc

selectProofBasis   Proofs.EdgeUtils  73.1   79.6
sl_signCASL.Sublogic  6.84.2
compInclusion  Logic.Grothendieck 3.73.8
getAllPathsOfTypesBetween  Proofs.EdgeUtils   2.83.1
isSubOpMap CASL.Sign  1.61.1
sublogics_join CASL.Sublogic  1.51.1
primCoerce Logic.Coerce   1.31.4
isSameTranslation  Proofs.Local   1.20.9

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 6.6.1 Windows installer, test version

2007-05-08 Thread shelarcy
On Tue, 08 May 2007 19:04:33 +0900, Neil Mitchell <[EMAIL PROTECTED]> wrote:
>> You forgot to include GLUT and readline packages.
>> I think you can't build these packages, so you don't include it.
>
> I have built an installer for the binary package produced by the GHC
> Team, including whatever they included, and excluding whatever they
> excluded. If the GHC Team change their build so these are built, I
> will happily include whatever they tell me.

It's wrong about buildable packages and C++ files.

First, "make binary-dist" includes these packages in binary distribution
if you can build theirs.
GHC 6.4 and GHC 6.6.1 or above installers include theirs.
And if you can build OpenAL and ALUT, you can include these packages
to your installer.


Second, I can include C++ files (except header files) in binary by
"make binary-dist" command with MinGW-4.1.1.

http://www.haskell.org/pipermail/glasgow-haskell-users/2007-April/012410.html
http://www.haskell.org/pipermail/glasgow-haskell-users/2007-April/012413.html

So I want to know "What version of MinGW do you use?" and "Is your
MinGW has C++ files?"

If you don't find C++ files in your MinGW directory, I think you
probably choice not to install C++/g++ things. So if you find
your MinGW doesn't include C++ files, you must install these files
first. And then you try to use "make binary-dist" command and make
installer again.


>> There is no C++ files in your installer.
>> But if anyone want to build C++ source code by GHC, he disappoint
>> about that.
>
> As before, what goes in the package is someone elses choice. This
> installer is intended as something quick to get a working installer
> out the door. I'd like to think about beefing it up, offering extra
> options (possibly C++ support) in the next version (i.e. 6.8, 6.6.2)

So above tasks will be complete just checking and correcting your build
enviornment.

An lack is C++ header files, but you can fix this problem by changing
to comment out or remove dist/prep-bin-dist-mingw's below line.

rm -rf include/mingw/c++/ || echo "c++/ not there"

I think these tasks are easy, and they don't become bottleneck to
release installer.


>> And can you add Installation Mode to your installer?
>
> There is already a silent install mode, /SILENT or /VERYSILENT do
> something - but I have no idea what. Is that what you meant by
> Installation Mode?

GHC 6.6's installer (MSI) has three Installation Mode, Typical,
Custom, Complete. These mode doesn't work GHC 6.6's one, but some
other installer uses these Installation Mode, to suport install
options.

I want to say that.

But that is difficult task, so I wait that for the next version.


Best Regards,

-- 
shelarcy 
http://page.freett.com/shelarcy/
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Why do we have stack overflows?

2007-05-08 Thread Adrian Hey

Simon Marlow wrote:
I'm more than happy to change the defaults, if there's some agreement on 
what the defaults should be.  The current choice is somewhat historical 
- we used to have a bound on both heap size and stack size, but the heap 
size bound was removed because we felt that on balance it made life 
easier for more people, at the expense of a bit more pain when you write 
a leaky program.


Well in the light of what Stefan says about exponentially increasing
stack size I'm not sure increasing (or removing) the default is the
answer. Going from 16M to 32M to 64M stacks is bit drastic. It seems
to me going up in sane sized linear increments would be better.

But since we also want to avoid frequent copying of an already oversized
stack I guess some linked list representation is what's needed. In fact
I'd think what Stefan suggests or something very similar would be the
way to go. But I have no idea how much work that would be.

But to give programs best possible chance of running successfully then I
think an (optional) overall limit on total memory use would be
preferable (better than trying to guess how much stack space will be
needed in advance).

Regards
--
Adrian Hey
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: GHC 6.6.1 Windows installer, test version

2007-05-08 Thread Neil Mitchell

Hi


You forgot to include GLUT and readline packages.
I think you can't build these packages, so you don't include it.


I have built an installer for the binary package produced by the GHC
Team, including whatever they included, and excluding whatever they
excluded. If the GHC Team change their build so these are built, I
will happily include whatever they tell me.


And can you add Installation Mode to your installer?


There is already a silent install mode, /SILENT or /VERYSILENT do
something - but I have no idea what. Is that what you meant by
Installation Mode?


There is no C++ files in your installer.
But if anyone want to build C++ source code by GHC, he disappoint
about that.


As before, what goes in the package is someone elses choice. This
installer is intended as something quick to get a working installer
out the door. I'd like to think about beefing it up, offering extra
options (possibly C++ support) in the next version (i.e. 6.8, 6.6.2)


So I think we will become happy, if adding Installation Mode and
maintain that on GHC's darcs repository.


I'm still not entirely sure what you mean by this?

Thanks

Neil
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Why do we have stack overflows?

2007-05-08 Thread Simon Marlow

Adrian Hey wrote:

John Meacham wrote:

I believe it is because a stack cannot be garbage collected, and must be
traversed as roots for every garbage collection. I don't think there are
any issues with a huge stack per se, but it does not play nice with
garbage collection so may hurt your performance and memory usage in
unforeseen ways.


I'm still not convinced :-(

I also don't believe it's in anybodys interest to have programs
failing for no good reason. A good reason to fail is if overall
memory demands are getting stupid. Failing because the stack has
grown beyond some arbitrary (and typically small) size seems
bad to me.

I know that this is to a certain extent this is controllable
using RTS options, but this is no use to me as a library
writer tying to chose between stackGobbler and heapGobbler.

The stuff should "just work" and not be dependent on the right
RTS incantations being used when the final program is run.


I'm more than happy to change the defaults, if there's some agreement on what 
the defaults should be.  The current choice is somewhat historical - we used to 
have a bound on both heap size and stack size, but the heap size bound was 
removed because we felt that on balance it made life easier for more people, at 
the expense of a bit more pain when you write a leaky program.


Also, it used to be the case that the OOM killer could be a bit unpredictable, 
killing vital system processes instead of the leaky Haskell program.  I'm not 
sure if this is still true for current OS incarnations.


Cheers,
Simon



___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Why do we have stack overflows?

2007-05-08 Thread Simon Marlow

Stefan O'Rear wrote:

On Thu, May 03, 2007 at 05:36:45PM -0700, Brandon Michael Moore wrote:

On Thu, May 03, 2007 at 04:59:58PM -0700, John Meacham wrote:

I believe it is because a stack cannot be garbage collected, and must be
traversed as roots for every garbage collection. I don't think there are
any issues with a huge stack per se, but it does not play nice with
garbage collection so may hurt your performance and memory usage in
unforeseen ways.

Isn't it just the top of the stack that has to be treadted as a root?
(maybe you need to walk the stack to find exception handlers and so on.)
Maybe it shouldn't be so much worse than a heap. The Chicken Scheme
system allocates everything on the C stack, and runs some sort of
compacting collector when it is about to fill.


GHC uses a simple exponential-backoff algorithm for handling stacks.
When the stack pointer passes the stack limit, the thread yields to
the scheduler, where the stack size is doubled, and the old stack is
moved.  Perhaps instead we could modify the algorithm such that up to
16K stack size the behaivor is the same, but use linked lists for
larger? 


1. Allocate a new chunk, of size 16KB.

2. Copy the topmost 1KB of stack to the new block.  This decreases
   storage efficiency slightly (but not much in time - memcpy is
   several times faster than anything the current ghc code generator
   can generate), but it avoids a nasty corner case (stack size
   fluctuating across 0 mod 16K) by acting as a form of hysteresis.

3. Create a special frame at the bottom of the new stack chunk that
   returns into a stack underflow handler, thus avoiding the need for
   yet another conditional. 


GHC in the distant past (pre-4.0) had linked stack chunks, but we discarded the 
idea when the RTS was rewritten, mainly for simplicity.  It was before my time, 
so I don't know all the war stories, but I think it turned out to be hairy 
enough to avoid it in the redesign.  At least it would require separate TSO and 
STACK objects, the underflow frame, code to avoid performance degradation at the 
boundary (e.g. as you say, copy the top 1k of stack to the new chunk), stack 
walking gets more complicated (several places in the RTS do this).


My impression is that the performance of stack growth isn't usually a limiting 
factor, so I'm not sure it's worth adding this complexity.  Benchmarks can be 
convincing, though...


Cheers,
Simon


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users