On 14-12-01 01:48 PM, Satish Balay wrote:
On Mon, 1 Dec 2014, Danyang Su wrote:

Hi All,

I have a PETSc application that need additional compiling flags to build
Hybrid MPI-OpenMP parallel application on WestGrid Supercomputer (Canada)
system.

The code and makefile work fine on my local machine for both Windows and
Linux, but when compiled on WestGrid Orcinus System for the OpenMP version and
Hybrid version, the OpenMP parallel part does not take effect while only MPI
parallel part takes effect. There is no error while compiling the code. I am
not sure if there is something wrong with the makefile or something other
setting.

The compiler flags need to build Hybrid MPI-OpenMP version on WestGrid Orcinus
is "-shared-intel -openmp -O2 -xSSSE3 -axSSE4.2,SSE4.1 -ip" . For the
sequential version or MPI parallel version, these flags are not needed.

Would anybody help to check if the compiler flag (red) in the makefile is
correct?

Thanks,

Danyang

The makefile is shown below

include ${PETSC_DIR}/conf/variables
include ${PETSC_DIR}/conf/rules

#FC = ifort
SRC =./../

# Additional flags that may be required by the compiler ...
# This is required for the OpenMP parallel version and Hybrid MPI-OpenMP
parallel version
# not necessary for the sequential version and MPI version
DFCFLAG = -shared-intel -openmp -O2 -xSSSE3 -axSSE4.2,SSE4.1 -ip

#Flag for WestGrid Orcinus System
#Load PETSc module before make
#module load /global/system/Modules/modulefiles/intel-2011/petsc
FPPFLAGS = -DLINUX -DRELEASE -DPETSC -DMPI -DOPENMP

SOURCES = $(SRC)gas_advection/relpfsat_g.o\
         $(SRC)int_h_ovendry.o\
         $(SRC)dhconst.o\
         ...

min3p: $(SOURCES) chkopts
         -${FLINKER} $(FPPFLAGS) $(DFCFLAG) -o ex $(SOURCES) ${PETSC_LIB} 
${DLIB}
You are using DFCFLAG only during link time - and not at compile time.

If you need to specify flags for both compile time and linktime - use FFLAGS

i.e:

FFLAGS = -shared-intel -openmp -O2 -xSSSE3 -axSSE4.2,SSE4.1 -ip
[and remove DFCFLAG]

Also you should specify FFLAGS,FPPFLAGS before the 'incude' directives in the 
makefile.

Satish
Hi Satish,

Thanks very much. It now works.

Danyang



Reply via email to