mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-26 17:41:59 +00:00
Merge pull request #38217 from kitaisreal/aarch64-enable-jit-compilation
AARCH64 enable JIT compilation
This commit is contained in:
commit
13676e0a75
2
contrib/llvm-project
vendored
2
contrib/llvm-project
vendored
@ -1 +1 @@
|
|||||||
Subproject commit d857c707fccd50423bea1c4710dc469cf89607a9
|
Subproject commit 4ef26de16c229429141e424375142c9b03234b66
|
@ -1,18 +1,16 @@
|
|||||||
if (APPLE OR NOT ARCH_AMD64 OR SANITIZE STREQUAL "undefined")
|
if (APPLE OR SANITIZE STREQUAL "undefined")
|
||||||
set (ENABLE_EMBEDDED_COMPILER_DEFAULT OFF)
|
set (ENABLE_EMBEDDED_COMPILER_DEFAULT OFF)
|
||||||
else()
|
else()
|
||||||
set (ENABLE_EMBEDDED_COMPILER_DEFAULT ON)
|
set (ENABLE_EMBEDDED_COMPILER_DEFAULT ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option (ENABLE_EMBEDDED_COMPILER "Enable support for 'compile_expressions' option for query execution" ${ENABLE_EMBEDDED_COMPILER_DEFAULT})
|
option (ENABLE_EMBEDDED_COMPILER "Enable support for JIT compilation during query execution" ${ENABLE_EMBEDDED_COMPILER_DEFAULT})
|
||||||
|
|
||||||
if (NOT ENABLE_EMBEDDED_COMPILER)
|
if (NOT ENABLE_EMBEDDED_COMPILER)
|
||||||
message(STATUS "Not using LLVM")
|
message(STATUS "Not using LLVM")
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# TODO: Enable compilation on AArch64
|
|
||||||
|
|
||||||
set (LLVM_VERSION "15.0.0bundled")
|
set (LLVM_VERSION "15.0.0bundled")
|
||||||
set (LLVM_INCLUDE_DIRS
|
set (LLVM_INCLUDE_DIRS
|
||||||
"${ClickHouse_SOURCE_DIR}/contrib/llvm-project/llvm/include"
|
"${ClickHouse_SOURCE_DIR}/contrib/llvm-project/llvm/include"
|
||||||
@ -58,18 +56,30 @@ set (REQUIRED_LLVM_LIBRARIES
|
|||||||
LLVMDemangle
|
LLVMDemangle
|
||||||
)
|
)
|
||||||
|
|
||||||
# if (ARCH_AMD64)
|
if (ARCH_AMD64)
|
||||||
|
set (LLVM_TARGETS_TO_BUILD "X86" CACHE INTERNAL "")
|
||||||
list(APPEND REQUIRED_LLVM_LIBRARIES LLVMX86Info LLVMX86Desc LLVMX86CodeGen)
|
list(APPEND REQUIRED_LLVM_LIBRARIES LLVMX86Info LLVMX86Desc LLVMX86CodeGen)
|
||||||
# elseif (ARCH_AARCH64)
|
elseif (ARCH_AARCH64)
|
||||||
# list(APPEND REQUIRED_LLVM_LIBRARIES LLVMAArch64Info LLVMAArch64Desc LLVMAArch64CodeGen)
|
set (LLVM_TARGETS_TO_BUILD "AArch64" CACHE INTERNAL "")
|
||||||
# endif ()
|
list(APPEND REQUIRED_LLVM_LIBRARIES LLVMAArch64Info LLVMAArch64Desc LLVMAArch64CodeGen)
|
||||||
|
elseif (ARCH_PPC64LE)
|
||||||
|
set (LLVM_TARGETS_TO_BUILD "PowerPC" CACHE INTERNAL "")
|
||||||
|
list(APPEND REQUIRED_LLVM_LIBRARIES LLVMPowerPCInfo LLVMPowerPCDesc LLVMPowerPCCodeGen)
|
||||||
|
elseif (ARCH_S390X)
|
||||||
|
set (LLVM_TARGETS_TO_BUILD "SystemZ" CACHE INTERNAL "")
|
||||||
|
list(APPEND REQUIRED_LLVM_LIBRARIES LLVMSystemZInfo LLVMSystemZDesc LLVMSystemZCodeGen)
|
||||||
|
elseif (ARCH_RISCV64)
|
||||||
|
set (LLVM_TARGETS_TO_BUILD "RISCV" CACHE INTERNAL "")
|
||||||
|
list(APPEND REQUIRED_LLVM_LIBRARIES LLVMRISCVInfo LLVMRISCVDesc LLVMRISCVCodeGen)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
message (STATUS "LLVM TARGETS TO BUILD ${LLVM_TARGETS_TO_BUILD}")
|
||||||
|
|
||||||
set (CMAKE_INSTALL_RPATH "ON") # Do not adjust RPATH in llvm, since then it will not be able to find libcxx/libcxxabi/libunwind
|
set (CMAKE_INSTALL_RPATH "ON") # Do not adjust RPATH in llvm, since then it will not be able to find libcxx/libcxxabi/libunwind
|
||||||
set (LLVM_COMPILER_CHECKED 1 CACHE INTERNAL "") # Skip internal compiler selection
|
set (LLVM_COMPILER_CHECKED 1 CACHE INTERNAL "") # Skip internal compiler selection
|
||||||
set (LLVM_ENABLE_EH 1 CACHE INTERNAL "") # With exception handling
|
set (LLVM_ENABLE_EH 1 CACHE INTERNAL "") # With exception handling
|
||||||
set (LLVM_ENABLE_RTTI 1 CACHE INTERNAL "")
|
set (LLVM_ENABLE_RTTI 1 CACHE INTERNAL "")
|
||||||
set (LLVM_ENABLE_PIC 0 CACHE INTERNAL "")
|
set (LLVM_ENABLE_PIC 0 CACHE INTERNAL "")
|
||||||
set (LLVM_TARGETS_TO_BUILD "X86" CACHE STRING "") # for x86 + ARM: "X86;AArch64"
|
|
||||||
|
|
||||||
# Omit unnecessary stuff (just the options which are ON by default)
|
# Omit unnecessary stuff (just the options which are ON by default)
|
||||||
set(LLVM_ENABLE_BACKTRACES 0 CACHE INTERNAL "")
|
set(LLVM_ENABLE_BACKTRACES 0 CACHE INTERNAL "")
|
||||||
@ -99,15 +109,12 @@ set(LLVM_ENABLE_BINDINGS 0 CACHE INTERNAL "")
|
|||||||
set (LLVM_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/llvm-project/llvm")
|
set (LLVM_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/llvm-project/llvm")
|
||||||
set (LLVM_BINARY_DIR "${ClickHouse_BINARY_DIR}/contrib/llvm-project/llvm")
|
set (LLVM_BINARY_DIR "${ClickHouse_BINARY_DIR}/contrib/llvm-project/llvm")
|
||||||
|
|
||||||
# Since we always use toolchain files to generate hermatic builds, cmake will
|
message (STATUS "LLVM CMAKE CROSS COMPILING ${CMAKE_CROSSCOMPILING}")
|
||||||
# think it's a cross compilation, and LLVM will try to configure NATIVE LLVM
|
if (CMAKE_CROSSCOMPILING)
|
||||||
# targets with all tests enabled, which will slow down cmake configuration and
|
set (LLVM_HOST_TRIPLE "${CMAKE_C_COMPILER_TARGET}" CACHE INTERNAL "")
|
||||||
# compilation (You'll see Building native llvm-tblgen...). Let's disable the
|
message (STATUS "CROSS COMPILING SET LLVM HOST TRIPLE ${LLVM_HOST_TRIPLE}")
|
||||||
# cross compiling indicator for now.
|
endif()
|
||||||
#
|
|
||||||
# TODO We should let cmake know whether it's indeed a cross compilation in the
|
|
||||||
# first place.
|
|
||||||
set (CMAKE_CROSSCOMPILING 0)
|
|
||||||
add_subdirectory ("${LLVM_SOURCE_DIR}" "${LLVM_BINARY_DIR}")
|
add_subdirectory ("${LLVM_SOURCE_DIR}" "${LLVM_BINARY_DIR}")
|
||||||
|
|
||||||
set_directory_properties (PROPERTIES
|
set_directory_properties (PROPERTIES
|
||||||
|
@ -19,8 +19,9 @@
|
|||||||
<max_threads>12</max_threads>
|
<max_threads>12</max_threads>
|
||||||
|
|
||||||
<!-- disable JIT for perf tests -->
|
<!-- disable JIT for perf tests -->
|
||||||
<compile_expressions>0</compile_expressions>
|
<compile_expressions>1</compile_expressions>
|
||||||
<compile_aggregate_expressions>0</compile_aggregate_expressions>
|
<compile_aggregate_expressions>1</compile_aggregate_expressions>
|
||||||
|
<compile_sort_description>1</compile_sort_description>
|
||||||
|
|
||||||
<!-- Don't fail some prewarm queries too early -->
|
<!-- Don't fail some prewarm queries too early -->
|
||||||
<timeout_before_checking_execution_speed>60</timeout_before_checking_execution_speed>
|
<timeout_before_checking_execution_speed>60</timeout_before_checking_execution_speed>
|
||||||
|
Loading…
Reference in New Issue
Block a user