Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
testers wanted for experimental SSE2 back-end
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2010-03-11 (08:42)
From: Xavier Leroy <Xavier.Leroy@i...>
Subject: Re: [Caml-list] testers wanted for experimental SSE2 back-end
Mike Lin wrote:
> I have a bunch of biological sequence analysis stuff that could be 
> interesting but I am already in x86-64 ("Wow! A 64 bit architecture!"). 
> The above seems pretty clear but just to verify - I would not benefit 
> from this new back-end, right?

Right.  Sorry for not mentioning this.  The x86-64 bit code generator for
OCaml uses SSE2 floats, like all C compilers for this platform.  The
experimental back-end I announced is for x86-32 bit.  Some more Q&A:

Q: I have OCaml installed on my x86 machine, how do I know if it's 32
or 64 bits?

A: Do:

   grep ^ARCH `ocamlopt -where`/Makefile.config

If it says "amd64", it's 64 bits with SSE2 floats.
If it says "i386", it's 32 bits with x87 floats.
If if says "ia32", it's the experimental back-end: 32 bits with SSE2 floats.

Q: If I compile from sources, which code generator is chosen by
default? 32 or 64 bits?

A: OCaml's configure script chooses whatever mode the C compiler
defaults to.  For instance, on a 32-bit Linux installation, the 32-bit
generator is selected, and on 64-bit Linux installation, it's the
64-bit generator.  Mac OS X is more tricky: 10.5 and earlier default
to 32 bits, but 10.6 defaults to 64 bits...

Will Farr wrote:

> Oops.  I just ran a bunch of tests on my Mac OS 10.6 system---does
> that mean that I compared two sse2 backends?  The ocaml-sse2 branch
> definitely produced different code than the trunk, but that could
> easily be due to any small difference in the two compilers, and not
> due to a change of architecture.

It is quite possible you ended up with two 64-bit, SSE2-float back-ends.
Oups.  Sorry for your time loss.  And, yes, unrelated changes between
release 3.11.2 and the experimental sources I released (based on what
will become 3.12.0) can account for small speed differences.

- Xavier Leroy