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

WRF (dm+sm) ERROR: COMPILING WITHOUT OMP

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.

JCollins

New member
Hi.

I am trying to compile the WRF with dm + sm. I am using the Intel compiler. I get the following errors, although the compilation ends successfully.

Code:
COMPILING init_modules_em.F WITHOUT OMP

I have also compiled it with 1 processor. I attach the compilation logs.
 

Attachments

  • compile_dmsm_1processor.log
    728 KB · Views: 61
  • compile_dmsm_2processor.log
    728 KB · Views: 61
Is there any solution to avoid this error in the compilation? Is it possible that this error does not influence the final result?
 
Hi,
I first would like to apologize for the long delay in response. It seems as though this must have been overlooked by the person responsible for this section of the forum. It is not our intention to make you wait so long.

I have never seen a compilation end successfully, while also giving an "Error." If you do a full listing on the executables in the main/ directory, are they sizable (not zero size)?

We typically don't recommend using the dm+sm option, as this option is rarely tested and has been known to give a lot of problems. If it's possible for you, it may be worth considering either the dmpar or the smpar option, instead.
 
It also seemed strange to me, but the executables are good, they are not empty. WRF also runs well.

I have compiled WRF in dmpar, also with errors (I opened another topic to address this issue). What happens is that you get as good performance with dmpar as with dm+sm (cluster, type of domains, etc., that I use), so for me, it is much better to use dm+sm.

If it is not possible to verify the reason for these errors I will continue using WRF as before, I have not seen anything strange in the outputs executed so far. Although I would like to see if it is possible to solve the errors in some way.
 
I agree that it is something that should be looked into further. However, for the time being, it seems that you're running okay, and this may be something very specific to your particular environment/system/platform (which could take a lot of time to track down). I don't expect that this type of compile problem will have any effect on your simulation results. As long as things look reasonable, I'd suggest to continue moving forward with your simulations!
 
Researching a little more, I've seen this in the build script.

Code:
# compile these without high optimization to speed compile
....
0 ; \
        else \
          if [ -n "$(OMP)" ] ; then echo COMPILING $*.F WITHOUT OMP ; fi ; \
          $(FC) -c $(PROMOTION) $(FCNOOPT) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90 ; \
        fi
Code:
#solve_em.o :
...
$*.f90 ; \
        else \
          if [ -n "$(OMP)" ] ; then echo COMPILING $*.F WITHOUT OMP ; fi ; \
          $(FC) -c $(PROMOTION) $(FCREDUCEDOPT) $(FCBASEOPTS) $(MODULE_DIRS) $(FCSUFFIX) $*.f90 ; \
        fi
Code:
# compile without OMP
input_wrf.o \
module_domain.o \
module_domain_type.o \
module_physics_init.o \
module_io.o \
...
That's where the WITHOUT OMP message is explicitly indicated. In addition, there are several modules that are marked within a compile section without OMP.

Therefore, I can understand that the message is correct and that there are certain modules, which for whatever reason, can not be compiled with OMP. Right?
 
JCollins,
Let's repeat just one compile command.
> cd WRF/external/io_grib_share
> icc -I. -w -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0 -c get_region_center.c

Does that give the same error?
Dave
 
davegill said:
JCollins,
Let's repeat just one compile command.
> cd WRF/external/io_grib_share
> icc -I. -w -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0 -c get_region_center.c

Does that give the same error?
Dave
Hi Dave.

I tried what you told me and the result is this:
Code:
# icc -I. -w -O3 -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian -DDM_PARALLEL -DLANDREAD_STUB=1 -DMAX_HISTORY=25 -DNMM_CORE=0 -c get_region_center.c 
icc: error #10236: File not found:  'all'
icc: error #10236: File not found:  'big_endian'
 
JCollins,
Here is the man page for icc.
Code:
       -align
       -noalign
              Determines whether variables and arrays are naturally aligned.
              Architecture Restrictions: Only available on IA-32 architecture
              Arguments:
              None
              Default:
              -noalign          Variables  and arrays are aligned according to the gcc model, which means they are aligned
                                to 4-byte boundaries.
              Description:
              This option determines whether variables  and  arrays  are  naturally  aligned.  Option  -align  forces  the
              following natural alignment:
              Type              Alignment
              double            8 bytes
              long long         8 bytes
              long double       16 bytes

1. There is no
Code:
-align all
in icc (there is in ifort).
2. There is no option for
Code:
-convert big_endian
in icc (again, there is in ifort).

Here's the trouble I am having. I do not see how you are getting these flags in your code. Those flags are part of the standard Fortran set of options for all of the ifort builds.

Code:
> grep "convert big" configure.defaults 
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian
BYTESWAPIO      =       -convert big_endian

And that BYTESWAPIO flag is used by the Fortran compilers:

