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

how to compile WRF with intel mkl libray

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.


I've read some tests using intel mkl library that gets really good improvements in running time, so I tried to test it, compiled succesfully, but it didn't run.
I use the recomended form intel mkl link advisor.
I set the configure.wrf like this:First I set the external libraries:
                      -L$(WRF_SRC_ROOT_DIR)/external/io_netcdf -lwrfio_nf -L/netcdf/lib -lnetcdff -lnetcdf \
                      ${MKLROOT}/lib/intel64/libmkl_blas95_ilp64.a ${MKLROOT}/lib/intel64/libmkl_lapack95_ilp64.a -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_ilp64.a ${MKLROOT}/lib/intel64/libmkl_tbb_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_blacs_intelmpi_ilp64.a -Wl,--end-group -ltbb -lstdc++ -lpthread -lm -ldl

then include them in the compilers:

SCC             =       icc -DMKL_ILP64 -I${MKLROOT}/include/intel64/ilp64 -I${MKLROOT}/include
CCOMP           =       icc -DMKL_ILP64 -I${MKLROOT}/include/intel64/ilp64 -I${MKLROOT}/include
DM_FC           =       mpiifort -i8 -I${MKLROOT}/include/intel64/ilp64 -I${MKLROOT}/include
DM_CC           =       mpiicc -DMPI2_SUPPORT -DMKL_ILP64 -I${MKLROOT}/include/intel64/ilp64 -I${MKLROOT}/include

So when I run real or wrf, i get this error message:
 module_io_quilt_old.F        2931 T
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE:  <stdin>  LINE:    5679
 check comm_start, nest_pes_x, nest_pes_y settings in namelist for comm            2
Abort(1) on node 0 (rank 0 in comm 0): application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0

So I think something in the compilation went wrong, or I have to use some environmental variable.
Does anybody knows how this really works?