Skip to content

Commit

Permalink
Separate sources into precision dependent and independent libs
Browse files Browse the repository at this point in the history
  • Loading branch information
awnawab committed May 29, 2024
1 parent e6d9208 commit dada3b2
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 14 deletions.
33 changes: 30 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -150,14 +150,42 @@ if( HAVE_ACC )
ecbuild_warn("OpenACC builds force static linking.")
endif()

list(APPEND prec_srcs field_module.F90 field_array_module.F90 field_array_util_module.F90 field_util_module.F90)
list(REMOVE_ITEM srcs ${prec_srcs})

## build precision independent source files
ecbuild_add_library(
TARGET ${LIBNAME}_prec_independent
SOURCES ${srcs}
DEFINITIONS $<$<NOT:${fiat_FOUND}>:${FIELD_API_DEFINITIONS}>
PUBLIC_LIBS
$<${HAVE_ACC}:OpenACC::OpenACC_Fortran>
PRIVATE_LIBS
$<${fiat_FOUND}:fiat>
$<${fiat_FOUND}:parkind_${DEFAULT_PRECISION}>
OpenMP::OpenMP_Fortran
)
target_include_directories( ${LIBNAME}_prec_independent PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
set_property(TARGET ${LIBNAME}_prec_independent PROPERTY C_STANDARD 99)
set_target_properties( ${LIBNAME}_prec_independent PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/include/${LIBNAME}_prec_independent )
target_link_options( ${LIBNAME}_prec_independent PUBLIC $<${HAVE_CUDA}:-cuda> )

# export target usage interface
target_include_directories( ${LIBNAME}_prec_independent
INTERFACE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include/${LIBNAME}_prec_independent>
INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${LIBNAME}_prec_independent>
)
# set install location for .mod files
install(DIRECTORY ${CMAKE_BINARY_DIR}/include/${LIBNAME}_prec_independent DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

foreach(prec ${precisions})
## add field_api target
ecbuild_add_library(
TARGET ${LIBNAME}_${prec}
SOURCES ${srcs}
SOURCES ${prec_srcs}
DEFINITIONS $<$<NOT:${fiat_FOUND}>:${FIELD_API_DEFINITIONS}>
PUBLIC_LIBS
$<${HAVE_ACC}:OpenACC::OpenACC_Fortran>
${LIBNAME}_prec_independent
PRIVATE_LIBS
$<${fiat_FOUND}:fiat>
$<${fiat_FOUND}:parkind_${prec}>
Expand All @@ -166,7 +194,6 @@ foreach(prec ${precisions})
target_include_directories( ${LIBNAME}_${prec} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
set_property(TARGET ${LIBNAME}_${prec} PROPERTY C_STANDARD 99)
set_target_properties( ${LIBNAME}_${prec} PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/include/${LIBNAME}_${prec} )
target_link_options( ${LIBNAME}_${prec} PUBLIC $<${HAVE_CUDA}:-cuda> )

# export target usage interface
target_include_directories( ${LIBNAME}_${prec}
Expand Down
12 changes: 6 additions & 6 deletions field_RANKSUFF_array_util_module.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ MODULE FIELD_${RANK}$${SUFF}$_ARRAY_UTIL_MODULE

#:set fieldTypeList = fieldType.getFieldTypeList (ranks=[RANK], kinds=['JP' + SUFF], hasView=True)

USE FIELD_ARRAY_MODULE
USE FIELD_${RANK}$${SUFF}$_ARRAY_MODULE
${fieldType.useParkind1 ()}$

IMPLICIT NONE
Expand All @@ -32,7 +32,7 @@ CONTAINS

SUBROUTINE LOAD_${ft.name}$_ARRAY (KLUN, YD)

USE FIELD_UTIL_MODULE, ONLY : LOAD
USE FIELD_${RANK}$${SUFF}$_UTIL_MODULE, ONLY : LOAD

INTEGER (KIND=JPIM), INTENT (IN) :: KLUN
TYPE (${ft.name}$_ARRAY) :: YD
Expand All @@ -45,15 +45,15 @@ END SUBROUTINE

SUBROUTINE SAVE_${ft.name}$_ARRAY (KLUN, YD)

USE FIELD_UTIL_MODULE, ONLY : SAVE
USE FIELD_${RANK}$${SUFF}$_UTIL_MODULE, ONLY : SAVE

INTEGER (KIND=JPIM), INTENT (IN) :: KLUN
TYPE (${ft.name}$_ARRAY) :: YD
END SUBROUTINE

SUBROUTINE COPY_${ft.name}$_ARRAY (SELF, LDCREATED, LDFIELDAPI)

USE FIELD_UTIL_MODULE, ONLY : COPY
USE FIELD_${RANK}$${SUFF}$_UTIL_MODULE, ONLY : COPY

TYPE (${ft.name}$_ARRAY) :: SELF
LOGICAL, INTENT (IN), OPTIONAL :: LDCREATED, LDFIELDAPI
Expand Down Expand Up @@ -83,7 +83,7 @@ END SUBROUTINE

SUBROUTINE WIPE_${ft.name}$_ARRAY (SELF, LDDELETED, LDFIELDAPI)

USE FIELD_UTIL_MODULE, ONLY : WIPE
USE FIELD_${RANK}$${SUFF}$_UTIL_MODULE, ONLY : WIPE

TYPE (${ft.name}$_ARRAY) :: SELF
LOGICAL, INTENT (IN), OPTIONAL :: LDDELETED, LDFIELDAPI
Expand All @@ -107,7 +107,7 @@ END SUBROUTINE

SUBROUTINE HOST_${ft.name}$_ARRAY (SELF)

USE FIELD_UTIL_MODULE, ONLY : HOST
USE FIELD_${RANK}$${SUFF}$_UTIL_MODULE, ONLY : HOST

TYPE (${ft.name}$_ARRAY) :: SELF

Expand Down
1 change: 0 additions & 1 deletion field_access_module.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ MODULE FIELD_ACCESS_MODULE

#:set fieldTypeList = fieldType.getFieldTypeList ()

USE FIELD_MODULE
${fieldType.useParkind1 ()}$

#:for ft in fieldTypeList
Expand Down
1 change: 0 additions & 1 deletion field_gathscat_module.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ MODULE FIELD_GATHSCAT_MODULE

#:set fieldTypeList = fieldType.getFieldTypeList ()

USE FIELD_MODULE
USE FIELD_ACCESS_MODULE
USE FIELD_FACTORY_MODULE
USE FIELD_GATHSCAT_TYPE_MODULE
Expand Down
2 changes: 1 addition & 1 deletion field_gathscat_type_module.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ MODULE FIELD_GATHSCAT_TYPE_MODULE

#:set fieldTypeList = fieldType.getFieldTypeList (hasView=True)

USE FIELD_MODULE
USE FIELD_2LM_MODULE, ONLY : FIELD_2LM
USE FIELD_ACCESS_MODULE
USE FIELD_FACTORY_MODULE
USE FIELD_SHUFFLE_TYPE_MODULE
Expand Down
1 change: 0 additions & 1 deletion field_shuffle_module.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ MODULE FIELD_SHUFFLE_MODULE

#:set fieldTypeList = fieldType.getFieldTypeList ()

USE FIELD_MODULE
USE FIELD_ACCESS_MODULE
USE FIELD_FACTORY_MODULE
USE FIELD_SHUFFLE_TYPE_MODULE
Expand Down
2 changes: 1 addition & 1 deletion field_shuffle_type_module.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ MODULE FIELD_SHUFFLE_TYPE_MODULE

#:set fieldTypeList = fieldType.getFieldTypeList (hasView=True)

USE FIELD_MODULE
USE FIELD_3IM_MODULE, ONLY : FIELD_3IM
USE FIELD_ACCESS_MODULE
USE FIELD_FACTORY_MODULE
${fieldType.useParkind1 ()}$
Expand Down

0 comments on commit dada3b2

Please sign in to comment.