From f8f1557ec729959f449a86f28e013f75fce835ff Mon Sep 17 00:00:00 2001 From: Filip Hazubski Date: Thu, 31 Oct 2024 14:59:17 +0000 Subject: [PATCH] build: Update logic around serialized builtins compilation Add log to explicitly state when serialized builtins compilation is enabled. Correct logic to properly serialize kernel builds for single product. Add chained per product dependencies. Remove unused function. Signed-off-by: Filip Hazubski --- CMakeLists.txt | 4 + .../test/common/test_modules/CMakeLists.txt | 1 + .../test/common/test_modules/gen_kernel.cmake | 12 +-- opencl/test/unit_test/CMakeLists.txt | 80 ++++--------------- shared/test/common/test_files/CMakeLists.txt | 9 +-- 5 files changed, 30 insertions(+), 76 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f747b1b93b..fc1d99d8af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,6 +109,10 @@ if(ENABLE_DYNAMIC_MEMORY_TRACKING) add_definitions(-DENABLE_DYNAMIC_MEMORY_TRACKING) endif() +if(NEO_SERIALIZED_BUILTINS_COMPILATION) + message(STATUS "Enabling serialized builtins compilation") +endif() + if(DEFINED NEO_EXTRA_DEFINES) string(REPLACE "," ";" NEO_EXTRA_DEFINES "${NEO_EXTRA_DEFINES}") foreach(_tmp ${NEO_EXTRA_DEFINES}) diff --git a/level_zero/core/test/common/test_modules/CMakeLists.txt b/level_zero/core/test/common/test_modules/CMakeLists.txt index 25eff0041a..25c4a3dae3 100644 --- a/level_zero/core/test/common/test_modules/CMakeLists.txt +++ b/level_zero/core/test/common/test_modules/CMakeLists.txt @@ -37,6 +37,7 @@ macro(macro_for_each_core_type) apply_macro_for_each_platform("TESTED") endmacro() +set(PREVIOUS_KERNELS) apply_macro_for_each_core_type("TESTED") add_custom_target(l0_common_test_kernels DEPENDS ${l0_test_kernel_outputs} ${l0_bindless_test_kernel_outputs} copy_compiler_files) set_target_properties(l0_common_test_kernels PROPERTIES FOLDER ${TARGET_NAME_L0}) diff --git a/level_zero/core/test/common/test_modules/gen_kernel.cmake b/level_zero/core/test/common/test_modules/gen_kernel.cmake index bf0f317e91..343d8bd01b 100644 --- a/level_zero/core/test/common/test_modules/gen_kernel.cmake +++ b/level_zero/core/test/common/test_modules/gen_kernel.cmake @@ -12,8 +12,6 @@ function(level_zero_generate_kernels target_list platform_name device revision_i set(outputdir "${TargetDir}/${relativeDir}/") - set(previous_target) - foreach(filepath ${ARGN}) get_filename_component(filename ${filepath} NAME) get_filename_component(basename ${filepath} NAME_WE) @@ -33,11 +31,11 @@ function(level_zero_generate_kernels target_list platform_name device revision_i OUTPUT ${output_files} COMMAND ${ocloc_cmd_prefix} -q -file ${absolute_filepath} -device ${device} -out_dir ${outputdir} -output_no_suffix -output ${outputname_base} -revision_id ${revision_id} -options "${options}" WORKING_DIRECTORY ${workdir} - DEPENDS ${filepath} ocloc ${previous_target} + DEPENDS ${filepath} ocloc ${PREVIOUS_KERNELS} ) if(NEO_SERIALIZED_BUILTINS_COMPILATION) - set(previous_target ${output_files}) + set(PREVIOUS_KERNELS ${output_files}) endif() list(APPEND ${target_list} ${output_files}) @@ -66,8 +64,6 @@ function(level_zero_generate_kernels_with_internal_options target_list platform_ set(outputdir "${TargetDir}/${relativeDir}/") - set(previous_target) - foreach(filepath ${ARGN}) get_filename_component(filename ${filepath} NAME) get_filename_component(basename ${filepath} NAME_WE) @@ -88,12 +84,12 @@ function(level_zero_generate_kernels_with_internal_options target_list platform_ OUTPUT ${output_files} COMMAND ${ocloc_cmd_prefix} -q -file ${absolute_filepath} -device ${device} -out_dir ${outputdir} -output_no_suffix -output ${outputname_base} -revision_id ${revision_id} -options ${options} -internal_options "$" WORKING_DIRECTORY ${workdir} - DEPENDS ${filepath} ocloc ${previous_target} + DEPENDS ${filepath} ocloc ${PREVIOUS_KERNELS} VERBATIM ) if(NEO_SERIALIZED_BUILTINS_COMPILATION) - set(previous_target ${output_files}) + set(PREVIOUS_KERNELS ${output_files}) endif() list(APPEND ${target_list} ${output_files}) diff --git a/opencl/test/unit_test/CMakeLists.txt b/opencl/test/unit_test/CMakeLists.txt index d5646f9b3b..7d5fee25f5 100644 --- a/opencl/test/unit_test/CMakeLists.txt +++ b/opencl/test/unit_test/CMakeLists.txt @@ -156,9 +156,13 @@ function(neo_gen_kernels platform_it_lower device revision_id forcePatchtokenFor OUTPUT ${output_files} COMMAND ${ocloc_cmd_prefix} -q -file ${absolute_filepath} -device ${device} -${NEO_BITS} -stateful_address_mode ${addrmode} -revision_id ${revision_id} -out_dir ${outputdir} ${formatArgument} -output_no_suffix -output ${outputname_base} WORKING_DIRECTORY ${workdir} - DEPENDS ${filepath} ocloc + DEPENDS ${filepath} ocloc ${PREVIOUS_KERNELS} ) + if(NEO_SERIALIZED_BUILTINS_COMPILATION) + set(PREVIOUS_KERNELS ${output_files}) + endif() + list(APPEND kernels_to_compile ${output_files}) else() foreach(extension "spv" "bin") @@ -204,8 +208,12 @@ function(neo_gen_kernels_with_options platform_it_lower device revision_id filep OUTPUT ${output_files} COMMAND ${ocloc_cmd_prefix} -file ${absolute_filepath} -device ${device} -${NEO_BITS} -stateful_address_mode ${addrmode} -out_dir ${outputdir} -output_no_suffix -output ${outputname_base} -revision_id ${revision_id} -options ${arg} WORKING_DIRECTORY ${workdir} - DEPENDS ${filearg} ocloc + DEPENDS ${filearg} ocloc ${PREVIOUS_KERNELS} ) + + if(NEO_SERIALIZED_BUILTINS_COMPILATION) + set(PREVIOUS_KERNELS ${output_files}) + endif() list(APPEND kernels_to_compile ${output_files}) else() foreach(extension "spv" "bin") @@ -225,62 +233,6 @@ function(neo_gen_kernels_with_options platform_it_lower device revision_id filep set(kernels_to_compile_${platform_it_lower}_${revision_id} ${kernels_to_compile_${platform_it_lower}_${revision_id}} PARENT_SCOPE) endfunction() -function(neo_gen_kernels_with_internal_options platform_it_lower device revision_id filepath output_name_prefix) - set(kernels_to_compile) - - set(filearg ${filepath}) - get_filename_component(filename ${filearg} NAME) - get_filename_component(basename ${filearg} NAME_WE) - get_filename_component(base_workdir ${filearg} DIRECTORY) - get_filename_component(absolute_filepath ${filearg} ABSOLUTE) - - set(outputdir "${TargetDir}/${platform_it_lower}/${revision_id}/test_files/${NEO_ARCH}/") - set(workdir "${CMAKE_CURRENT_SOURCE_DIR}/${base_workdir}/") - set(addrmode "bindful") - - if(NOT "${output_name_prefix}" STREQUAL "") - set(basename ${output_name_prefix}_${basename}) - endif() - - if("${ARGN}" STREQUAL "-cl-intel-use-bindless-mode -cl-intel-use-bindless-advanced-mode") - set(addrmode "bindless") - endif() - - if("${ARGN}" STREQUAL "-cl-intel-greater-than-4GB-buffer-required") - set(addrmode "default") - endif() - - set(outputname_base "${basename}_${platform_it_lower}") - set(outputpath_base "${outputdir}/${outputname_base}") - if(NOT NEO_DISABLE_BUILTINS_COMPILATION) - set(output_files - ${outputpath_base}.spv - ${outputpath_base}.bin - ) - - add_custom_command( - OUTPUT ${output_files} - COMMAND ${ocloc_cmd_prefix} -file ${absolute_filepath} -device ${device} -revision_id ${revision_id} -${NEO_BITS} -stateful_address_mode ${addrmode} -out_dir ${outputdir} -output_no_suffix -output ${outputname_base} -internal_options ${ARGN} - WORKING_DIRECTORY ${workdir} - DEPENDS ${filearg} ocloc - ) - list(APPEND kernels_to_compile_${platform_it_lower}_${revision_id} ${output_files}) - else() - foreach(extension "spv" "bin") - set(_file_prebuilt "${NEO_KERNELS_BIN_DIR}/${platform_it_lower}/${revision_id}/test_files/${NEO_ARCH}/${basename}_${platform_it_lower}.${extension}") - add_custom_command( - OUTPUT ${outputpath_base}.${extension} - COMMAND ${CMAKE_COMMAND} -E make_directory ${outputdir} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_file_prebuilt} ${outputdir} - ) - - list(APPEND kernels_to_compile_${platform_it_lower}_${revision_id} ${outputpath_base}.${extension}) - endforeach() - endif() - - set(kernels_to_compile_${platform_it_lower}_${revision_id} ${kernels_to_compile_${platform_it_lower}_${revision_id}} PARENT_SCOPE) -endfunction() - set(TEST_KERNEL test_files/CopyBuffer_simd16.cl) set(TEST_KERNEL_options @@ -302,6 +254,8 @@ macro(macro_for_each_platform) list(REMOVE_ITEM PLATFORM_TEST_KERNELS ${KERNEL_TO_REMOVE_PATH}) endforeach() + set(PREVIOUS_KERNELS) + if(WIN32 OR CMAKE_SIZEOF_VOID_P EQUAL 8) foreach(REVISION_CONFIG ${${PLATFORM_IT}_${CORE_TYPE}_REVISIONS}) parse_revision_config(${REVISION_CONFIG} ${PLATFORM_IT_LOWER} DEVICE_ID REVISION_ID) @@ -329,16 +283,14 @@ macro(macro_for_each_platform) endif() - set(PREVIOUS_TARGET) - foreach(REVISION_CONFIG ${${PLATFORM_IT}_${CORE_TYPE}_REVISIONS}) parse_revision_config(${REVISION_CONFIG} ${PLATFORM_IT_LOWER} DEVICE_ID REVISION_ID) - add_custom_target(prepare_test_kernels_${PLATFORM_IT_LOWER}_${REVISION_ID} DEPENDS ${kernels_to_compile_${PLATFORM_IT_LOWER}_${REVISION_ID}} copy_compiler_files) - add_dependencies(prepare_test_kernels_for_ocl prepare_test_kernels_${PLATFORM_IT_LOWER}_${REVISION_ID} ${PREVIOUS_TARGET}) + add_custom_target(prepare_test_kernels_${PLATFORM_IT_LOWER}_${REVISION_ID} DEPENDS ${kernels_to_compile_${PLATFORM_IT_LOWER}_${REVISION_ID}} copy_compiler_files ${PREVIOUS_TARGET}) + add_dependencies(prepare_test_kernels_for_ocl prepare_test_kernels_${PLATFORM_IT_LOWER}_${REVISION_ID}) set_target_properties(prepare_test_kernels_${PLATFORM_IT_LOWER}_${REVISION_ID} PROPERTIES FOLDER "${PLATFORM_SPECIFIC_TEST_TARGETS_FOLDER}/${PLATFORM_IT_LOWER}/${REVISION_ID}") if(NEO_SERIALIZED_BUILTINS_COMPILATION) - set(PREVIOUS_TARGET ${prepare_test_kernels_${PLATFORM_IT_LOWER}_${REVISION_ID}}) + set(PREVIOUS_TARGET "prepare_test_kernels_${PLATFORM_IT_LOWER}_${REVISION_ID}") endif() endforeach() @@ -347,6 +299,8 @@ endmacro() macro(macro_for_each_core_type) apply_macro_for_each_platform("TESTED") endmacro() + +set(PREVIOUS_TARGET "") apply_macro_for_each_core_type("TESTED") add_subdirectories() create_project_source_tree(igdrcl_tests) diff --git a/shared/test/common/test_files/CMakeLists.txt b/shared/test/common/test_files/CMakeLists.txt index 9f61ef608d..049ad6dc89 100644 --- a/shared/test/common/test_files/CMakeLists.txt +++ b/shared/test/common/test_files/CMakeLists.txt @@ -77,8 +77,6 @@ macro(macro_for_each_platform) set(STATELESS_SUPPORT FALSE) CORE_CONTAINS_PLATFORM("SUPPORTED_STATELESS" ${CORE_TYPE} ${PLATFORM_IT} STATELESS_SUPPORT) - set(PREVIOUS_TARGET) - foreach(REVISION_CONFIG ${${PLATFORM_IT}_${CORE_TYPE}_REVISIONS}) parse_revision_config(${REVISION_CONFIG} ${PLATFORM_IT_LOWER} DEVICE_ID REVISION_ID) compile_kernels_gen(${DEVICE_ID} ${REVISION_ID} ${PLATFORM_IT_LOWER} FALSE ${KERNELS_TO_COMPILE}) @@ -87,12 +85,12 @@ macro(macro_for_each_platform) compile_kernels_gen(${DEVICE_ID} ${REVISION_ID} ${PLATFORM_IT_LOWER} TRUE ${KERNELS_TO_COMPILE}) endif() - add_custom_target(prepare_test_kernels_for_shared_${PLATFORM_IT_LOWER}_${REVISION_ID} DEPENDS ${compiled_kernels_${PLATFORM_IT_LOWER}_${REVISION_ID}}) + add_custom_target(prepare_test_kernels_for_shared_${PLATFORM_IT_LOWER}_${REVISION_ID} DEPENDS ${compiled_kernels_${PLATFORM_IT_LOWER}_${REVISION_ID}} ${PREVIOUS_TARGET}) set_target_properties(prepare_test_kernels_for_shared_${PLATFORM_IT_LOWER}_${REVISION_ID} PROPERTIES FOLDER "${SHARED_TEST_PROJECTS_FOLDER}/${SHARED_TEST_PROJECTS_SUB_FOLDER}/${PLATFORM_SPECIFIC_TEST_TARGETS_FOLDER}/${PLATFORM_IT_LOWER}/${REVISION_ID}") - add_dependencies(prepare_test_kernels_for_shared prepare_test_kernels_for_shared_${PLATFORM_IT_LOWER}_${REVISION_ID} ${PREVIOUS_TARGET}) + add_dependencies(prepare_test_kernels_for_shared prepare_test_kernels_for_shared_${PLATFORM_IT_LOWER}_${REVISION_ID}) if(NEO_SERIALIZED_BUILTINS_COMPILATION) - set(PREVIOUS_TARGET ${prepare_test_kernels_for_shared_${PLATFORM_IT_LOWER}_${REVISION_ID}}) + set(PREVIOUS_TARGET "prepare_test_kernels_for_shared_${PLATFORM_IT_LOWER}_${REVISION_ID}") endif() endforeach() endmacro() @@ -101,4 +99,5 @@ macro(macro_for_each_core_type) apply_macro_for_each_platform("TESTED") endmacro() +set(PREVIOUS_TARGET "") apply_macro_for_each_core_type("TESTED")