From 9f955ba406e3aedffa4d066c4859ba8209d0bf02 Mon Sep 17 00:00:00 2001 From: Daniel Wortmann Date: Tue, 14 Jun 2016 16:44:45 +0200 Subject: [PATCH] Added default cmake files for popular compilers --- cmake/Architectures.txt | 4 +++ cmake/cmake.ifort.config | 58 ++++++++++++++++++++++++++++++++++ cmake/cmake.pgfortran.config | 61 ++++++++++++++++++++++++++++++++++++ diagonalization/magma.F90 | 5 ++- 4 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 cmake/cmake.ifort.config create mode 100644 cmake/cmake.pgfortran.config diff --git a/cmake/Architectures.txt b/cmake/Architectures.txt index 1536f612..bbf13985 100644 --- a/cmake/Architectures.txt +++ b/cmake/Architectures.txt @@ -9,8 +9,12 @@ site_name(sitename) set (configfile "NOTFOUND") if (${Fleur_custom_toolchain}) set (configfile "cmake/cmake.config") +elseif ($ENV{FC} MATCHES "pgf.*") + set (configfile "cmake/cmake.pgfortran.config") elseif ($ENV{FC} MATCHES "gfortran.*") set (configfile "cmake/cmake.gfortran.config") +elseif ($ENV{FC} MATCHES "ifort.*") + set (configfile "cmake/cmake.ifort.config") elseif (${sitename} MATCHES "iff.*") set (configfile "cmake/cmake.iff.config") elseif (${sitename} MATCHES "jrl.*") diff --git a/cmake/cmake.ifort.config b/cmake/cmake.ifort.config new file mode 100644 index 00000000..84605d13 --- /dev/null +++ b/cmake/cmake.ifort.config @@ -0,0 +1,58 @@ +#generic Makefile for the ifort compiler + +enable_language(C Fortran) +set (Fleur_uses_serial TRUE) +find_package(LibXml2 REQUIRED) +find_package(LAPACK REQUIRED) +find_package(MPI) +find_package(HDF5) + +set(CMAKE_C_FLAGS "-I${LIBXML2_INCLUDE_DIR}") + +#MPI can be switched off with NO_MPI variable +if (NOT DEFINED ENV{NO_MPI} ) + if (MPI_Fortran_FOUND) + set(Fleur_uses_MPI TRUE) + endif() +else () + set(Fleur_uses_MPI FALSE) +endif () + +#Check for HDF5 +if ((NOT DEFINED ENV{NO_HDF}) AND (DEFINED ENV{HDF5_ROOT})) + set (HDF5_INCL "-I$ENV{HDF5_ROOT}/include") + set(HDF5_LIBS "-L$ENV{HDF5_ROOT}/lib -lhdf5_fortran -lhdf5 -lz") + set(Fleur_uses_HDF5 TRUE) + add_definitions(-DCPP_HDF) +else () + message("No hdf support found") + message("You might want to set HDF5_ROOT") +endif () + + +#The Fortran compile flags +set(CMAKE_Fortran_FLAGS "${HDF5_INCL} -mkl -warn nousage -assume byterecl -r8 " ) +set(CMAKE_Fortran_FLAGS_RELEASE " -O3 -xHost -openmp" ) +set(CMAKE_Fortran_FLAGS_DEBUG " -traceback -ftrapuv -CB -openmp -O0 -g" ) + +set(LAPACK_LIBS "-lxml2 -mkl -lmatmul -openmp -lpthread") + +if (DEFINED ENV{SCALAPACK_ROOT}) + set(Fleur_uses_SCALAPACK TRUE) + set(LAPACK_LIBS "${LAPACK_LIBS} -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64") +endif() + +if (DEFINED ENV{ELPA_ROOT}) + set(Fleur_uses_ELPA TRUE) + set(LAPACK_LIBS "${LAPACK_LIBS} -L$ENV{ELPA_ROOT}/lib -lelpa_openmp -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lstdc++") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -I$ENV{ELPA_ROOT}/include") +endif() + +if (DEFINED ENV{ELEMENTAL_ROOT}) + set(Fleur_uses_ELEMENTAL TRUE) + set(LAPACK_LIBS "${LAPACK_LIBS} fleur_elemental.o -L$ENV{ELEMENTAL_ROOT}/lib -lelemental -lpmrrr -llapack-addons -lstdc++") +endif() + + + +add_definitions(-DCPP_IO -DCPP_DOUBLE -DCPP_APC) diff --git a/cmake/cmake.pgfortran.config b/cmake/cmake.pgfortran.config new file mode 100644 index 00000000..05211d18 --- /dev/null +++ b/cmake/cmake.pgfortran.config @@ -0,0 +1,61 @@ +#generic Makefile for the pgi compiler + +enable_language(C Fortran) +set (Fleur_uses_serial TRUE) +find_package(LibXml2 REQUIRED) +find_package(LAPACK REQUIRED) +find_package(MPI) +find_package(HDF5) +set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS) +set(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS) + + +set(CMAKE_C_FLAGS "-I${LIBXML2_INCLUDE_DIR}") + +#MPI can be switched off with NO_MPI variable +if (NOT DEFINED ENV{NO_MPI} ) + if (MPI_Fortran_FOUND) + set(Fleur_uses_MPI TRUE) + endif() +else () + set(Fleur_uses_MPI FALSE) +endif () + +#Check for HDF5 +if ((NOT DEFINED ENV{NO_HDF}) AND (DEFINED ENV{HDF5_ROOT})) + set (HDF5_INCL "-I$ENV{HDF5_ROOT}/include") + set(HDF5_LIBS "-L$ENV{HDF5_ROOT}/lib -lhdf5_fortran -lhdf5 -lz") + set(Fleur_uses_HDF5 TRUE) + add_definitions(-DCPP_HDF) +else () + message("No hdf support found") + message("You might want to set HDF5_ROOT") +endif () + + +#The Fortran compile flags +set(CMAKE_Fortran_FLAGS "${HDF5_INCL} -Mr8 -Mr8intrinsics" ) +set(CMAKE_Fortran_FLAGS_RELEASE " -O3 -fast -mp" ) +set(CMAKE_Fortran_FLAGS_DEBUG " -traceback -C -mp -O0 -g -Mchkstk -Mchkptr" ) + +set(LAPACK_LIBS "-Meh_frame -lxml2 -llapack -lblas") + +if (DEFINED ENV{SCALAPACK_ROOT}) + set(Fleur_uses_SCALAPACK TRUE) + set(LAPACK_LIBS "${LAPACK_LIBS} -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64") +endif() + +if (DEFINED ENV{ELPA_ROOT}) + set(Fleur_uses_ELPA TRUE) + set(LAPACK_LIBS "${LAPACK_LIBS} -L$ENV{ELPA_ROOT}/lib -lelpa_openmp -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lstdc++") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -I$ENV{ELPA_ROOT}/include") +endif() + +if (DEFINED ENV{ELEMENTAL_ROOT}) + set(Fleur_uses_ELEMENTAL TRUE) + set(LAPACK_LIBS "${LAPACK_LIBS} fleur_elemental.o -L$ENV{ELEMENTAL_ROOT}/lib -lelemental -lpmrrr -llapack-addons -lstdc++") +endif() + + + +add_definitions(-DCPP_IO -DCPP_DOUBLE -DCPP_AIX) diff --git a/diagonalization/magma.F90 b/diagonalization/magma.F90 index c3b66342..133f3698 100644 --- a/diagonalization/magma.F90 +++ b/diagonalization/magma.F90 @@ -7,7 +7,9 @@ MODULE m_magma !********************************************************** CONTAINS SUBROUTINE magma_diag(nsize,a,b,z,eig,ne) +#ifdef CPP_MAGMA use magma +#endif #include"cpp_double.h" IMPLICIT NONE @@ -25,6 +27,7 @@ CONTAINS COMPLEX, ALLOCATABLE, INTENT (INOUT) :: z(:,:) #endif +#ifdef CPP_MAGMA ! ... Local Variables .. INTEGER iind,ind1,ind2,info,lwork,liwork,lrwork,err,i,mout(1) @@ -100,7 +103,7 @@ CONTAINS DO i = 1, ne eig(i) = eigTemp(i) END DO - +#endif END SUBROUTINE magma_diag END MODULE m_magma -- GitLab