dpo / homebrew-trilinos

A temporary Homebrew tap to build a complete Trilinos on OSX and Linux
0 stars 0 forks source link

RC1 #3

Closed davydden closed 9 years ago

davydden commented 9 years ago

I think I did all I could to make it compiling with as many other Formulae as possible. With the current state of the formula (71ccf1b5a598e48f3c70ab957435b02c289bb1af) it compiles fine for me with

--with-hypre --with-glpk --with-hdf5 --with-glm --with-cholmod --with-shylu --with-teko --without-python

that triggers everything (!) but --c++11 and python.

@dpo please, give it a try and see if it satisfies your needs and builds ok on you setup. If all is good, I would like to create a PR, as, to my knowledge, there is no indication of newer trilinos version coming soon with the remaining issues fixed. Once it goes to homebrew-science, deal.II (https://github.com/Homebrew/homebrew-science/pull/1299) could be finally added as well, which was my original motivation.

p.s. in case some of the current limitations got fixed, then subsequent PR would be easy to do to un-lock certain dependencies likes qd,petsc, etc. I hope we can keep all the comments as they document the current unresolved issues.

dpo commented 9 years ago

I get

/usr/local/opt/parmetis/include/parmetis.h:33:4: error: "Incorrect user-supplied value fo IDXTYPEWIDTH"
  #error "Incorrect user-supplied value fo IDXTYPEWIDTH"
   ^
davydden commented 9 years ago

I have parmetis 4.0.3. Do you have the same?

The error above is when you compile the same config I as, or with Python?

davydden commented 9 years ago

also version of metis might be important, i have 5.1.0.

dpo commented 9 years ago

I'm using everything from Homebrew, so yes, ParMetis 4.0.3 and Metis 5.1.0. Trying to build --without-parmetis fails because superlu_dist should also be disabled in that case. I'm configuring with the same options you gave (without Python).

davydden commented 9 years ago

could you attach config log? I want to see what is different between mine and yours.

Trying to build --without-parmetis fails because superlu_dist should also be disabled in that case.

I hope i just fixed it.

dpo commented 9 years ago

I just tried to build --without-parmetis --without-superlu_dist and now I get

/tmp/new-trilinos-in45jG/trilinos-11.12.1-Source/packages/zoltan/src/tpls/third_library_const.h:178:6: error: "Unsupported version of ParMETIS; use ParMETIS 3.1 or 4."
    #error "Unsupported version of ParMETIS; use ParMETIS 3.1 or 4."
     ^

I've seen that error before.

davydden commented 9 years ago

well.. another thing is that I do not use bottles. Not necessarily it's related, but could you set homebrew to compile on spot and then reinstall metis and reinstall parmetis and also attach Trilinos configure log? I am sure brew doctor does not complain for you...

I have a feeling that either Trilinos picks up something wrong at your system or something is broken. I do not have anything like that and I built have built Trilinos some tens times from scratch while figuring out which options work and which do not.

p.s. which osx do you have?

dpo commented 9 years ago

I never use bottles. I'm on 10.9 but I was sure I had resolved that issue with the help of one of the developers. I'll try and reinstall.

davydden commented 9 years ago

A colleague of mine build trilinos on 10.9 without issues with parmetis using Formula from my fork of homebrew-science (which is almost the same as this one). But he started using Homebrew just a couple of days ago... It couldn't be mavericks vs yosemite...

dpo commented 9 years ago

No go. parmetis is blocking. Here are my logs: https://gist.github.com/f417dc64ffbd7ab59ec3

davydden commented 9 years ago

1) i have: shylu, teko, cholmod, glpk, hypre (head), hdf5, glm on and python off.

Could you first try building with exactly the same config as above?

2) I think there is something wrong with your metis/parmetis (This is my best bet): Mine:

-- Processing enabled TPL: ParMETIS -- ParMETIS_LIBRARY_DIRS='/usr/local/opt/parmetis/lib' -- Searching for library 'parmetis' ... -- Found ParMETIS TPL library: /usr/local/opt/parmetis/lib/libparmetis.a -- Searching for library 'metis' ... -- Found ParMETIS TPL library: /usr/local/lib/libmetis.dylib -- TPL_ParMETIS_LIBRARIES='/usr/local/opt/parmetis/lib/libparmetis.a;/usr/local/lib/libmetis.dylib' -- Found ParMETIS TPL header: /usr/local/opt/parmetis/include/parmetis.h -- Found ParMETIS TPL header path: /usr/local/opt/parmetis/include -- TPL_ParMETIS_INCLUDE_DIRS='/usr/local/opt/parmetis/include

Yours:

