gandalfcode / gandalf

GANDALF (Graphical Astrophysics code for N-body Dynamics And Lagrangian Fluids)
GNU General Public License v2.0
44 stars 12 forks source link

Hybrid #38

Closed giovanni-rosotti closed 8 years ago

giovanni-rosotti commented 8 years ago

A few changes to make the code compile in hybrid mode (MPI+OpenMP). One change affects also serial code (intel and gcc compiler behave differently when using a const variable inside a parallel region; the easiest way I found to avoid becoming crazy was just to remove the const...)

rbooth200 commented 8 years ago

Is the hybrid currently working (to some degree) ?

giovanni-rosotti commented 8 years ago

As far as I know, yes - I run a few tests and they were fine. The only problem I found is when using a lattice in the initial conditions - but as we have discussed this is more likely to be a problem in that routine rather than in the hybrid parallelization...

rbooth200 commented 8 years ago

So there is a problem with the build at the moment when mpic++ invokes icc, since the -ffast-math flag and -openmp flags are different.

giovanni-rosotti commented 8 years ago

Well there's nothing we can do in this case - we can't understand from the command if you're using gnu or intel given that it's always mpic++. There are only two solutions:

rbooth200 commented 8 years ago

Not without some shell magic anyway, which is difficult to make portable. Do you have a preference for which solution is used? Perhaps the easiest thing is to remove the automatic choice of compiler flags and to give a few sensible examples instead.

rbooth200 commented 8 years ago

So I've added the change to the src/Makefile. I'd happily push this except that the travis checks have failed. Although it compiles fine for me. Do you expect it to work with travis?

giovanni-rosotti commented 8 years ago

Well, it fails because there is no travis script in this branch... let's first merge this with master (but it should be David that accepts this request as by our policy). I'll then create a request for merging the branch where I set up travis and then we should be fine. Until that is done, expect all the other pushes to fail...

dhubber commented 8 years ago

Okay, I just pulled and double checked this branch was working, which it was on the tests I run. I had the same issue when I tried to send a pull request (for the load balancing) so hopefully we can get this set-up asap.