I saw a great intro to the Object Oriented features of Fortran 2003 and Intel's support today, I was happy to see the OO features available in Fortran. Has anyone seen good data on performance tradeoffs between traditional procedural fortran and the new OO support?
Also, we're currently using Intel XE 2011 Fortran (11.1) compiler and looking to upgrade to the latest available/emerging. Per Intel website, it looks like the latest available is XE 2011 (11.1) Update 10. Is this the latest, and is there anything published on next release (e.g., Update 11 or XE 2012) - I'd hate to upgrade right before something else is published.
Are you using Intel Visual Fortran Composer XE 2011 or 11.1? 11.1 is an older version of the compiler. The release is Intel Visual Fortran Composer XE 2011 update 10 which is version 12.1.4 of the compiler.
Our products come with one year of support, which means you can download any version released within a year of your purchase date. Support renewals can also be purchased to extend the support. Regards, Annalee Intel Developer Support
A performance comparison is at best "ephemeral", as compilers get better all the time (*). Furthermore, it is very difficult to come up with meaningful comparisons. Quite often you end up with comparing apples and pears or even strawberries and oranges.
Also, performance matters when your program is taking longer than you have patience for. But quite often you have a large complicated program then and creating a second version that uses a different set of language features is very costly.
A much better metric is: can you express the problem to be solved in a maintainable and readable way with the traditional style or with the OO style? I myself find the new features (from F90 onwards) very useful and expressive. I was pleasantly surprised by the ASSOCIATE construct - see the attached code - as a way to abbreviate and clarify the meaning of array sections.
(*) Steve Lionel pointed this out to me - in my book Modern Fortran in Practice I put a bit too much emphasis on the performance effect of some array features. They depend on the compiler you use, the compiler version and the precise circumstances. It is very hard to draw general conclusions.
I have code that makes extensive use of the object oriented features supported by the 12.1 compiler. I can't comment on performance... because I don't have code that doesn't use said features... but the code clarity benefits win for me.
One note of caution before you jump in head first using these features is that I've stumbled across quite a few compiler bugs that have caused me ... well, some pain. Indeed, it with sadness that I report my stocks of both white and red have hit record lows due to the increased consumption required to ameliorate the crushing disappointment of a compiler ICE, or to relax the mind to assist the lengthy periods of contemplation required to work out why a descriptor for a polymorphic object suddenly contains nonsensical garbage, or to help blur the seemingly interminable, two day long wait for one of my debug builds to complete. This thing of new features being a bit flaky isn't specific to Intel's product, so with hindsight I probably should have done some more extensive testing before I started using them, or at least ordered another carton, or perhaps two. Many of these bugs are now fixed or at least reported fixed in the next major release - which can't come soon enough.