Code:
> grep BYTESWAPIO configure.defaults 
BYTESWAPIO      =       #-FIX_BYTE_SWAP_IF_NECESSARY_FOR_BIG_ENDIAN
FCBASEOPTS_NO_G =       -w -Wf'-M noflunf -M nozdiv' $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       -fconvert=big-endian -frecord-marker=4
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       -fendian=big
FCBASEOPTS_NO_G =       -Wno=101,139,155,158 $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       -byteswapio
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO) $(OMP) # -Kieee -pc 64 -Ktrap=fp
BYTESWAPIO      =       -byteswapio
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO) $(OMP) # -Kieee -pc 64 -Ktrap=fp
BYTESWAPIO      =       -byteswapio
FCBASEOPTS      =       -w $(FCDEBUG) $(FORMAT_FREE) $(BYTESWAPIO) $(OMP) # -Kieee
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -ip -fp-model precise -w -ftz -align all -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) #-xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt -fno-common
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -w -qopenmp -auto -ftz -fno-alias -fp-model fast=1 -no-prec-div -no-prec-sqrt $(FORMAT_FREE) $(BYTESWAPIO) -auto -align array64byte #-vec-report6
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -w $(OMP) -auto -ftz -fno-alias -fp-model fast=1 -no-prec-div -no-prec-sqrt $(FORMAT_FREE) $(BYTESWAPIO) -auto -align array64byte #-vec-report6
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -ip -fp-model precise -w -ftz -align all -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) #-xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt -fno-common
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -ip -fp-model precise -w -ftz -align all -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) #-xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt -fno-common
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -ip -fp-model precise -w -ftz -align all -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) #-xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt -fno-common
BYTESWAPIO      =       -byteswapio
FCBASEOPTS_NO_G =       -w -fno-second-underscore $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       -fconvert=big-endian -frecord-marker=4
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       -byteswapio
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO) $(OMP) # -Kieee -pc 64 -Ktrap=fp
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -ip -fp-model precise -w -ftz -align all -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) #-xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt -fno-common
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -fp-model precise -w -ftz -align all -fno-alias -fno-common $(FORMAT_FREE) $(BYTESWAPIO) #-xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt
BYTESWAPIO      =       -fendian=big
FCBASEOPTS_NO_G =       -Wno=101,139,155,158 $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       -fconvert=big-endian -frecord-marker=4
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       -fconvert=big-endian -frecord-marker=4
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       
BYTESWAPIO      =       
FCBASEOPTS_NO_G =       -w -qspill=81920 -qmaxmem=-1 $(FORMAT_FREE) $(BYTESWAPIO)  #-qflttrap=zerodivide:invalid:enable -qsigtrap -C # -qinitauto=7FF7FFFF
BYTESWAPIO      =       
FCBASEOPTS_NO_G =       -w -qspill=81920 -qmaxmem=-1 $(FORMAT_FREE) $(BYTESWAPIO)  #-qflttrap=zerodivide:invalid:enable -qsigtrap -C # -qinitauto=7FF7FFFF
BYTESWAPIO      =       -byteswapio
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO) $(OPTERON_TYPE) $(OMP)
BYTESWAPIO      =       -h byteswapio
FCBASEOPTS_NO_G =       -N1023 $(FORMAT_FREE) $(BYTESWAPIO) #-ra
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -w -ftz -fno-alias -align all $(FORMAT_FREE) $(BYTESWAPIO) #-fp-model precise #-vec-report6
BYTESWAPIO      =       
FCBASEOPTS_NO_G =       -w -qspill=20000 -qmaxmem=64000 $(FORMAT_FREE) $(BYTESWAPIO) $(MPI_INC) #-qflttrap=zerodivide:invalid:enable -qsigtrap
BYTESWAPIO      =       
FCBASEOPTS_NO_G =       -w -qspill=20000 -qmaxmem=64000 $(FORMAT_FREE) $(BYTESWAPIO) #-qflttrap=zerodivide:invalid:enable -qsigtrap
BYTESWAPIO      =       
FCBASEOPTS_NO_G =       -w -qspill=20000 -qmaxmem=32767 $(FORMAT_FREE) $(BYTESWAPIO) #-qflttrap=zerodivide:invalid:enable -qsigtrap
BYTESWAPIO      =       -byteswapio
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO) $(OMP)
BYTESWAPIO      =       -byteswapio 
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       -byteswapio
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO) $(OMP)
BYTESWAPIO      =       -byteswapio
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO) $(OMP)
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -ip -fp-model precise -w -ftz -align all -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) #-xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt -fno-common
BYTESWAPIO      =       -fconvert=big-endian -frecord-marker=4
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO)
BYTESWAPIO      =       -byteswapio
FCBASEOPTS_NO_G =       -w $(FORMAT_FREE) $(BYTESWAPIO) $(OMP)
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -ip -fp-model precise -w -ftz -align all -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) -xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt -fno-common -xCORE-AVX2
BYTESWAPIO      =       -convert big_endian
FCBASEOPTS_NO_G =       -ip -fp-model precise -w -ftz -align all -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) -xHost -fp-model fast=2 -no-heap-arrays -no-prec-div -no-prec-sqrt -fno-common -xMIC-AVX512
BYTESWAPIO      =
FCBASEOPTS_NO_G =       -Kautoobjstack,ocl -fw $(FORMAT_FREE) $(BYTESWAPIO) $(OMP)

Did you bring in some optimized flags for C code in the configure.wrf file that are not part of the default settings?

Dave
 
Top