Announcement

Collapse
No announcement yet.

GCC Prepares For Fortran 2018 Support

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • GCC Prepares For Fortran 2018 Support

    Phoronix: GCC Prepares For Fortran 2018 Support

    The Fortran committee decided last month to rename the upcoming Fortran 2015 programming language update to Fortran 2018. GCC support is being prepped...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    But will it compile all the WATFIV based programs I typed up on punch cards in 1980?

    Comment


    • #3
      Fortran is still alive? Is this a joke? :O

      Comment


      • #4
        Originally posted by timofonic View Post
        Fortran is still alive? Is this a joke? :O
        It is still used for some critical numerical software.

        Comment


        • #5
          Originally posted by TheBlackCat View Post

          It is still used for some critical numerical software.
          Why? Ancient scientific people unable to learn new programming languages? Did their brains get rusty?

          Comment


          • #6
            Originally posted by timofonic View Post

            Why? Ancient scientific people unable to learn new programming languages? Did their brains get rusty?
            Probably because the software is extremely highly optimized and no one wants to start over from scratch with a new programming language when it is only going to mean considerably reduced performance for a very long time. There is a reason there is only a handful of major high-performance numeric computing libraries around, it is very hard to do right on a wide variety of platforms while still properly handling the numerous edge-cases.

            Comment


            • #7
              Originally posted by TheBlackCat View Post

              Probably because the software is extremely highly optimized and no one wants to start over from scratch with a new programming language when it is only going to mean considerably reduced performance for a very long time. There is a reason there is only a handful of major high-performance numeric computing libraries around, it is very hard to do right on a wide variety of platforms while still properly handling the numerous edge-cases.
              I understand. So the issue is mostly legacy but very highly optimized code rather than loving Fortran?

              About high-performance numeric computing libraries: I wish programming languages would have proper reference implementations and that code be reused on compilers implementing it and sharing modifications. It seems specs aren't enough and there's stuff like this kind of libraries you mentioned about would be better to be standarized and extremely reviewed. But well, maybe my idea is crazy and impossible in this world or I'm totally wrong.

              Correct me if I'm wrong, please

              Comment


              • #8
                Originally posted by timofonic View Post
                I understand. So the issue is mostly legacy but very highly optimized code rather than loving Fortran?
                Fortran is designed around these sorts of numeric calculations, so there are advantages to using it.

                Originally posted by timofonic View Post
                About high-performance numeric computing libraries: I wish programming languages would have proper reference implementations and that code be reused on compilers implementing it and sharing modifications. It seems specs aren't enough and there's stuff like this kind of libraries you mentioned about would be better to be standarized and extremely reviewed. But well, maybe my idea is crazy and impossible in this world or I'm totally wrong.

                Correct me if I'm wrong, please
                There are reference implementations of many of the major numeric APIs. For example the standard for linear algebra calculations are BLAS and LAPACK (with LAPACK being a de-facto standard and BLAS being a real standard). The Netlib implementations of both are the standard, while there are many other complete or partial implementations.

                In other cases there is no reference implementation because there is no standard. For example there is no widely-used standard FFT API.

                Comment


                • #9
                  Originally posted by TheBlackCat View Post
                  Fortran is designed around these sorts of numeric calculations, so there are advantages to using it.
                  This is often stated but rarely backed by facts/explained. In my experience the main real advantages I have experienced is that Fortran is "easier" because it provides multidimensional arrays and doesn't demand the programmer to deal with pointers.

                  Originally posted by TheBlackCat View Post
                  There are reference implementations of many of the major numeric APIs. For example the standard for linear algebra calculations are BLAS and LAPACK (with LAPACK being a de-facto standard and BLAS being a real standard). The Netlib implementations of both are the standard, while there are many other complete or partial implementations.

                  In other cases there is no reference implementation because there is no standard. For example there is no widely-used standard FFT API.
                  In fact these libraries have actually become more like a standard nowadays. The original netlib implementations as you said are kind of a reference implementation but (a)they can be used from C codes as well and (b) they are not high performing at all, in fact any code that uses blas/lapack functionality should better use one of the high performing ones.

                  In my experience with numerical codes/scientists, there are a number of reasons Fortran is still used and they are related to these:

                  1) Numerical scientists are very poorly trained in programming, data structures etc and they do not want to spend time to learn what has changed. eg when I was at the university studying applied mathematics in 2001 they were teaching us F77 and kr C apparently because this is what our professors were taught in the late 80s/early 90s. I have the impression that if any of them still codes he is still doing the exact same things. eg2: another professor I new was insisting on not using compiler optimizations "because the may break the code" ( by the time I was graduating I already knew that obviously his code had issues with floating point arithmetic and that he could either fix his code or just use specific compiler options about math operations but who was I to correct him? I never bothered to convince him).

                  2) numerical codes are very badly managed from a soft eng perspective. They are often the result of phds and/or collaborations and by the time the writer(s) has moved on no one can easily touch them or is motivated enough to do so. This creates a chicken and egg situation of "fortran legacy code that works" - developing new calculations on top of existing legacy code in fortran.

                  All that said, there are a lot of people using Fortran and a lot of them are important and are users of major HPC facilities therefore there is interest in the language. In fact I think that Fortran is a very nice language for the job but it carries a lot of historical burden. Perhaps it would be a good idea if they introduced something like OpenGL's core profile.

                  Comment


                  • #10
                    Originally posted by timofonic View Post

                    I understand. So the issue is mostly legacy but very highly optimized code rather than loving Fortran?

                    About high-performance numeric computing libraries: I wish programming languages would have proper reference implementations and that code be reused on compilers implementing it and sharing modifications. It seems specs aren't enough and there's stuff like this kind of libraries you mentioned about would be better to be standarized and extremely reviewed. But well, maybe my idea is crazy and impossible in this world or I'm totally wrong.

                    Correct me if I'm wrong, please
                    Many people like to claim that their implementation is "highly optimized"/"high performing" but (IN MY EXPERIENCE AGAIN) very few and very rarely actually backup their claims with data... Has anyone ever heard someone saying " here is my very badly performing non optimized code that is production ready and no one should touch it/change it" ?

                    In fact well written software in fortran can be used from other languages via libraries etc.

                    I think that the issue is that code written in fortran is usually code that requires very specific scientific knowledge (eg flow simulation, wave ocean modelling, etc) while it is of little interest to industry (ie there are almost no companies that will pay any one to implement such things for them) so it is mostly code written in academia.

                    Comment

                    Working...
                    X