Polyhedron Fortran Benchmarks:

Around 2010, I was interested in using PROP_DESIGN for Fortran benchmarking and CPU burn in. I wrote a special version of PROP_DESIGN_MAPS called MP_PROP_DESIGN. I provided this code to Polyhedron to use in their benchmarks. When the auto-parallelization feature came out, they started showing MP_PROP_DESIGN benefiting greatly from this feature. I was never able to duplicate their results, using Windows 10 and an AMD APU. I tried to contact them to determine how they arrived at their results. They declined to answer. I also tried to get them to use PROP_DESIGN_MAPS and they also declined.

 

Since auto-parallelization has problems with loop nests, I deleted MP_PROP_DESIGN and reverted back to just using PROP_DESIGN_MAPS. Recently, I created a program called PROP_DESIGN_MAPS_BENCHMARK. It runs PROP_DESIGN_MAPS five times in a row and reports the average runtime (in seconds). This was done to try and deal with run-to-run variability. It's a tradeoff to do this. It makes it even harder for auto-parallelization but makes it easier to benchmark. Since, auto-parallelization is a useless feature, I think it's better to reduce run-to-run variability. Any version, of MP_PROP_DESIGN that you find, is extremely out of date. Over the years, I've made substantial improvements to the underlying propeller design theory.

 

In my own testing, I have never seen a run time improvement, using auto-parallelization. I've tested auto-parallelization with gfortran and Intel Fortran. Unfortunately, many websites are using the Polyhedron results to 'sell' the performance benefits of various compilers. I would ignore any MP_PROP_DESIGN results, in this instance. Moreover, confirm the compiler performance, using the current version of PROP_DESIGN_MAPS or PROP_DESIGN_MAPS_BENCHMARK. This whole situation is very disappointing. I feel the Polyhedron results are misleading a lot of people, since they are referenced often.

 

The only way to get PROP_DESIGN to be a proper multi-threaded application would be to rewrite it. I'm not able to do it myself. I learned programming a long time ago. Well before multi-core even existed. So everything I write is serial Fortran 77 code. There are areas that could benefit from parallelization. However, the auto-parallelization feature is not able to exploit them. The codes already run very fast, using just one core. So it's not really worth your time to rewrite them.

My Fortran Compiler Tests:

I've been doing Fortran compiler tests since 2010. I use PROP_DESIGN_MAPS for this purpose. I chose this version of PROP_DESIGN because it's compute intensive, without causing excessive wait times. In reality, any version of PROP_DESIGN could be used.

 

The main reason I perform these tests is to optimize the performance of PROP_DESIGN across as many CPUs/APUs as possible. You can also use my 'Fortran Compiler Tests' download to find the best Fortran compiler and/or the best compiler options. You may want to edit the included batch files (*.bat), to optimize them for your CPU/APU.

 

The current version of my 'Fortran Compiler Tests' download pits Intel Fortran against gfortran and flang. Intel Fortran has always produced the fastest executable files, in my testing. I have always seen runtimes that are several orders of magnitude faster than gfortran and flang.

 

I created a slightly modified version of PROP_DESIGN_MAPS, to aid benchmarking. This program is called PROP_DESIGN_MAPS_BENCHMARK. Since modern CPUs/APUs don't run at constant speeds, there is a lot of run-to-run variability. PROP_DESIGN_MAPS_BENCHMARK runs PROP_DESIGN_MAPS five times in a row and reports the average runtime (in seconds). This makes it easier to determine how effective any given compiler or compiler option is. The new benchmarking program is included in the download below.

 

Note; MSYS2 was used to download/install gfortran and flang.


Release 09/06/24:

 

Fortran Compiler Tests.zip (links to my 'Proton Drive' account)

 

Notes:

 

PROP_DESIGN utilizes a new type of propeller theory that I created in January of 2020. PROP_DESIGN is unproven. It is up to the user to verify his or her designs. To do this, I recommend comparing the results you obtain with PROP_DESIGN against test data that you collect.

 

After 16 years of continuous improvement, there are no major updates planned. If any at all, future updates will be minor.

 

I've noticed that other people have posted old versions of my codes. I strongly recommend that you don't use them. There have been thousands of improvements and bug fixes, over the years. The codes from day one are nothing like today.


For information on recent changes, see the 'News' page.