-- Processing enabled TPL: ParMETIS -- ParMETIS_LIBRARY_DIRS='/usr/local/opt/parmetis/lib' -- Searching for library 'parmetis' ... -- Found ParMETIS TPL library: /usr/local/opt/parmetis/lib/libparmetis.a -- Searching for library 'metis' ... -- Found ParMETIS TPL library: /usr/local/opt/metis4/lib/libmetis.dylib -- TPL_ParMETIS_LIBRARIES='/usr/local/opt/parmetis/lib/libparmetis.a;/usr/local/opt/metis4/lib/libmetis.dylib' -- Found ParMETIS TPL header: /usr/local/opt/parmetis/include/parmetis.h -- Found ParMETIS TPL header path: /usr/local/opt/parmetis/include -- TPL_ParMETIS_INCLUDE_DIRS='/usr/local/opt/parmetis/include'

Could that be that you have parmetis compiled against head metis and metis4 also symlinked which confuses Trilinos?

3) My second best bet is that I use clang and according to make logs you compile with gcc-4.9. When I was compiling everything manually, i was using gcc always. When I switched to Homebrew, i was trying to use gcc consistently, but there were some issues and I could not make it work.

Are you sure that all libraries Trilinos try to use are compiled with gcc and there is no mixture of gcc and clang? To my understanding, this is generally not advised. This is what PETSc homepage have to say about it: http://www.mcs.anl.gov/petsc/documentation/installation.html

All packages will be installed with the same set of compilers - this avoids problems [for example weird link time errors] with mixing code compiled with multiple compilers [for example mixing gfortran and ifort compiled code].

davydden commented 9 years ago

4) It could be that there some bug in Trilinos and it doesn't compile with gcc-4.9, but does work with gcc-4.8, for example.

dpo commented 9 years ago

I certainly have both metis4 and metis (v5) installed concurrently. It's probably CMake picking up the wrong one and the formula should specify the path to the Metis libs.

davydden commented 9 years ago

I hardcode metis and parmetis libraries 3798119241af08bfd24c0c23a606dfdfa190edc5

dpo commented 9 years ago

I'll give it a try. For sanity, I went back to my old gist and that builds (with ParMETIS disabled). Isn't there a -DTMETIS_LIBRARIES=... options?

davydden commented 9 years ago

how about that one 86cbb0402cbf7becb672eff2cb9c58c2e0041af5 ?

dpo commented 9 years ago

That seems to have resolved the ParMETIS issue. It's still building though... I'm testing on Mavericks and Yosemite.

davydden commented 9 years ago

there was a bug in those include and libraries. I am fixing it now...

davydden commented 9 years ago

should be better now: 0c56547408a4ad8d895827f3df67595e7cfb6f53

dpo commented 9 years ago

That makes sense. Thanks for spotting that. I'll give it a try.

dpo commented 9 years ago

Success! I can build on Mavericks with

--with-cholmod --with-glm --with-glpk --with-hdf5 --with-hypre --with-shylu --with-teko

(i.e., including Python!). We should decide what should be :optional and what should be :recommended. The formula also needs a little cleaning. We should also probably wait for 11.4 to come along, which is supposed to be quite soon.

dpo commented 9 years ago

I'll try and build in C++11 mode. In the mean time I wrote a tentative update to SuperLU_Dist 4.0. Unfortunately, the tests fail.

davydden commented 9 years ago

I am afraid you need to downgrade to 3.3. Neither Pets nor Trilinos currently support 4.0. Both packages should do that in the next release, though.

davydden commented 9 years ago

as for :optional and :recommended, I would try not to turn on by default too many experimental TPLs and would prefer the :recommended list to contain at least: :mpi,:fortran, boost,netcdf,suite-sparse,parmetis,mumps,scalapack,superlu,superlu_dist,hypre,tbb.

Perhaps this decision should be consistent with Petsc https://github.com/Homebrew/homebrew-science/pull/1694

dpo commented 9 years ago

I am afraid you need to downgrade to 3.3. Neither Pets nor Trilinos currently support 4.0. Both packages should do that in the next release, though.

I know. I was just preparing an upgrade for homebrew/science.

dpo commented 9 years ago

In petsc.rb, basically everything is enabled. I'd like to enable as much as possible so that bottles can be relied upon.

davydden commented 9 years ago

i am perfectly happy when everything is enabled ;-)

dpo commented 9 years ago

I successfully built our formula against MPICH!

davydden commented 9 years ago

cool! sounds good!

dpo commented 9 years ago

Since the Trilinos update isn't coming, I decided to submit a PR with our new formula. See https://github.com/Homebrew/homebrew-science/pull/1779.

davydden commented 9 years ago

Thanks a lot, @dpo!