<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=ks_c_5601-1987">
<META content="MSHTML 6.00.2900.3020" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>Hi </FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>I'm trying to optimize the WRFV2.1.2 on the Intel Wood
Crest cluster (64bit).<BR>Of course, model codes are installed well (without a
kind of error messages).<BR>However, average CPU usage between all nodes is just
40 %.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT color=#ff0000 size=2>Someone know how CPU usage is raised into about
80 %</FONT></DIV>
<DIV><FONT size=2></FONT> </DIV>
<DIV><FONT size=2>PGIF90 and MPICH are installed as fortran compiller and mpi
program, respectively.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>I have 16 cpus.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>My configure.wrf is as follows.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2># configure.wrf<BR>#<BR># This file was automatically
generated by the configure script in the<BR># top level directory. You may make
changes to the settings in this<BR># file but be aware they will be overwritten
each time you run configure.<BR># Ordinarily, it is necessary to run configure
once, when the code is<BR># first installed.<BR>#<BR># To permanently change
options, change the settings for your platform<BR># in the file
arch/configure.defaults then rerun
configure.<BR>#<BR>SHELL
=
/bin/sh<BR>DEVTOP
=
`pwd`<BR>LIBINCLUDE
= .<BR>.SUFFIXES: .F .i .o .f
.c</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>#### Get core settings from environment (set in compile
script)<BR>#### Note to add a core, this has to be added to.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>COREDEFS = -DEM_CORE=$(WRF_EM_CORE)
\<BR>
-DNMM_CORE=$(WRF_NMM_CORE) -DNMM_MAX_DIM=2600 \<BR>
-DCOAMPS_CORE=$(WRF_COAMPS_CORE)
\<BR>
-DEXP_CORE=$(WRF_EXP_CORE)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>#### Single location for defining total number of
domains. You need<BR>#### at least 1 + 2*(number of total nests).
For example, 1 coarse<BR>#### grid + three fine grids = 1 + 2(3) = 7, so
MAX_DOMAINS=7.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>MAX_DOMAINS = 21</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>#### DM buffer length for the configuration
flags.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>CONFIG_BUF_LEN = 8192</FONT></DIV>
<DIV> </DIV><FONT size=2>
<DIV><BR>##############################################################################<BR>####
The settings in this section are defaults that may be overridden by the <BR>####
architecture-specific settings in the next section.
<BR>##############################################################################</DIV>
<DIV> </DIV>
<DIV>##############################################################################<BR>####
NOTE: Do not modify these default values here. To override these
<BR>#### values, make changes after
"Architecture specific settings".
<BR>##############################################################################</DIV>
<DIV> </DIV>
<DIV>#### Native size (in bytes) of Fortran REAL data type on this architecture
####<BR>#### Note: to change real wordsize (for example, to promote REALs
from <BR>#### 4-byte to 8-byte),
modify the definition of RWORDSIZE in the
<BR>#### section following
"Architecture specific settings". Do not
<BR>#### change NATIVE_RWORDSIZE as is
it architecture-specific. <BR>NATIVE_RWORDSIZE = 4</DIV>
<DIV> </DIV>
<DIV>#### Default sed command and script for Fortran source files
####<BR>SED_FTN = sed -f ../arch/standard.sed</DIV>
<DIV> </DIV>
<DIV>#### Default ESMF switch and dependences for embedded ESMF time manager
####<BR>ESMFCOUPLING =
0<BR>ESMF_MOD_DEPENDENCE = ../external/esmf_time_f90/module_utility.o</DIV>
<DIV> </DIV>
<DIV>##############################################################################</DIV>
<DIV> </DIV>
<DIV><BR>#### Architecture specific settings ####</DIV>
<DIV> </DIV>
<DIV># Settings for PC Linux x86_64 (IA64 and Opteron), PGI 5.2 or higher,
DM-Parallel (RSL, MPICH, Allows nesting)<BR>#<BR># Notes: for experimental
implementation of moving nests, add -DMOVE_NESTS to
ARCHFLAGS<BR># for experimental
implementation of vortex tracking nests, add -DMOVE_NESTS -DVORTEX_CENTER to
ARCHFLAGS<BR>#<BR># Note that for
5.1.x comment out -Mpia=fast<BR>#<BR>DMPARALLEL
=
1<BR>MAX_PROC
=
1024<BR>FC
=
mpif90<BR>LD
=
mpif90<BR>CC
= mpicc -DMPI2_SUPPORT -DFSEEKO64_OK
<BR>SCC = gcc<BR>SFC
=
pgf90<BR>RWORDSIZE
=
$(NATIVE_RWORDSIZE)<BR>PROMOTION = -r$(RWORDSIZE)
-i4<BR>CFLAGS
= -DDM_PARALLEL -DWRF_RSL_IO
\<BR>
-DMAXDOM_MAKE=$(MAX_DOMAINS) -DMAXPROC_MAKE=$(MAX_PROC) -I../external/RSL/RSL
\<BR>
-DLANDREAD_STUB<BR>FCOPTIM
= -fastsse
#-Mipa=fast<BR>FCDEBUG = #-g<BR>#FCBASEOPTS
= -w -byteswapio -Ktrap=fp -Mfree
$(FCDEBUG)<BR>FCBASEOPTS
= -w -byteswapio -Mfree
$(FCDEBUG)<BR>FCFLAGS
= $(FCOPTIM)
$(FCBASEOPTS)<BR>ARCHFLAGS
= -DDEREF_KLUDGE -DIO_DEREF_KLUDGE -DGRIB1
-DINTIO -DWRF_RSL_IO -DRSL -DDM_PARALLEL
\<BR>
-DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=$(RWORDSIZE) -DLWORDSIZE=4 -DNETCDF
\<BR>
-DTRIEDNTRUE \<BR> -DLIMIT_ARGS
-DLANDREAD_STUB<BR>INCLUDE_MODULES = -module
../main -I../external/io_netcdf -I../external/io_int -I../external/esmf_time_f90
\<BR>
-I../external -I../frame -I../share -I../phys
-I../inc<BR>PERL
=
perl<BR>REGISTRY
=
Registry<BR>LIB
= -L../external/io_netcdf -lwrfio_nf
-L/usr/local/netcdf-3.6.1/lib -lnetcdf -L../external/RSL/RSL -lrsl
\<BR>
-L../external/io_grib1 -lio_grib1 \<BR> -L../external/io_int
-lwrfio_int \<BR> ../frame/module_internal_header_util.o
../frame/pack_utils.o -L../external/esmf_time_f90 -lesmf_time
<BR>LDFLAGS
= -byteswapio
<BR>ENVCOMPDEFS = <BR>WRF_CHEM = 0
<BR>CPP
= /lib/cpp -C -P
-traditional<BR>POUND_DEF = -DNO_RRTM_PHYSICS -traditional
$(COREDEFS) -DNONSTANDARD_SYSTEM -DF90_STANDALONE
-DCONFIG_BUF_LEN=$(CONFIG_BUF_LEN)
-DMAX_DOMAINS_F=$(MAX_DOMAINS)<BR>CPPFLAGS
= -I$(LIBINCLUDE) -C -P $(ARCHFLAGS)
-I../external/RSL/RSL -C -P `cat ../inc/dm_comm_cpp_flags` $(ENVCOMPDEFS)
$(POUND_DEF)<BR>AR
= ar
ru<BR>M4
=
m4<BR>RANLIB
=
ranlib<BR>NETCDFPATH = /usr/local/netcdf-3.6.1<BR>CC_TOOLS
= cc</DIV>
<DIV> </DIV>
<DIV>externals : wrf_ioapi_includes wrfio_nf wrfio_grib1
../external/RSL/RSL/librsl.a wrfio_int gen_comms.c module_dm.F esmf_time</DIV>
<DIV> </DIV>
<DIV>gen_comms.c : ../external/RSL/gen_comms.c<BR> ( /bin/cp
../tools/gen_comms_warning ../tools/gen_comms.c ;
\<BR> cat
../external/RSL/gen_comms.c >> ../tools/gen_comms.c )</DIV>
<DIV> </DIV>
<DIV>module_dm.F : ../external/RSL/module_dm.F<BR> ( /bin/cp
module_dm_warning module_dm.F ; cat ../external/RSL/module_dm.F >>
module_dm.F )</DIV>
<DIV> </DIV>
<DIV>wrfio_nf :<BR> ( cd ../external/io_netcdf ; \<BR> make
NETCDFPATH=/usr/local/netcdf-3.6.1 RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(FC)
$(PROMOTION) $(FCFLAGS) -w" TRADFLAG="-traditional" )</DIV>
<DIV> </DIV>
<DIV>wrfio_int :<BR> ( cd ../external/io_int ;
\<BR> make CC="$(CC)"
RANLIB="$(RANLIB)" CPP="$(CPP)" SFC="$(SFC) $(PROMOTION) $(FCDEBUG)
$(FCBASEOPTS)" FC="$(SFC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS) -w"
TRADFLAG="-traditional" all )</DIV>
<DIV> </DIV>
<DIV>wrfio_grib1 :<BR> ( cd ../external/io_grib1 ;
\<BR> make CC="$(SCC)"
CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" CPP="$(CPP)" FC="$(SFC) $(PROMOTION) -I.
$(FCDEBUG) $(FCBASEOPTS) -w" TRADFLAG="-traditional" )</DIV>
<DIV> </DIV>
<DIV>esmf_time : <BR> ( cd ../external/esmf_time_f90 ; \<BR>
make FC="$(FC) $(PROMOTION) $(FCDEBUG) $(FCBASEOPTS)" RANLIB="$(RANLIB)"
CPP="$(CPP) -I../../inc -I. $(POUND_DEF)" )</DIV>
<DIV> </DIV>
<DIV>../external/RSL/RSL/librsl.a :<BR> ( cd ../external/RSL/RSL ; make
CC="$(CC)" FC="$(FC) $(PROMOTION) -byteswapio" MAX_DOMAINS=$(MAX_DOMAINS)
MAX_PROC=$(MAX_PROC) LEARN_BCAST=-DLEARN_BCAST linux )</DIV>
<DIV> </DIV>
<DIV># compile these without high optimization to speed
compile<BR>solve_interface.o : solve_interface.F<BR>shift_domain_em.o :
shift_domain_em.F<BR>module_io_mm5.o : module_io_mm5.F<BR>module_si_io.o :
module_si_io.F<BR>module_io_wrf.o : module_io_wrf.F<BR>module_domain.o :
module_domain.F<BR>module_start.o : module_start.F<BR>module_initialize.o :
module_initialize.F<BR>module_initialize_b_wave.o :
module_initialize_b_wave.F<BR>module_initialize_hill2d_x.o :
module_initialize_hill2d_x.F<BR>module_initialize_quarter_ss.o :
module_initialize_quarter_ss.F<BR>module_initialize_squall2d_x.o :
module_initialize_squall2d_x.F<BR>module_initialize_squall2d_y.o :
module_initialize_squall2d_y.F<BR>module_initialize_real.o :
module_initialize_real.F<BR>module_dm.o : module_dm.F<BR>start_domain.o :
start_domain.F<BR>mediation_integrate.o :
mediation_integrate.F<BR>module_configure.o : module_configure.F</DIV>
<DIV> </DIV>
<DIV>solve_interface.o
\<BR>shift_domain_em.o
\<BR>module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o
\<BR>module_start.o module_initialize.o module_initialize_b_wave.o
\<BR>module_initialize_hill2d_x.o
module_initialize_quarter_ss.o
\<BR>module_initialize_squall2d_x.o module_initialize_squall2d_y.o
\<BR>mediation_integrate.o
\<BR>module_configure.o
\<BR>module_initialize_real.o module_dm.o start_domain.o :<BR> $(RM)
$@<BR> $(SED_FTN) $*.F > $*.b <BR> $(CPP) -I../inc $(CPPFLAGS)
$*.b > $*.f<BR> $(RM) $*.b<BR> $(FC) -c $(PROMOTION)
$(FCBASEOPTS) $(MODULE_DIRS) $*.f</DIV>
<DIV> </DIV>
<DIV>###########################################################<BR>#<BR># Macros,
these should be generic for all machines</DIV>
<DIV> </DIV>
<DIV>LN = ln -sf<BR>MAKE = make -i -r<BR>RM = rm
-f</DIV>
<DIV> </DIV>
<DIV># There is probably no reason to modify these rules</DIV>
<DIV> </DIV>
<DIV>wrf_ioapi_includes :<BR> ( cd ../external/ioapi_share ;
\<BR> $(MAKE) NATIVE_RWORDSIZE="$(NATIVE_RWORDSIZE)"
RWORDSIZE="$(RWORDSIZE)" )</DIV>
<DIV> </DIV>
<DIV>.F.i:<BR> $(RM) $@<BR> $(CPP) -I../inc $(CPPFLAGS) $*.F >
$@<BR> mv $*.i $(DEVTOP)/pick/$*.f<BR> cp $*.F $(DEVTOP)/pick</DIV>
<DIV> </DIV>
<DIV>.F.o:<BR> $(RM) $@<BR> $(SED_FTN) $*.F > $*.b <BR> $(CPP)
-I../inc $(CPPFLAGS) $*.b > $*.f<BR> $(RM) $*.b<BR> $(FC) -c
$(FCFLAGS) $(MODULE_DIRS) $(PROMOTION) $*.f<BR># if [ ! -e $@ ] ; then
\<BR># sleep 10 ; $(FC) -c $(FCFLAGS) $(MODULE_DIRS) $(PROMOTION) $*.f ;
\<BR># fi<BR># if [ ! -e $@ ] ; then \<BR># sleep 10 ; $(FC) -c
$(FCFLAGS) $(MODULE_DIRS) $(PROMOTION) $*.f ; \<BR># fi</DIV>
<DIV> </DIV>
<DIV>.F.f:<BR> $(RM) $@<BR> $(SED_FTN) $*.F > $*.b <BR> $(CPP)
-I../inc $(CPPFLAGS) $*.b > $@<BR> $(RM) $*.b</DIV>
<DIV> </DIV>
<DIV>.f.o:<BR> $(RM) $@<BR> $(FC) -c $(FCFLAGS) $(PROMOTION)
$*.f<BR># if [ ! -e $@ ] ; then \<BR># sleep 10 ; $(FC) -c $(FCFLAGS)
$(PROMOTION) $*.f ; \<BR># fi<BR># if [ ! -e $@ ] ; then
\<BR># sleep 10 ; $(FC) -c $(FCFLAGS) $(PROMOTION) $*.f ;
\<BR># fi</DIV>
<DIV> </DIV>
<DIV>.c.o:<BR> $(RM) $@<BR> $(CC) -c $(CFLAGS) $*.c</DIV>
<DIV> </DIV>
<DIV><BR> </FONT></DIV></BODY></HTML>