Skip to content

Commit

Permalink
speedup build with single instance per cpp file
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeremiah J Wilke committed Dec 15, 2019
1 parent c5230a5 commit 7791c91
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions src/kokkoskernels_eti.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -142,31 +142,33 @@ MACRO(KOKKOSKERNELS_GENERATE_ETI FUNCTION_NAME SUBFOLDER)
ENDFOREACH()
STRING(APPEND MACRO_STRING ")")
STRING(REPLACE ",)" ")" MACRO_STRING ${MACRO_STRING})
LIST(APPEND ${UPPER_NAME}_ETI_INST_LIST "${ETI_INST_MACRO}${MACRO_STRING}")
LIST(APPEND ${UPPER_NAME}_ETI_AVAIL_LIST "${ETI_AVAIL_MACRO}${MACRO_STRING}")
#Make a single header file for all instances
LIST(APPEND ${UPPER_NAME}_ETI_DECL_LIST "${ETI_DECL_MACRO}${MACRO_STRING}")
LIST(APPEND ${UPPER_NAME}_ETI_AVAIL_LIST "${ETI_AVAIL_MACRO}${MACRO_STRING}")
SET(${UPPER_NAME}_ETI_DECL_LIST "${ETI_DECL_MACRO}${MACRO_STRING}")
#Make a different source file for each instance
SET(INST_SOURCE "impl/generated_specializations_cpp/${SUBFOLDER}/${ETI}.cpp")
SET(INST_TEMPLATE "impl/generated_specializations_cpp/${SUBFOLDER}/Kokkos${FUNCTION_NAME}_eti_spec_inst.cpp.in")
SET(${UPPER_NAME}_ETI_INST_BLOCK "${ETI_INST_MACRO}${MACRO_STRING}")
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${INST_TEMPLATE}
${CMAKE_CURRENT_BINARY_DIR}/${INST_SOURCE})
LIST(APPEND ${ETI_SOURCE_LIST} ${CMAKE_CURRENT_BINARY_DIR}/${INST_SOURCE})
ENDFOREACH()

SET(AVAIL_HEADER "impl/generated_specializations_hpp/Kokkos${FUNCTION_NAME}_eti_spec_avail.hpp")
SET(AVAIL_TEMPLATE "${AVAIL_HEADER}.in")
SET(DECL_HEADER "impl/generated_specializations_hpp/Kokkos${FUNCTION_NAME}_eti_spec_decl.hpp")
SET(DECL_TEMPLATE "${DECL_HEADER}.in")
SET(INST_SOURCE "impl/generated_specializations_cpp/${SUBFOLDER}/Kokkos${FUNCTION_NAME}_eti_spec_inst.cpp")
SET(INST_TEMPLATE "${INST_SOURCE}.in")

STRING(REPLACE ";" "\n" ${UPPER_NAME}_ETI_INST_BLOCK "${${UPPER_NAME}_ETI_INST_LIST}")
STRING(REPLACE ";" "\n" ${UPPER_NAME}_ETI_AVAIL_BLOCK "${${UPPER_NAME}_ETI_AVAIL_LIST}")
STRING(REPLACE ";" "\n" ${UPPER_NAME}_ETI_DECL_BLOCK "${${UPPER_NAME}_ETI_DECL_LIST}")

MESSAGE(STATUS "Creating ETI files for ${FUNCTION_NAME}")
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${INST_TEMPLATE}
${CMAKE_CURRENT_BINARY_DIR}/${INST_SOURCE})
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${DECL_TEMPLATE}
${CMAKE_CURRENT_BINARY_DIR}/${DECL_HEADER})
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${AVAIL_TEMPLATE}
${CMAKE_CURRENT_BINARY_DIR}/${AVAIL_HEADER})

LIST(APPEND ${ETI_SOURCE_LIST} ${CMAKE_CURRENT_BINARY_DIR}/${INST_SOURCE})
LIST(APPEND ${ETI_HEADER_LIST} ${CMAKE_CURRENT_BINARY_DIR}/${AVAIL_HEADER})
LIST(APPEND ${ETI_HEADER_LIST} ${CMAKE_CURRENT_BINARY_DIR}/${DECL_HEADER})
ENDMACRO(KOKKOSKERNELS_GENERATE_ETI)

0 comments on commit 7791c91

Please sign in to comment.