| #------------------------------------------------------------- |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| #------------------------------------------------------------- |
| |
| cmake_minimum_required(VERSION 3.17 FATAL_ERROR) |
| |
| # default to gcc 8.x while we're still supporting CUDA 10.x only |
| if (UNIX) |
| set(CMAKE_CUDA_HOST_COMPILER g++-8 CACHE INTERNAL "") |
| set(CMAKE_CUDA_COMPILER nvcc CACHE INTERNAL "") |
| set(CMAKE_CXX_COMPILER g++ CACHE INTERNAL "") |
| endif() |
| |
| set(CMAKE_CXX_STANDARD 17) |
| set(CMAKE_BUILD_WITH_INSTALL_RPATH True CACHE INTERNAL "") |
| |
| project(SystemDS LANGUAGES CXX CUDA) |
| |
| set(SYSDS_HEADERS |
| headers/agg_ops.cuh |
| headers/cum_max.cuh |
| headers/cum_min.cuh |
| headers/cum_prod.cuh |
| headers/cum_scan.cuh |
| headers/cum_sum.cuh |
| headers/cum_sum_prod.cuh |
| headers/utils.cuh) |
| set(SYSDS_SOURCES kernels/SystemDS.cu) |
| |
| add_library(SystemDS OBJECT ${SYSDS_HEADERS} ${SYSDS_SOURCES}) |
| target_include_directories(SystemDS PUBLIC "${CMAKE_SOURCE_DIR}/headers") |
| |
| find_package(CUDAToolkit REQUIRED) |
| cmake_policy(SET CMP0104 NEW) |
| set(CMAKE_CUDA_ARCHITECTURES OFF) |
| #ToDo: more compiler flag settings for Debug/Release compilation |
| set(CMAKE_CUDA_FLAGS "--expt-relaxed-constexpr") |
| |
| set_property(TARGET SystemDS PROPERTY CUDA_ARCHITECTURES ${CMAKE_CUDA_ARCHITECTURES}) |
| set_property(TARGET SystemDS PROPERTY CUDA_PTX_COMPILATION ON) |
| |
| # sets the installation path to src/main/cuda |
| if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) |
| set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}" CACHE PATH "sets the installation path to src/main/cpp/lib" FORCE) |
| endif() |
| |
| install(FILES $<TARGET_OBJECTS:SystemDS> DESTINATION kernels) |
| |
| #------------------------------------------------------------- |
| #project (spoof_cuda LANGUAGES CXX CUDA) |
| |
| add_library(reduction OBJECT kernels/reduction.cu headers/reduction.cuh) |
| target_include_directories(reduction PUBLIC "${CMAKE_SOURCE_DIR}/headers") |
| set_property(TARGET reduction PROPERTY CUDA_PTX_COMPILATION ON) |
| install(FILES $<TARGET_OBJECTS:reduction> DESTINATION kernels) |
| |
| include_directories($ENV{JAVA_HOME}/include/) |
| |
| if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") |
| include_directories($ENV{JAVA_HOME}/include/darwin) |
| endif() |
| if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") |
| include_directories($ENV{JAVA_HOME}/include/linux) |
| endif() |
| if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") |
| include_directories($ENV{JAVA_HOME}/include/win32) |
| endif() |
| |
| set(SPOOF_HEADERS |
| spoof-launcher/jni_bridge.h |
| spoof-launcher/SpoofCUDAContext.h) |
| set(SPOOF_SOURCES |
| spoof-launcher/jni_bridge.cpp |
| spoof-launcher/SpoofCUDAContext.cpp) |
| |
| add_library(spoof_cuda SHARED ${SPOOF_HEADERS} ${SPOOF_SOURCES} ) |
| |
| target_include_directories(spoof_cuda PRIVATE "${CMAKE_SOURCE_DIR}/ext/jitify") |
| target_link_libraries(spoof_cuda CUDA::nvrtc CUDA::cuda_driver CUDA::cudart) |
| target_compile_features(spoof_cuda PUBLIC cxx_std_11) |
| set_target_properties(spoof_cuda PROPERTIES POSITION_INDEPENDENT_CODE ON) |
| set_target_properties(spoof_cuda PROPERTIES OUTPUT_NAME "systemds_spoof_cuda-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") |
| |
| # unify naming convention to libsystemds_... |
| if (WIN32) |
| set(CMAKE_IMPORT_LIBRARY_PREFIX lib CACHE INTERNAL "") |
| set(CMAKE_SHARED_LIBRARY_PREFIX lib CACHE INTERNAL "") |
| target_link_libraries(spoof_cuda DbgHelp.lib) |
| install(TARGETS spoof_cuda RUNTIME DESTINATION ../cpp/lib) |
| endif() |
| |
| if(UNIX) |
| install(TARGETS spoof_cuda LIBRARY DESTINATION ../cpp/lib) |
| endif() |