Commit 09aba405 authored by Umang Yadav's avatar Umang Yadav
Browse files

Add fp8 file during JIT compilation

parent 61c3e5a5
...@@ -57,21 +57,21 @@ endfunction() ...@@ -57,21 +57,21 @@ endfunction()
function(generate_embed_source EMBED_NAME) function(generate_embed_source EMBED_NAME)
set(options) set(options)
set(oneValueArgs SRC HEADER RELATIVE) set(oneValueArgs SRC HEADER RELATIVE)
set(multiValueArgs OBJECTS SYMBOLS FILES) set(multiValueArgs OBJECTS SYMBOLS FILES EXTRA_FILES EXTRA_RELATIVE)
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(EXTERNS) set(EXTERNS)
set(INIT_KERNELS) set(INIT_KERNELS)
list(LENGTH PARSE_SYMBOLS SYMBOLS_LEN) list(LENGTH PARSE_SYMBOLS SYMBOLS_LEN)
list(LENGTH PARSE_OBJECTS OBJECTS_LEN) list(LENGTH PARSE_OBJECTS OBJECTS_LEN)
list(LENGTH PARSE_FILES PARSE_FILES_LEN)
list(LENGTH PARSE_EXTRA_FILES EXTRA_FILES_LEN)
if(NOT ${SYMBOLS_LEN} EQUAL ${OBJECTS_LEN}) if(NOT ${SYMBOLS_LEN} EQUAL ${OBJECTS_LEN})
message(FATAL_ERROR "Symbols and objects dont match: ${SYMBOLS_LEN} != ${OBJECTS_LEN}") message(FATAL_ERROR "Symbols and objects dont match: ${SYMBOLS_LEN} != ${OBJECTS_LEN}")
endif() endif()
math(EXPR LEN "${SYMBOLS_LEN} - 1") math(EXPR FILES_LEN "${SYMBOLS_LEN} - ${EXTRA_FILES_LEN} - 1")
foreach(idx RANGE ${LEN}) foreach(idx RANGE ${FILES_LEN})
list(GET PARSE_SYMBOLS ${idx} SYMBOL) list(GET PARSE_SYMBOLS ${idx} SYMBOL)
list(GET PARSE_OBJECTS ${idx} OBJECT) list(GET PARSE_OBJECTS ${idx} OBJECT)
list(GET PARSE_FILES ${idx} FILE) list(GET PARSE_FILES ${idx} FILE)
...@@ -101,6 +101,39 @@ extern const size_t ${LENGTH_SYMBOL}; ...@@ -101,6 +101,39 @@ extern const size_t ${LENGTH_SYMBOL};
{ \"${BASE_NAME}\", { ${START_SYMBOL}, ${LENGTH_SYMBOL}} },") { \"${BASE_NAME}\", { ${START_SYMBOL}, ${LENGTH_SYMBOL}} },")
endforeach() endforeach()
math(EXPR EXTRA_FILES_LEN "${EXTRA_FILES_LEN} -1")
foreach(offset RANGE ${EXTRA_FILES_LEN})
math(EXPR idx "${offset} + ${PARSE_FILES_LEN}")
list(GET PARSE_SYMBOLS ${idx} SYMBOL)
list(GET PARSE_OBJECTS ${idx} OBJECT)
list(GET PARSE_EXTRA_FILES ${offset} FILE)
list(GET PARSE_EXTRA_RELATIVE ${offset} EXTRA_RELATIVE_PATH)
set(START_SYMBOL "_binary_${SYMBOL}_start")
set(LENGTH_SYMBOL "_binary_${SYMBOL}_length")
if(EMBED_USE_LD)
string(APPEND EXTERNS "
extern const char ${START_SYMBOL}[];
extern const size_t _binary_${SYMBOL}_size;
const auto ${LENGTH_SYMBOL} = reinterpret_cast<size_t>(&_binary_${SYMBOL}_size);
")
else()
string(APPEND EXTERNS "
extern const char ${START_SYMBOL}[];
extern const size_t ${LENGTH_SYMBOL};
")
endif()
if(EXTRA_RELATIVE_PATH)
file(RELATIVE_PATH BASE_NAME ${EXTRA_RELATIVE_PATH} "${FILE}")
else()
get_filename_component(BASE_NAME "${FILE}" NAME)
endif()
string(APPEND INIT_KERNELS "
{ \"${BASE_NAME}\", { ${START_SYMBOL}, ${LENGTH_SYMBOL}} },")
endforeach()
file(WRITE "${PARSE_HEADER}" " file(WRITE "${PARSE_HEADER}" "
#include <string_view> #include <string_view>
#include <unordered_map> #include <unordered_map>
...@@ -165,7 +198,7 @@ endfunction() ...@@ -165,7 +198,7 @@ endfunction()
function(add_embed_library EMBED_NAME) function(add_embed_library EMBED_NAME)
set(options) set(options)
set(oneValueArgs RELATIVE) set(oneValueArgs RELATIVE)
set(multiValueArgs) set(multiValueArgs EXTRA_HEADERS EXTRA_HEADERS_RELATIVE)
cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/embed) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/embed)
...@@ -182,8 +215,14 @@ function(add_embed_library EMBED_NAME) ...@@ -182,8 +215,14 @@ function(add_embed_library EMBED_NAME)
list(APPEND OUTPUT_FILES ${OUTPUT_FILE}) list(APPEND OUTPUT_FILES ${OUTPUT_FILE})
list(APPEND SYMBOLS ${OUTPUT_SYMBOL}) list(APPEND SYMBOLS ${OUTPUT_SYMBOL})
endforeach() endforeach()
foreach(FILE ${PARSE_EXTRA_HEADERS})
embed_file(OUTPUT_FILE OUTPUT_SYMBOL ${FILE})
list(APPEND OUTPUT_FILES ${OUTPUT_FILE})
list(APPEND SYMBOLS ${OUTPUT_SYMBOL})
endforeach()
message(STATUS "Generating embedding library ${EMBED_NAME}") message(STATUS "Generating embedding library ${EMBED_NAME}")
generate_embed_source(${EMBED_NAME} SRC ${SRC_FILE} HEADER ${HEADER_FILE} OBJECTS ${OUTPUT_FILES} SYMBOLS ${SYMBOLS} RELATIVE ${PARSE_RELATIVE} FILES ${PARSE_UNPARSED_ARGUMENTS}) generate_embed_source(${EMBED_NAME} SRC ${SRC_FILE} HEADER ${HEADER_FILE} OBJECTS ${OUTPUT_FILES} SYMBOLS ${SYMBOLS} RELATIVE ${PARSE_RELATIVE} FILES ${PARSE_UNPARSED_ARGUMENTS} EXTRA_FILES ${PARSE_EXTRA_HEADERS} EXTRA_RELATIVE ${PARSE_EXTRA_HEADERS_RELATIVE})
set(INTERNAL_EMBED_LIB embed_lib_${EMBED_NAME}) set(INTERNAL_EMBED_LIB embed_lib_${EMBED_NAME})
add_library(${INTERNAL_EMBED_LIB} OBJECT "${SRC_FILE}") add_library(${INTERNAL_EMBED_LIB} OBJECT "${SRC_FILE}")
......
...@@ -49,8 +49,6 @@ endif() ...@@ -49,8 +49,6 @@ endif()
file(GLOB KERNEL_FILES CONFIGURE_DEPENDS file(GLOB KERNEL_FILES CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/kernels/include/migraphx/kernels/*.hpp) ${CMAKE_CURRENT_SOURCE_DIR}/kernels/include/migraphx/kernels/*.hpp)
message(STATUS "CMAKE Source Dir is : ${CMAKE_SOURCE_DIR}")
list(APPEND KERNEL_FILES ${CMAKE_SOURCE_DIR}/src/include/migraphx/fp8e4m3fnuz.hpp)
message(STATUS "KERNEL_FILES: ${KERNEL_FILES}") message(STATUS "KERNEL_FILES: ${KERNEL_FILES}")
if(NOT MIGRAPHX_USE_COMPOSABLEKERNEL) if(NOT MIGRAPHX_USE_COMPOSABLEKERNEL)
...@@ -62,7 +60,7 @@ endif() ...@@ -62,7 +60,7 @@ endif()
include(Embed) include(Embed)
add_embed_library(migraphx_kernels ${KERNEL_FILES} RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/kernels/include/) add_embed_library(migraphx_kernels ${KERNEL_FILES} RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/kernels/include/ EXTRA_HEADERS ${CMAKE_SOURCE_DIR}/src/include/migraphx/fp8e4m3fnuz.hpp EXTRA_HEADERS_RELATIVE ${CMAKE_SOURCE_DIR}/src/include)
configure_file(device/targets.hpp.in include/migraphx/gpu/device/targets.hpp) configure_file(device/targets.hpp.in include/migraphx/gpu/device/targets.hpp)
file(GLOB DEVICE_GPU_SRCS CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/device/*.cpp) file(GLOB DEVICE_GPU_SRCS CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/device/*.cpp)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment