From 66da94c3415ddc6ca0f7a79dd215ce32c757bf78 Mon Sep 17 00:00:00 2001 From: Diptorup Deb Date: Sun, 28 Mar 2021 10:47:56 -0500 Subject: [PATCH 1/2] Add a version requirement for dpcpp inside CMakeList.txt. --- dpctl-capi/CMakeLists.txt | 2 +- dpctl-capi/cmake/modules/FindDPCPP.cmake | 30 ++++++++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/dpctl-capi/CMakeLists.txt b/dpctl-capi/CMakeLists.txt index 466a419fbf..bbe1590d2d 100644 --- a/dpctl-capi/CMakeLists.txt +++ b/dpctl-capi/CMakeLists.txt @@ -25,7 +25,7 @@ option(DPCTL_BUILD_CAPI_TESTS # Load our CMake modules to search for DPCPP and Level Zero set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/") -find_package(DPCPP REQUIRED) +find_package(DPCPP 2021.2.0 REQUIRED) if(DPCTL_ENABLE_LO_PROGRAM_CREATION) set(DPCTL_ENABLE_LO_PROGRAM_CREATION 1) diff --git a/dpctl-capi/cmake/modules/FindDPCPP.cmake b/dpctl-capi/cmake/modules/FindDPCPP.cmake index a19a435761..6d5c6709a3 100644 --- a/dpctl-capi/cmake/modules/FindDPCPP.cmake +++ b/dpctl-capi/cmake/modules/FindDPCPP.cmake @@ -24,13 +24,15 @@ # If successful, the following variables will be defined: # DPCPP_FOUND # DPCPP_VERSION +# DPCPP_VERSION_MAJOR +# DPCPP_VERSION_MINOR # DPCPP_INCLUDE_DIR # DPCPP_SYCL_INCLUDE_DIR # DPCPP_LIBRARY_DIR # DPCPP_SYCL_LIBRARY # DPCPP_OPENCL_LIBRARY -include( FindPackageHandleStandardArgs ) +include(FindPackageHandleStandardArgs) string(COMPARE EQUAL "${DPCPP_INSTALL_DIR}" "" no_dpcpp_root) if(${no_dpcpp_root}) @@ -57,10 +59,13 @@ execute_process( # If dpcpp is found then set the package variables if(${dpcpp_result} MATCHES "0") string(REPLACE "\n" ";" DPCPP_VERSION_LIST "${dpcpp_ver}") + set(IDX 0) list(GET DPCPP_VERSION_LIST 0 dpcpp_ver_line) foreach(X ${DPCPP_VERSION_LIST}) - message(STATUS "dpcpp ver[${dpcpp_result}]: ${X}") + message(STATUS "dpcpp ver[${IDX}]: ${X}") + MATH(EXPR IDX "${IDX}+1") endforeach() + list(GET DPCPP_VERSION_LIST 0 VERSION_STRING) # check if llvm-cov and llvm-profdata are packaged as part of dpcpp find_program(LLVM_COV_EXE @@ -89,7 +94,13 @@ if(${dpcpp_result} MATCHES "0") # set package-level variables set(DPCPP_ROOT ${DPCPP_INSTALL_DIR}) - list(GET DPCPP_VERSION_LIST 0 DPCPP_VERSION) + # Get the dpcpp version + string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" DPCPP_VERSION ${VERSION_STRING}) + # Split out the version into major, minor an patch + string(REPLACE "." ";" DPCPP_VERSION_LIST1 "${DPCPP_VERSION}") + list(GET DPCPP_VERSION_LIST1 0 DPCPP_VERSION_MAJOR) + list(GET DPCPP_VERSION_LIST1 1 DPCPP_VERSION_MINOR) + list(GET DPCPP_VERSION_LIST1 2 DPCPP_VERSION_PATCH) set(DPCPP_INCLUDE_DIR ${DPCPP_INSTALL_DIR}/include) set(DPCPP_SYCL_INCLUDE_DIR ${DPCPP_INSTALL_DIR}/include/sycl) set(DPCPP_LIBRARY_DIR ${DPCPP_INSTALL_DIR}/lib) @@ -100,15 +111,26 @@ if(${dpcpp_result} MATCHES "0") set(DPCPP_SYCL_LIBRARY ${DPCPP_INSTALL_DIR}/lib/libsycl.so) set(DPCPP_OPENCL_LIBRARY ${DPCPP_INSTALL_DIR}/lib/libOpenCL.so) endif() - set(DPCPP_FOUND TRUE) else() message(STATUS "DPCPP needed to build dpctl_sycl_interface") return() endif() +# Check if a specific version of DPCPP is requested +if(DPCPP_FIND_VERSION) + string(COMPARE EQUAL ${DPCPP_FIND_VERSION} ${DPCPP_VERSION} VERSION_MATCH) + if(VERSION_MATCH) + set(DPCPP_FOUND TRUE) + endif() +else() + set(DPCPP_FOUND TRUE) +endif() + find_package_handle_standard_args(DPCPP DEFAULT_MSG DPCPP_FOUND DPCPP_VERSION + DPCPP_VERSION_MAJOR + DPCPP_VERSION_MINOR DPCPP_INCLUDE_DIR DPCPP_SYCL_INCLUDE_DIR DPCPP_LIBRARY_DIR From ee861487edcade4969c8e1e10c1283eee9712899 Mon Sep 17 00:00:00 2001 From: Diptorup Deb Date: Tue, 30 Mar 2021 22:10:06 -0500 Subject: [PATCH 2/2] Add dpcpp_cpp_rt version requirement to dpctl. --- conda-recipe/meta.yaml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index f651a7850e..c490de4951 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -28,11 +28,13 @@ requirements: run: - python - numpy >=1.17 - - dpcpp_cpp_rt + - dpcpp_cpp_rt >=2021.2 + test: - requires: - - pytest - - pytest-cov + requires: + - pytest + - pytest-cov + about: home: https://github.com/IntelPython/dpCtl.git license: Apache-2.0