David,
On 7 Sep 2009, at 15:15, David Matthews wrote:
Rob, ...
It may be possible to force 32-bit mode with ./configure CFLAGS='-arch i386 -O3' CXXFLAGS='-arch i386 -O3' \ CCASFLAGS='-arch i386'
Did you try with the CXXFLAGS option as well? From what I can tell
CFLAGS is only used in C
programs not in the C++ parts such as x86_dep.cpp.
It does work when I do set all three of CFLAGS CXXFLAGS and CCASFLAGS. Yet again I need to specify -arch i386 in my make files when I link Poly/ML programs. Is there any reason for or against compiling Poly/ML for the 32 bit architecture?
[Aside: if I had known about these compiler options 3 days ago, the ProofPower GUI program xpp would probably still be full of code that only works on 32 bit implementations of X/Motif!]
One thing that won't hurt me at the moment, but may affect other users is that the configure script is not finding the X Windows installation that comes with MacOS X. As far as I can see this is just because the test it uses needs to specify -L/usr/X11R6/lib.
Regards,
Rob.
On Mon, 7 Sep 2009, rda@lemma-one.com wrote:
Is there any reason for or against compiling Poly/ML for the 32 bit architecture?
Although 64bit support has been available for approx. 2 years -- thanks to all the efforts by David Matthews -- we currently still ship things precompiled for 32bit by default. This is a bit faster, because data size is only half of 64bit.
Nonetheless, we are already pretty close to the turning point towards 64bit: parallel processing on multicore machines essentially requires to scale up heap memory size with the number of cores. The 32bit platform reaches its natural performance end with approx. 4 cores. Running Isabelle on 16 cores typically requires 16-32 GB memory, and 64bit is then the only way.
Makarius
Rob, rda@lemma-one.com wrote:
It may be possible to force 32-bit mode with ./configure CFLAGS='-arch i386 -O3' CXXFLAGS='-arch i386 -O3' \ CCASFLAGS='-arch i386'
Did you try with the CXXFLAGS option as well? From what I can tell
CFLAGS is only used in C
programs not in the C++ parts such as x86_dep.cpp.
It does work when I do set all three of CFLAGS CXXFLAGS and CCASFLAGS. Yet again I need to specify -arch i386 in my make files when I link Poly/ML programs. Is there any reason for or against compiling Poly/ML for the 32 bit architecture?
The original reason I suggested it was as a fall-back in case the 64-bit build didn't work. It seems that Mac OS X doesn't use the no-execute bit in 32-bit mode so the -segprot option wasn't needed. As Makarius said in his posting, 64-bit mode requires roughly twice as many bytes of memory as 32-bit mode. Also a few features of the FFI (CInterface) don't work in 64-bit mode. The big advantage of 64-bit mode is that if you have the memory you're freed from the 32-bit address limit.
One thing that won't hurt me at the moment, but may affect other users is that the configure script is not finding the X Windows installation that comes with MacOS X. As far as I can see this is just because the test it uses needs to specify -L/usr/X11R6/lib.
configure.ac uses the AC_PATH_X macro to set the include and library path. I can't find /usr/X11R6/lib hardcoded anywhere. See http://www.gnu.org/software/autoconf/manual/html_node/System-Services.html I don't know why this isn't working.
Regards, David
I am completely baffled. I thought I hada solved all my problems on MacOS X 10.6 and was just tidying up, when I had to recompile a 32 bit version of Poly/ML to test a tidied up make file. This failed because PolyML.Compiler.printTypesWithStructureName no longer exists. The same problem happened when i rebuild a 64 bit version. What has happened?
Regards,
Rob.