MacPorts and OpenMP---or how to build "everything" with MacPorts GCC?
Hans Ekkehard Plesser
hans.ekkehard.plesser at umb.no
Thu Jun 20 05:41:49 PDT 2013
I am afraid I may re-raise an issue debated previously, but I would be interested if there maybe are some new thoughts.
I am one of the developers of NEST, the Neural Simulation Tool (www.nest-initiative.org). Our users work on everything from extremely large computers to laptops running Linux or OSX. In the past, supporting NEST on OSX was reasonably easy using MacPorts, but over the past year two developments have been working against us:
- We have started to use OpenMP in NEST.
- Apple has made Clang the standard compiler, and Clang does not support OpenMP.
While NEST can be built without OpenMP, it loses performance, so we really would like to build NEST with OpenMP. We can do that with either llvm-gcc42 or with the one of the MacPorts GCCs, but this leads to a number of problems:
- NEST has a Python UI. Building NEST with a different compiler than Python usually leads to trouble.
- NEST can also be compiled with OpenMPI. For this to work well, NEST should be built with the same compiler as OpenMPI.
- NEST links against GSL. Here we have experience little trouble, but ideally we should use the same compiler for GSL and NEST, too.
Everything would be solved if I could download MacPorts, configure it to use, e.g., MacPorts gcc 4.7 to build everything, and then install all the ports I need for NEST---I could even write a Portfile for NEST :). But as things stand, Python and OpenMPI are compiled with Clang, and as far as I can see there aren't even variants that allow you to switch the compiler to GCC (the +gccNN variants of OpenMPI only select the Fortran compiler).
I much appreciate MacPorts philosophy of making itself maximally independent from tools shipped with OSX. Therefore, I have never quite understood why MacPorts insists on using the system compiler. I very well understand that it is virtually impossible to support a range of compilers, but why not use MacPorts own GCC as default then? As most of the packages provided through MacPorts originate from the Unix/Linux-world, I'd expect them to be GCC-friendly.
I'd much appreciate some information on why MacPorts has made the choices it has made and whether there are any plans for change.
Dr. Hans Ekkehard Plesser, Associate Professor
Head, Basic Science Section
Dept. of Mathematical Sciences and Technology
Norwegian University of Life Sciences
PO Box 5003, 1432 Aas, Norway
Phone +47 6496 5467
Fax +47 6496 5401
Email hans.ekkehard.plesser at umb.no
More information about the macports-users