[Users] Meeting Minutes
schnetter at cct.lsu.edu
Tue Mar 25 10:34:34 CDT 2014
On Mar 25, 2014, at 11:03 , Frank Löffler <knarf at cct.lsu.edu> wrote:
> On Tue, Mar 25, 2014 at 10:58:31AM -0400, Erik Schnetter wrote:
>> I think we want to move away from building external libraries as part
>> of the Cactus build; instead, we want to build them ahead of time,
>> e.g. via Simfactory. This has several advantages, such as e.g. that a
>> "make clean" doesn't require rebuilding the libraries, and that
>> several Cactus configurations can use the same external libraries, and
>> that one can even have one power user build the libraries on a system
>> while all others simply use them.
> I think this is a good idea.
>> I know this because I implemented this in Simfactory3, and I
>> definitively think this is the way to go. The current build recipes
>> use Clang (not gcc, and not the system's "standard" compiler) for
>> building. I did this because I was interested in C++11, and most
>> system compilers (Intel, PGI, older versions of GCC, current Nvidia)
>> don't support this. However, in the interest of backward compatibility
>> we should probably also provide build recipes for (say) an older
>> version of GCC that is supported by all compilers.
> We probably would need that, and I myself would want that too. gcc is a
> pseudo-standard we have to support.
I didn't mean that we support building BY gcc; what I meant was that we build the external libraries WITH gcc, so that they work with any other compiler.
When building libraries, it is important to use compatible libstdc++ libraries, and this is a choice made by the C++ compiler. Thus, e.g. "building OpenMPI with GCC" and "building OpenMPI with Intel" should not make a difference at all; what is necessary is to use the same version of libstdc++ when building OpenMPI. Typically, there is one version of libstdc++ installed on the system, and this version may be old, and if you install GCC yourself you get a newer version, and the Intel compiler picks one of these versions...
Thus my suggestion is to install GCC ourselves, using an outdated version such as 4.6 that is actually supported by Intel and Nvidia, and then using its libstdc++ to build all other external libraries, as well as Cactus. Whether we then use GCC or Intel or PGI or Clang to actually compile C++ code then doesn't matter much; the generated code will be compatible.
That's what I've been doing in Simfactory3, and it seems to be working nicely. Except that some package need a lot of arm twisting to actually use a particular version of libstdc++, and that some system administrators use setups that try hard to override anything you're trying to do, but if you combine cannons (for the sparrows) and sledgehammers and a certain lack of ruth, you can do it.
I should give an overview over this system next Monday.
Erik Schnetter <schnetter at cct.lsu.edu>
My email is as private as my paper mail. I therefore support encrypting
and signing email messages. Get my PGP key from http://pgp.mit.edu/.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 203 bytes
Desc: Message signed with OpenPGP using GPGMail
Url : http://lists.einsteintoolkit.org/pipermail/users/attachments/20140325/3c57b0cc/attachment.bin
More information about the Users