Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Parallel Fortran

  1. Mar 30, 2016 #1
    Hi mates
    please are there any body help me to make parallel program
    best regards
     
  2. jcsd
  3. Mar 30, 2016 #2

    SteamKing

    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper

    What tools do you have to make a parallel program? Do you have a Fortran compiler which is capable of generating parallel code? Do you have a computer with parallel processors on which to run your code?
     
  4. Mar 30, 2016 #3
    I use FORTRAN 90 and GFORTRAN on cluster
    I did a program and got good result but it is so slow
    can you help me to make it faster
    Sorry I'm not professional in FORTRAN to know which compiler is good
    regards
     
  5. Mar 30, 2016 #4

    jedishrfu

    Staff: Mentor

    Is this a homework assignment?

    In general, it takes more than just a compiler to parallelize your code. The algorithm on which the code is based must be capable of being parallelized.
     
  6. Mar 30, 2016 #5
    gfortran supposrts OpenMP; dedicate a good hour of your time to google and find a handful of pages on OpenMP, tutorials and examples so that you understand what it takes to parallelized parts of your porgram, if at all possible.

    If you know which do-loop in your program is the most time-consuming and if it can be parallelized, you will see that it only takes no more than 10 extra lines of code to parallelize.
     
  7. Mar 31, 2016 #6
    I know which loop need parallel but it included some subroutine , and I don't know how to use openMP.
     
  8. Mar 31, 2016 #7
    Most home-made programs do not need parallelization, they need optimization. First try to speed up your program by optimization before going parallel.
     
  9. Mar 31, 2016 #8
    I tried it but it still slow
     
  10. Mar 31, 2016 #9

    DrClaude

    User Avatar

    Staff: Mentor

    Learning parallel programming is not something we can teach you here. There are some tutorials online on how to use OpenMP or MPI. There are also some good books on the subject. I learned OpenMP with B. Chapman et al., Using OpenMP (MIT Press, 2008).
     
  11. Mar 31, 2016 #10
    A warning, it takes a while to get used to parallel programming.
    I understand the basics but don't ask me to parallelize a simulation (for example) because I'll be stuck.
    This was after a semesters worth of lectures and hands-on sessions.

    OpenMP is the easiest way if you're not that familiar with the concepts while MPI is generally more powerful. (Luckily there are some new functions in MPI3 that can help you avoid deadlock at the cost of some performance.)

    Here are some common errors you can encounter with full-blown parallel computing
    https://wiki.csiro.au/display/ASC/Frequent+parallel+programming+errors

    There's also the BSP library which introduce an entire paradigm to model algorithms with a reasonably good book by Rob Bisseling. I'm more familiar with this idea than OpenMP or MPI but again, I'm a novice at best. The advantage for this approach is that the cost model is very simple.

    Can you expand on the algorithm you want to parallelize, maybe parallelizing it is hard or next to impossible even.
     
  12. Mar 31, 2016 #11
    Thank you sir for your replay
    may I send you my program to see it and give me some feed back about it,please
     
  13. Mar 31, 2016 #12
    If it is impossible to post here (proprietary reasons or otherwise) I guess you can.
    By posting it here we could get more eyes on it that might see something that is a serious bottleneck.
    I can't guarantee I come up with anything.

    Also what you could try is checking out optimization when compiling, https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/Optimize-Options.html
    Using such optimization flags leads to a serious increase in performance.
    I have some data on an example I used to test the effectiveness of the flags for C-code, I'll try to dig it up tomorrow.
     
  14. Apr 1, 2016 #13
    Thank you so much sir
     
  15. Apr 1, 2016 #14

    jim mcnamara

    User Avatar

    Staff: Mentor

    Your description of the problem loop 'calls a subroutine' to me: screams for inlining and localization of data. the -finline-functions compiler option will force inlining.

    Next, if - then - else branch prediction failure can take a big negative performance bite when prefetching the correct code and data. Especially with several if - then clauses inside one loop. Even worse: Each if branch calling a different subroutine.

    https://en.wikipedia.org/wiki/Branch_predictor
    https://en.wikipedia.org/wiki/Inline_expansion

    Consider this before trying parallelization. There is less to learn.
     
  16. Apr 6, 2016 #15
    hi mates
    If I have main loop ,but there are many small loops
    if I want to make it parallel.
    what I must do?
     
  17. Apr 6, 2016 #16
    It all depends on what the loops do.
    Ideally you would parallelize the main loop.

    This does require that the iterations don't use results from a previous iteration. Otherwise you'll need to see if you can make it so.
    Can you give a sketch of the algorithm in pseudo code we don't have enough to go by.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted