| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | cmake_minimum_required(VERSION 3.2.2) |
| |
|
| | |
| | if(CMAKE_COMPILER_IS_GNUCXX) |
| | |
| | if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8) |
| | message(FATAL_ERROR |
| | "host compiler - Not found! (gcc version must be at least 4.8)") |
| | |
| | elseif (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1) |
| | set(COMPUTECPP_DISABLE_GCC_DUAL_ABI "True") |
| | message(STATUS |
| | "host compiler - gcc ${CMAKE_CXX_COMPILER_VERSION} (note pre 5.1 gcc ABI enabled)") |
| | else() |
| | message(STATUS "host compiler - gcc ${CMAKE_CXX_COMPILER_VERSION}") |
| | endif() |
| | elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") |
| | |
| | if (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.6) |
| | message(FATAL_ERROR |
| | "host compiler - Not found! (clang version must be at least 3.6)") |
| | else() |
| | message(STATUS "host compiler - clang ${CMAKE_CXX_COMPILER_VERSION}") |
| | endif() |
| | else() |
| | message(WARNING |
| | "host compiler - Not found! (ComputeCpp supports GCC and Clang, see readme)") |
| | endif() |
| |
|
| | set(COMPUTECPP_64_BIT_DEFAULT ON) |
| | option(COMPUTECPP_64_BIT_CODE "Compile device code in 64 bit mode" |
| | ${COMPUTECPP_64_BIT_DEFAULT}) |
| | mark_as_advanced(COMPUTECPP_64_BIT_CODE) |
| |
|
| | |
| | find_package(OpenCL REQUIRED) |
| |
|
| | |
| | if(NOT COMPUTECPP_PACKAGE_ROOT_DIR) |
| | message(FATAL_ERROR |
| | "ComputeCpp package - Not found! (please set COMPUTECPP_PACKAGE_ROOT_DIR") |
| | else() |
| | message(STATUS "ComputeCpp package - Found") |
| | endif() |
| | option(COMPUTECPP_PACKAGE_ROOT_DIR "Path to the ComputeCpp Package") |
| |
|
| | |
| | find_program(COMPUTECPP_DEVICE_COMPILER compute++ PATHS |
| | ${COMPUTECPP_PACKAGE_ROOT_DIR} PATH_SUFFIXES bin) |
| | if (EXISTS ${COMPUTECPP_DEVICE_COMPILER}) |
| | mark_as_advanced(COMPUTECPP_DEVICE_COMPILER) |
| | message(STATUS "compute++ - Found") |
| | else() |
| | message(FATAL_ERROR "compute++ - Not found! (${COMPUTECPP_DEVICE_COMPILER})") |
| | endif() |
| |
|
| | |
| | find_program(COMPUTECPP_INFO_TOOL computecpp_info PATHS |
| | ${COMPUTECPP_PACKAGE_ROOT_DIR} PATH_SUFFIXES bin) |
| | if (EXISTS ${COMPUTECPP_INFO_TOOL}) |
| | mark_as_advanced(${COMPUTECPP_INFO_TOOL}) |
| | message(STATUS "computecpp_info - Found") |
| | else() |
| | message(FATAL_ERROR "computecpp_info - Not found! (${COMPUTECPP_INFO_TOOL})") |
| | endif() |
| |
|
| | |
| | find_library(COMPUTECPP_RUNTIME_LIBRARY ComputeCpp PATHS ${COMPUTECPP_PACKAGE_ROOT_DIR} |
| | HINTS ${COMPUTECPP_PACKAGE_ROOT_DIR}/lib PATH_SUFFIXES lib |
| | DOC "ComputeCpp Runtime Library" NO_DEFAULT_PATH) |
| |
|
| | if (EXISTS ${COMPUTECPP_RUNTIME_LIBRARY}) |
| | mark_as_advanced(COMPUTECPP_RUNTIME_LIBRARY) |
| | message(STATUS "libComputeCpp.so - Found") |
| | else() |
| | message(FATAL_ERROR "libComputeCpp.so - Not found!") |
| | endif() |
| |
|
| | |
| | set(COMPUTECPP_INCLUDE_DIRECTORY ${COMPUTECPP_PACKAGE_ROOT_DIR}/include/) |
| | if (NOT EXISTS ${COMPUTECPP_INCLUDE_DIRECTORY}) |
| | message(FATAL_ERROR "ComputeCpp includes - Not found!") |
| | else() |
| | message(STATUS "ComputeCpp includes - Found") |
| | endif() |
| |
|
| | |
| | execute_process(COMMAND ${COMPUTECPP_INFO_TOOL} "--dump-version" |
| | OUTPUT_VARIABLE COMPUTECPP_PACKAGE_VERSION |
| | RESULT_VARIABLE COMPUTECPP_INFO_TOOL_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) |
| | if(NOT COMPUTECPP_INFO_TOOL_RESULT EQUAL "0") |
| | message(FATAL_ERROR "Package version - Error obtaining version!") |
| | else() |
| | mark_as_advanced(COMPUTECPP_PACKAGE_VERSION) |
| | message(STATUS "Package version - ${COMPUTECPP_PACKAGE_VERSION}") |
| | endif() |
| |
|
| | |
| | execute_process(COMMAND ${COMPUTECPP_INFO_TOOL} "--dump-device-compiler-flags" |
| | OUTPUT_VARIABLE COMPUTECPP_DEVICE_COMPILER_FLAGS |
| | RESULT_VARIABLE COMPUTECPP_INFO_TOOL_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) |
| | if(NOT COMPUTECPP_INFO_TOOL_RESULT EQUAL "0") |
| | message(FATAL_ERROR "compute++ flags - Error obtaining compute++ flags!") |
| | else() |
| | mark_as_advanced(COMPUTECPP_COMPILER_FLAGS) |
| | message(STATUS "compute++ flags - ${COMPUTECPP_DEVICE_COMPILER_FLAGS}") |
| | endif() |
| |
|
| | set(COMPUTECPP_DEVICE_COMPILER_FLAGS ${COMPUTECPP_DEVICE_COMPILER_FLAGS} -sycl-compress-name -no-serial-memop -DEIGEN_NO_ASSERTION_CHECKING=1) |
| |
|
| | |
| | execute_process(COMMAND ${COMPUTECPP_INFO_TOOL} "--dump-is-supported" |
| | OUTPUT_VARIABLE COMPUTECPP_PLATFORM_IS_SUPPORTED |
| | RESULT_VARIABLE COMPUTECPP_INFO_TOOL_RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) |
| | if(NOT COMPUTECPP_INFO_TOOL_RESULT EQUAL "0") |
| | message(FATAL_ERROR "platform - Error checking platform support!") |
| | else() |
| | mark_as_advanced(COMPUTECPP_PLATFORM_IS_SUPPORTED) |
| | if (COMPUTECPP_PLATFORM_IS_SUPPORTED) |
| | message(STATUS "platform - your system can support ComputeCpp") |
| | else() |
| | message(STATUS "platform - your system CANNOT support ComputeCpp") |
| | endif() |
| | endif() |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | function(__build_spir targetName sourceFile binaryDir) |
| |
|
| | |
| | get_filename_component(sourceFileName ${sourceFile} NAME) |
| |
|
| | |
| | set(outputSyclFile ${binaryDir}/${sourceFileName}.sycl) |
| |
|
| | |
| | get_property(includeDirectories DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY |
| | INCLUDE_DIRECTORIES) |
| | set(device_compiler_includes "") |
| | foreach(directory ${includeDirectories}) |
| | set(device_compiler_includes "-I${directory}" ${device_compiler_includes}) |
| | endforeach() |
| | if (CMAKE_INCLUDE_PATH) |
| | foreach(directory ${CMAKE_INCLUDE_PATH}) |
| | set(device_compiler_includes "-I${directory}" |
| | ${device_compiler_includes}) |
| | endforeach() |
| | endif() |
| |
|
| | |
| | separate_arguments(COMPUTECPP_DEVICE_COMPILER_FLAGS) |
| |
|
| | |
| | add_custom_command( |
| | OUTPUT ${outputSyclFile} |
| | COMMAND ${COMPUTECPP_DEVICE_COMPILER} |
| | ${COMPUTECPP_DEVICE_COMPILER_FLAGS} |
| | -isystem ${COMPUTECPP_INCLUDE_DIRECTORY} |
| | ${COMPUTECPP_PLATFORM_SPECIFIC_ARGS} |
| | ${device_compiler_includes} |
| | -o ${outputSyclFile} |
| | -c ${CMAKE_CURRENT_SOURCE_DIR}/${sourceFile} |
| | DEPENDS ${sourceFile} |
| | WORKING_DIRECTORY ${binaryDir} |
| | COMMENT "Building ComputeCpp integration header file ${outputSyclFile}") |
| |
|
| | |
| | add_custom_target(${targetName}_integration_header DEPENDS ${outputSyclFile}) |
| |
|
| | |
| | add_dependencies(${targetName} ${targetName}_integration_header) |
| |
|
| | |
| | set_property(TARGET ${targetName} PROPERTY CXX_STANDARD 11) |
| |
|
| | |
| | if(COMPUTECPP_DISABLE_GCC_DUAL_ABI) |
| | set_property(TARGET ${targetName} APPEND PROPERTY COMPILE_DEFINITIONS |
| | "_GLIBCXX_USE_CXX11_ABI=0") |
| | endif() |
| |
|
| | endfunction() |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | function(add_sycl_to_target targetName sourceFile binaryDir) |
| |
|
| | |
| | __build_spir(${targetName} ${sourceFile} ${binaryDir}) |
| |
|
| | |
| | target_link_libraries(${targetName} PUBLIC ${COMPUTECPP_RUNTIME_LIBRARY} |
| | PUBLIC ${OpenCL_LIBRARIES}) |
| |
|
| | endfunction(add_sycl_to_target) |
| |
|