From 2a7068fbf70afd77575a4971eb5206f2dca9ee50 Mon Sep 17 00:00:00 2001 From: Dawid Jagiela Date: Mon, 23 Apr 2012 13:41:40 +0200 Subject: [PATCH] Added test MPI preprocessor compile definitions --- CMakeLists.txt | 61 +++++++++++++++++++++++++++++++----- source/unres/src_MD/CMakeLists.txt | 44 +++++++++++++++++--------- 2 files changed, 83 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 329c3ae..8251b09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,29 +2,74 @@ # CMake project file for UNRES # cmake_minimum_required(VERSION 2.8) - + project(unrespack Fortran C) set(UNRES_MAJOR 3) set(UNRES_MINOR 1) set(UNRES_PATCH 0) set(UNRES_VERSION ${SIMPLE_MAJOR}.${SIMPLE_MINOR}.${SIMPLE_PATCH}) + +# Set makefile verbose on +set( CMAKE_VERBOSE_MAKEFILE 1 ) -enable_language (Fortran) +# MPI stuff +if(MPIF_LOCAL_DIR) + find_library(MPIF_LIBRARY NAMES mpif77 NO_DEFAULT_PATH PATHS ${MPIF_LOCAL_DIR}/lib) + find_path( MPIF_INCLUDE_DIRECTORIES NAMES mpif.h NO_DEFAULT_PATH PATHS ${MPIF_LOCAL_DIR}/include ) +else(MPIF_LOCAL_DIR) + find_library(MPIF_LIBRARY NAMES mpif77 PATHS + /users/local/mpi64/mpich-1.2.7p1/lib + /usr/lib + /usr/local/lib + /usr/local/mpi/lib + ) + find_path( MPIF_INCLUDE_DIRECTORIES NAMES mpif.h PATHS + /users/local/mpi64/mpich-1.2.7p1/include + /usr/include + /usr/local/include + /usr/include/mpi + /usr/local/mpi/include + ) +endif(MPIF_LOCAL_DIR) + +set( MPIF_LIBRARIES ${MPIF_LIBRARY}) + +if ( MPIF_INCLUDE_DIRECTORIES AND MPIF_LIBRARIES ) + set( MPIF_FOUND TRUE ) + message("MPIF found") +else ( MPIF_INCLUDE_DIRECTORIES AND MPIF_LIBRARIES ) + set( MPIF_FOUND FALSE ) + message("MPIF_ID: ${MPIF_INCLUDE_DIRECTORIES} MPIF_LIB: ${MPIF_LIBRARIES}") + message("MPIF not found") +endif ( MPIF_INCLUDE_DIRECTORIES AND MPIF_LIBRARIES ) +# End OF MPI stuff + + +if (MPIF_FOUND) + messege("MPI library "${MPIF_INCLUDE_DIRECTORIES} ) +endif(MPIF_FOUND) + +SET(CMAKE_Fortran_COMPILE_OBJECT " ${CMAKE_START_TEMP_FILE} -c -o ${CMAKE_END_TEMP_FILE}") +set(CPPFLAGS "-DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANGO -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) +# Apply them to *.F sources +add_definitions( ${CPPFLAGS} ) + + +enable_language (Fortran) + # make sure that the default is a RELEASE if (NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TYPE RELEASE CACHE STRING - "Choose the type of build, options are: None Debug Release." + "Choose the type of build, options are: None Debug Release." FORCE) endif (NOT CMAKE_BUILD_TYPE) - - + + # Set the force field if (NOT UNRES_FF) set(UNRES_FF "GAB" "E0LL2Y" CACHE STRING "Choose the force field, options are: GAB E0LL2Y" ) #message ( "Please set the Force field (UNRES_FF) to : GAB, 0ELE" ) endif (NOT UNRES_FF) - + add_subdirectory(source) - - diff --git a/source/unres/src_MD/CMakeLists.txt b/source/unres/src_MD/CMakeLists.txt index 4e763ba..e3aa9a0 100644 --- a/source/unres/src_MD/CMakeLists.txt +++ b/source/unres/src_MD/CMakeLists.txt @@ -23,34 +23,50 @@ set(UNRES_MD_SRC0 unres.F arcos.f cartprint.f chainbuild.F convert.f set(UNRES_MD_SRC3 energy_p_new_barrier.F energy_p_new-sep_barrier.F gradient_p.F ) +set(UNRES_MD_PP_SRC cartder.F chainbuild.F checkder_p.F compare_s1.F dihed_cons.F econstr_local.F + energy_p_new_barrier.F energy_p_new-sep_barrier.F energy_split-sep.F entmcm.F gen_rand_conf.F + geomout.F gradient_p.F initialize_p.F intcartderiv.F lagrangian_lesyng.F mc.F mcm.F MD_A-MTS.F + minimize_p.F minim_mcmf.F MP.F MREMD.F parmread.F prng_32.F q_measure1.F q_measure3.F q_measure.F + rattle.F readpdb.F readrtns.F regularize.F rmsd.F sc_move.F stochfric.F test.F thread.F timing.F + unres.F ) # Set compiler flags for different sourcefiles -set(FFLAGS0 -c -O3 -ip -w ) -set(FFLAGS1 -c -w -g -d2 -CA -CB ) -set(FFLAGS2 -c -w -g -00 ) -set(FFLAGS3 -c -w -O3 -ipo -ipo_obj -opt_report ) +set(FFLAGS0 "-O3 -ip -w -I${MPIF_INCLUDE_DIRECTORIES}" ) +set(FFLAGS1 "-c -w -g -d2 -CA -CB -I${MPIF_INCLUDE_DIRECTORIES}" ) +set(FFLAGS2 "-c -w -g -00 -I${MPIF_INCLUDE_DIRECTORIES} ") +set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report -I${MPIF_INCLUDE_DIRECTORIES}" ) -set_property(SOURCE ${UNRES_MD_SRC0} PROPERTY CMAKE_Fortran_FLAGS ${FFLAGS0} ) -set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} ) -set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} ) -set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY CMAKE_Fortran_FLAGS ${FFLAGS3} ) +set_property(SOURCE ${UNRES_MD_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} ) +#set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} ) +#set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} ) +set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} ) # Compile code if(UNRES_FF STREQUAL "GAB") +# GAB forcefield compile Conditions - set(CMAKE_CXX_FLAGS -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANGO - -DCRYST_BOND -DCRYST_THETA -DCRYST_SC ) - set(UNRES_BIN unres_ifort_MPICH_GAB.exe ) +if (Fortran_COMPILER_NAME STREQUAL "ifort") +# do ifort specific stuff +# set preprocesor flags + set(CPPFLAGS "-DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANGO -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) +# Apply them to *.F sources +#add_definitions( ${CPPFLAGS} ) -else(UNRES_FF strequal "E0LL2Y") +#SET(CMAKE_Fortran_COMPILE_OBJECT " ${CMAKE_START_TEMP_FILE} -DLINUX -c -o ${CMAKE_END_TEMP_FILE}") +# set_property(SOURCE readrtns.F PROPERTY COMPILE_DEFINITIONS "-DMPI" ) +# Set output binary + set(UNRES_BIN "unres_ifort_MPICH_GAB.exe" ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") - set(CMAKE_CXX__FLAGS -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANG0 ) +else(UNRES_FF strequal "E0LL2Y") + set(CPPFLAGS -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANG0 ) endif() - +set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "" ) add_executable(compinfo compinfo.c) add_custom_command(OUTPUT cinfo.f COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true ) +#set_property(TARGET ${UNRES_BIN} PROPERTY COMPILE_DEFINITIONS MPI ) add_executable(${UNRES_BIN} ${UNRES_MD_SRC0} ${UNRES_MD_SRC3} cinfo.f ) -- 1.7.9.5