Drop build dependency on DeviceLibs.
DeviceLibs is still needed but is found and included by clang now. Change-Id: I03ff7dc91c028d2ee6747aa1779d223a9ba13915
Этот коммит содержится в:
@@ -42,35 +42,8 @@
|
|||||||
|
|
||||||
cmake_minimum_required ( VERSION 3.7 )
|
cmake_minimum_required ( VERSION 3.7 )
|
||||||
|
|
||||||
# Flag to abort before executing after default initialization of cache variables
|
|
||||||
set (QUIT 0)
|
|
||||||
|
|
||||||
# Import target 'clang'
|
# Import target 'clang'
|
||||||
find_package(Clang REQUIRED HINTS ${CMAKE_INSTALL_PREFIX}/llvm ${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm )
|
find_package(Clang REQUIRED HINTS ${CMAKE_PREFIX_PATH}/llvm PATHS /opt/rocm/llvm )
|
||||||
|
|
||||||
# Device libs doesn't support find_package yet.
|
|
||||||
set(PREFIX_HINTS "")
|
|
||||||
foreach(hint "/amdgcn/bitcode" "/lib/bitcode" "/lib/x86_64/bitcode")
|
|
||||||
foreach(path ${CMAKE_PREFIX_PATH})
|
|
||||||
string(APPEND path ${hint})
|
|
||||||
list(APPEND PREFIX_HINTS ${path})
|
|
||||||
endforeach(path)
|
|
||||||
endforeach(hint)
|
|
||||||
|
|
||||||
get_include_path(BITCODE_DIR "Bitcode library path" RESULT FOUND NAMES "opencl.bc" "opencl.amdgcn.bc"
|
|
||||||
HINTS
|
|
||||||
"${CMAKE_INSTALL_PREFIX}/amdgcn/bitcode"
|
|
||||||
"${CMAKE_INSTALL_PREFIX}/lib/bitcode"
|
|
||||||
"${CMAKE_INSTALL_PREFIX}/lib/x86_64/bitcode"
|
|
||||||
"${PREFIX_HINTS}"
|
|
||||||
PATHS
|
|
||||||
"/opt/rocm/amdgcn/bitcode"
|
|
||||||
"/opt/rocm/lib/bitcode"
|
|
||||||
"/opt/rocm/lib"
|
|
||||||
"/opt/rocm/lib/x86_64/bitcode")
|
|
||||||
if (NOT ${FOUND})
|
|
||||||
set (QUIT 1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Determine the target devices if not specified
|
# Determine the target devices if not specified
|
||||||
if (NOT DEFINED TARGET_DEVICES)
|
if (NOT DEFINED TARGET_DEVICES)
|
||||||
@@ -78,13 +51,6 @@ if (NOT DEFINED TARGET_DEVICES)
|
|||||||
endif()
|
endif()
|
||||||
set( TARGET_DEVICES ${TARGET_DEVICES} CACHE STRING "Build targets" FORCE )
|
set( TARGET_DEVICES ${TARGET_DEVICES} CACHE STRING "Build targets" FORCE )
|
||||||
|
|
||||||
# End of default configuration and path checking.
|
|
||||||
# Quit if configuration is incomplete.
|
|
||||||
if (QUIT)
|
|
||||||
message(FATAL_ERROR "Configuration halted.")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(${CMAKE_VERBOSE_MAKEFILE})
|
if(${CMAKE_VERBOSE_MAKEFILE})
|
||||||
get_property(clang_path TARGET clang PROPERTY LOCATION)
|
get_property(clang_path TARGET clang PROPERTY LOCATION)
|
||||||
message("Using clang from: ${clang_path}")
|
message("Using clang from: ${clang_path}")
|
||||||
@@ -92,7 +58,6 @@ if(${CMAKE_VERBOSE_MAKEFILE})
|
|||||||
message(" Target Devices*: ${TARGET_DEVICES}")
|
message(" Target Devices*: ${TARGET_DEVICES}")
|
||||||
message(" (Specify \";\" separated list of target IDs.)")
|
message(" (Specify \";\" separated list of target IDs.)")
|
||||||
message(" Clang path: ${clang_path}")
|
message(" Clang path: ${clang_path}")
|
||||||
message(" Bitcode Dir: ${BITCODE_DIR}")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
##==========================================
|
##==========================================
|
||||||
@@ -100,36 +65,12 @@ endif()
|
|||||||
##==========================================
|
##==========================================
|
||||||
function(gen_kernel_bc TARGET_ID INPUT_FILE OUTPUT_FILE)
|
function(gen_kernel_bc TARGET_ID INPUT_FILE OUTPUT_FILE)
|
||||||
|
|
||||||
string (REGEX MATCH "^gfx([^:]+)" GFXIP "${TARGET_ID}")
|
|
||||||
set (GFXIP_NUMBER "${CMAKE_MATCH_1}")
|
|
||||||
# Report syntactically invalid target IDs and terminate.
|
|
||||||
if (NOT GFXIP)
|
|
||||||
message(FATAL_ERROR "Invalid target (${TARGET_ID}) specified for generating BLIT kerenel")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
# Determine if device-libs is following old or new layout
|
|
||||||
if(EXISTS "${BITCODE_DIR}/opencl.amdgcn.bc")
|
|
||||||
set(BITCODE_ARGS "-nogpulib
|
|
||||||
-Xclang -mlink-bitcode-file -Xclang ${BITCODE_DIR}/opencl.amdgcn.bc
|
|
||||||
-Xclang -mlink-bitcode-file -Xclang ${BITCODE_DIR}/ockl.amdgcn.bc
|
|
||||||
-Xclang -mlink-bitcode-file -Xclang ${BITCODE_DIR}/ocml.amdgcn.bc
|
|
||||||
-Xclang -mlink-bitcode-file -Xclang ${BITCODE_DIR}/oclc_daz_opt_on.amdgcn.bc
|
|
||||||
-Xclang -mlink-bitcode-file -Xclang ${BITCODE_DIR}/oclc_isa_version_${GFXIP_NUMBER}.amdgcn.bc
|
|
||||||
-Xclang -mlink-bitcode-file -Xclang ${BITCODE_DIR}/oclc_unsafe_math_off.amdgcn.bc
|
|
||||||
-Xclang -mlink-bitcode-file -Xclang ${BITCODE_DIR}/oclc_finite_only_off.amdgcn.bc")
|
|
||||||
else()
|
|
||||||
set(BITCODE_ARGS "--hip-device-lib-path=${BITCODE_DIR}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
separate_arguments(CLANG_ARG_LIST UNIX_COMMAND
|
separate_arguments(CLANG_ARG_LIST UNIX_COMMAND
|
||||||
"-O2 -x cl -cl-denorms-are-zero -cl-std=CL2.0 -target amdgcn-amd-amdhsa
|
"-O2 -x cl -Xclang -finclude-default-header -cl-denorms-are-zero -cl-std=CL2.0
|
||||||
-Xclang -finclude-default-header -mcpu=${TARGET_ID}
|
-target amdgcn-amd-amdhsa -mcpu=${TARGET_ID} -o ${OUTPUT_FILE} ${INPUT_FILE}")
|
||||||
${BITCODE_ARGS} -o ${OUTPUT_FILE} ${INPUT_FILE}")
|
|
||||||
|
|
||||||
## Add custom command to produce a code object file.
|
## Add custom command to produce a code object file.
|
||||||
## This depends on the kernel source file & compiler.
|
## This depends on the kernel source file & compiler.
|
||||||
## It does not pickup devicelib changes. It is not clear
|
|
||||||
## how to do that after conversion to --rocm-path is done.
|
|
||||||
add_custom_command(OUTPUT ${OUTPUT_FILE} COMMAND clang ${CLANG_ARG_LIST}
|
add_custom_command(OUTPUT ${OUTPUT_FILE} COMMAND clang ${CLANG_ARG_LIST}
|
||||||
DEPENDS ${INPUT_FILE} clang
|
DEPENDS ${INPUT_FILE} clang
|
||||||
COMMENT "BUILDING bitcode for ${OUTPUT_FILE}..."
|
COMMENT "BUILDING bitcode for ${OUTPUT_FILE}..."
|
||||||
@@ -147,15 +88,8 @@ endfunction(gen_kernel_bc)
|
|||||||
##==========================================
|
##==========================================
|
||||||
function(build_kernel BLIT_NAME TARGET_ID)
|
function(build_kernel BLIT_NAME TARGET_ID)
|
||||||
|
|
||||||
string (REGEX MATCH "^gfx([^:]+)" GFXIP "${TARGET_ID}")
|
|
||||||
# Report syntactically invalid target IDs and terminate.
|
|
||||||
if (NOT GFXIP)
|
|
||||||
message(FATAL_ERROR "Invalid target (${TARGET_ID}) specified for generating BLIT kerenel (${BLIT_NAME})")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
## generate kernel bitcodes
|
## generate kernel bitcodes
|
||||||
set (CODE_OBJECT_FILE "${BLIT_NAME}_${GFXIP}")
|
set (CODE_OBJECT_FILE "${BLIT_NAME}_${TARGET_ID}")
|
||||||
set (CL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/imageblit_kernels.cl)
|
set (CL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/imageblit_kernels.cl)
|
||||||
gen_kernel_bc(${TARGET_ID} ${CL_FILE} ${CODE_OBJECT_FILE})
|
gen_kernel_bc(${TARGET_ID} ${CL_FILE} ${CODE_OBJECT_FILE})
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user