Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

PGI compiler choices

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.


New member
1. (serial) 2. (smpar) 3. (dmpar) 4. (dm+sm) PGI (pgf90/gcc)
5. (serial) 6. (smpar) 7. (dmpar) 8. (dm+sm) PGI (pgf90/pgcc): SGI MPT
9. (serial) 10. (smpar) 11. (dmpar) 12. (dm+sm) PGI (pgf90/gcc): PGI accelerator

52. (serial) 53. (smpar) 54. (dmpar) 55. (dm+sm) PGI (pgf90/pgcc)
56. (serial) 57. (smpar) 58. (dmpar) 59. (dm+sm) PGI (pgf90/gcc): -f90=pgf90
60. (serial) 61. (smpar) 62. (dmpar) 63. (dm+sm) PGI (pgf90/pgcc): -f90=pgf90

Can you put them together to make selection easier? Plus, it is not clear about the differences. Esp. 58 vs 3 -f90=pgf90?

I agree that the re-organization of the configure script for WRF would be well received by many people. There are a number of automatic systems and people that know to use specific values to build on particular machines. Our group only uses / supports / tests a couple of the existing Linux options that you see listed. The rest have come from the larger community because the existing options did not work (and perhaps, those other options continue to not work for some users). These configure setting options have been accruing for more than 15 years, so we are wary of re-arrangements (due to the impact of "known" option numbers) and deletions (we are unsure of whom we would be negatively impacting). At this time, it is unlikely that we will re-order the list or remove items from the list.

For your request about providing a bit of documentation on each option, most of what you see was received from external users when the requirements for integrating code into the model were fairly lax. What is available to the users to discern distinctions between options is what we end up doing ourselves: looking in the WRF/arch/configure.defaults file.

Each line in the printed script is a separate stanza inside the WRF/arch/configure.defaults file. The information for the serial / openmp / mpi / openmp + mpi portions of each printed line are all within the same stanza. The comments to the right of the printed numerical options are taken from the stanza as well. Most of the differences between the lines (between the stanzas) are related to the way that particular compilers are called, choices of compiler options, and specifics for Linux commands.
./configure << EOF >& /dev/null
mv configure.wrf configure.wrf.58

./configure << EOF >& /dev/null
mv configure.wrf configure.wrf.3

diff -w configure.wrf.3 configure.wrf.58
< # Compiler choice: 3
> # Compiler choice: 58
< # Settings for    Linux x86_64 ppc64le i486 i586 i686, PGI compiler with gcc  (dmpar)
> # Settings for    Linux x86_64 ppc64le i486 i586 i686, PGI compiler with gcc -f90=  (dmpar)
< DESCRIPTION     =       PGI ($SFC/$SCC)
> DESCRIPTION     =       PGI ($SFC/$SCC): -f90=pgf90
< CCOMP           =       pgcc
< DM_FC           =       mpif90
< DM_CC           =       mpicc
> CCOMP           =       gcc
> DM_FC           =       mpif90 -f90=pgf90
> DM_CC           =       mpicc -cc=gcc
< FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO) $(OMP) # -Kieee -pc 64 -Ktrap=fp

Other than comments, the differences between the PGI Linux builds for options 3 and 58 are related to including the explicit Fortran and C compilers in the mpif90 and mpicc commands, respectively. When the ./configure command is issued, that is specifically the difference that the quick reference note provides:

Please select from among the following Linux x86_64 options:

  1. (serial)   2. (smpar)   3. (dmpar)   4. (dm+sm)   PGI (pgf90/gcc)
 56. (serial)  57. (smpar)  58. (dmpar)  59. (dm+sm)   PGI (pgf90/gcc): -f90=pgf90