From 4cf8ec3c454a654a189990f6cedf5ab40b31ce61 Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 12:15:06 +0530 Subject: [PATCH 01/10] [cmake] replace icd build with newer opencl sdk It must contain all required deps --- CMakeLists.txt | 26 ++++------ cmake/BuildIcd.cmake | 60 ---------------------- cmake/{BuildCLHpp.cmake => BuildSdk.cmake} | 25 ++++++--- 3 files changed, 28 insertions(+), 83 deletions(-) delete mode 100644 cmake/BuildIcd.cmake rename cmake/{BuildCLHpp.cmake => BuildSdk.cmake} (52%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 84c33cd..1e548f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.5) project(clpeak) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/common.cmake) @@ -11,23 +11,12 @@ endif() find_package(OpenCL) if(NOT OpenCL_FOUND) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - include(BuildIcd) + include(BuildSdk) find_package(OpenCL REQUIRED) endif() -# extra libs for static library -if(UNIX AND ${OpenCL_LIBRARIES} MATCHES "libOpenCL.a") - set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} pthread dl) -elseif(WIN32 AND ${OpenCL_LIBRARIES} MATCHES "OpenCL.lib") - set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} cfgmgr32.lib) -endif() - -FIND_PATH(HPP_FOUND CL/opencl.hpp PATHS ${OpenCL_INCLUDE_DIRS}) -if(NOT HPP_FOUND) - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - include(BuildCLHpp) - set(OpenCL_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS} "${CLHPP_ROOT}/include") -endif() +# find opencl.hpp +FIND_PATH(HPP_FOUND CL/opencl.hpp PATHS ${OpenCL_INCLUDE_DIRS} REQUIRED) if(NOT OpenCL_FOUND) message(FATAL_ERROR "Could not find OpenCL include/libs. Set OCL_ROOT to your OpenCL SDK") @@ -36,6 +25,13 @@ else() message(STATUS "Selected OpenCL lib ${OpenCL_LIBRARIES}") endif() +# extra libs for static library +if(UNIX AND ${OpenCL_LIBRARIES} MATCHES "libOpenCL.a") + set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} pthread dl) +elseif(WIN32 AND ${OpenCL_LIBRARIES} MATCHES "OpenCL.lib") + set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} cfgmgr32.lib) +endif() + set(CMAKE_CXX_STANDARD "11") set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/cmake/BuildIcd.cmake b/cmake/BuildIcd.cmake deleted file mode 100644 index 9ee5569..0000000 --- a/cmake/BuildIcd.cmake +++ /dev/null @@ -1,60 +0,0 @@ - -set(ICD_ROOT "${CMAKE_CURRENT_BINARY_DIR}/icd_install") - -set(CMAKE_LIST_CONTENT " - cmake_minimum_required(VERSION 3.5) - include(ExternalProject) - - ExternalProject_add( icd_clone - PREFIX icd - SOURCE_DIR icd/src/icd - GIT_REPOSITORY https://github.com/krrishnarraj/OpenCL-ICD-Loader - GIT_TAG master - GIT_SHALLOW 1 - GIT_PROGRESS 1 - CONFIGURE_COMMAND \"\" - BUILD_COMMAND \"\" - INSTALL_COMMAND \"\" - ) - - ExternalProject_add( headers_clone - DEPENDS icd_clone - PREFIX icd - SOURCE_DIR icd/src/icd/inc - GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-Headers - GIT_TAG master - GIT_SHALLOW 1 - GIT_PROGRESS 1 - CONFIGURE_COMMAND \"\" - BUILD_COMMAND \"\" - INSTALL_COMMAND \"\" - ) - - ExternalProject_add( icd_build - PREFIX icd - DEPENDS icd_clone headers_clone - SOURCE_DIR icd/src/icd - DOWNLOAD_COMMAND \"\" - UPDATE_COMMAND \"\" - CMAKE_ARGS - -DCMAKE_INSTALL_PREFIX=${ICD_ROOT} - -DCMAKE_BUILD_TYPE=Release - -DBUILD_SHARED_LIBS=OFF - -DENABLE_TESTS=OFF - ) -") - -set(DEPS "${CMAKE_CURRENT_BINARY_DIR}/icd") -set(DEPS_BUILD "${DEPS}/build") -file(MAKE_DIRECTORY ${DEPS} ${DEPS_BUILD}) -file(WRITE "${DEPS}/CMakeLists.txt" "${CMAKE_LIST_CONTENT}") -execute_process(WORKING_DIRECTORY "${DEPS_BUILD}" COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ..) -execute_process(WORKING_DIRECTORY "${DEPS_BUILD}" COMMAND ${CMAKE_COMMAND} --build .) - -set(ENV{OCL_ROOT} "${ICD_ROOT}") - -if(UNIX) - set(ENV{AMDAPPSDKROOT} "${ICD_ROOT}") -elseif(WIN32) - set(ENV{AMDAPPSDKROOT} "${ICD_ROOT}/lib") -endif() diff --git a/cmake/BuildCLHpp.cmake b/cmake/BuildSdk.cmake similarity index 52% rename from cmake/BuildCLHpp.cmake rename to cmake/BuildSdk.cmake index c6b2229..f685a49 100644 --- a/cmake/BuildCLHpp.cmake +++ b/cmake/BuildSdk.cmake @@ -1,29 +1,38 @@ - -set(CLHPP_ROOT "${CMAKE_CURRENT_BINARY_DIR}/clhpp_install") +set(SDK_ROOT "${CMAKE_CURRENT_BINARY_DIR}/sdk_install") set(CMAKE_LIST_CONTENT " cmake_minimum_required(VERSION 3.5) + project(opencl_sdk) include(ExternalProject) - ExternalProject_add( hpp_headers - PREFIX hpp - GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-CLHPP - GIT_TAG master + ExternalProject_add( opencl_sdk + GIT_REPOSITORY https://github.com/KhronosGroup/OpenCL-SDK + GIT_TAG main GIT_SHALLOW 1 GIT_PROGRESS 1 CMAKE_ARGS - -DCMAKE_INSTALL_PREFIX=${CLHPP_ROOT} + -DCMAKE_INSTALL_PREFIX=${SDK_ROOT} -DCMAKE_BUILD_TYPE=Release + -DBUILD_SHARED_LIBS=OFF -DBUILD_DOCS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF + -DOPENCL_SDK_BUILD_SAMPLES=OFF + -DOPENCL_SDK_TEST_SAMPLES=OFF ) ") -set(DEPS "${CMAKE_CURRENT_BINARY_DIR}/clhpp") +set(DEPS "${CMAKE_CURRENT_BINARY_DIR}/opencl_sdk") set(DEPS_BUILD "${DEPS}/build") file(MAKE_DIRECTORY ${DEPS} ${DEPS_BUILD}) file(WRITE "${DEPS}/CMakeLists.txt" "${CMAKE_LIST_CONTENT}") execute_process(WORKING_DIRECTORY "${DEPS_BUILD}" COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ..) execute_process(WORKING_DIRECTORY "${DEPS_BUILD}" COMMAND ${CMAKE_COMMAND} --build .) +set(ENV{OCL_ROOT} "${SDK_ROOT}") + +if(UNIX) + set(ENV{AMDAPPSDKROOT} "${SDK_ROOT}") +elseif(WIN32) + set(ENV{AMDAPPSDKROOT} "${SDK_ROOT}/lib") +endif() From af15aea06a4a58305d100157a89461ea12e84685 Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 12:16:23 +0530 Subject: [PATCH 02/10] [cmake] increment version --- cmake/common.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/common.cmake b/cmake/common.cmake index 286e0c0..08d2b0b 100644 --- a/cmake/common.cmake +++ b/cmake/common.cmake @@ -1,8 +1,8 @@ set(VERSION_MAJOR 1) set(VERSION_MINOR 1) -set(VERSION_PATCH 0) -set(VERSION_SUFFIX "-rc2") +set(VERSION_PATCH 1) +set(VERSION_SUFFIX "-beta") set(VERSION_STR "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}${VERSION_SUFFIX}") add_definitions("-DVERSION_STR=\"${VERSION_STR}\"") From 67369b5ea655395284b5029563dc2bd70de73d4b Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 13:33:02 +0530 Subject: [PATCH 03/10] Add new windows link dependency --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1e548f4..e2910b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ endif() if(UNIX AND ${OpenCL_LIBRARIES} MATCHES "libOpenCL.a") set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} pthread dl) elseif(WIN32 AND ${OpenCL_LIBRARIES} MATCHES "OpenCL.lib") - set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} cfgmgr32.lib) + set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} cfgmgr32.lib runtimeobject.lib) endif() set(CMAKE_CXX_STANDARD "11") From 07555e1e97654b5ea208b467b8bdc46b80f77a45 Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 16:15:06 +0530 Subject: [PATCH 04/10] [cmake] also build sdk when hpp is not found --- CMakeLists.txt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e2910b1..1f149d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,14 +9,16 @@ if (NOT CMAKE_BUILD_TYPE) endif() find_package(OpenCL) -if(NOT OpenCL_FOUND) +FIND_PATH(HPP_FOUND CL/opencl.hpp PATHS ${OpenCL_INCLUDE_DIRS}) +if(NOT OpenCL_FOUND OR NOT HPP_FOUND) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(BuildSdk) + find_package(OpenCL REQUIRED) -endif() -# find opencl.hpp -FIND_PATH(HPP_FOUND CL/opencl.hpp PATHS ${OpenCL_INCLUDE_DIRS} REQUIRED) + set(OpenCL_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS} "${SDK_ROOT}/include") + FIND_PATH(HPP_FOUND CL/opencl.hpp PATHS ${OpenCL_INCLUDE_DIRS} REQUIRED) +endif() if(NOT OpenCL_FOUND) message(FATAL_ERROR "Could not find OpenCL include/libs. Set OCL_ROOT to your OpenCL SDK") From 0b85966a2ad260e6a3a39dca385bcd840c5b4ff9 Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 16:29:27 +0530 Subject: [PATCH 05/10] [travis] update ubuntu to latest and don't install anything using apt --- .travis.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2f46cfd..adc3629 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,19 +6,11 @@ matrix: os: windows - name: "Linux" os: linux - dist: bionic - addons: - apt: - packages: - - ocl-icd-opencl-dev + dist: focal - name: "Linux arm64" os: linux arch: arm64 - dist: bionic - addons: - apt: - packages: - - ocl-icd-opencl-dev + dist: focal - name: "OSX" os: osx From cbf1d263de0eb4656e51d83f68d475931d049814 Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 18:13:57 +0530 Subject: [PATCH 06/10] [travis] windows - use vs2019 --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index adc3629..cc88389 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,8 @@ matrix: include: - name: "Windows" os: windows + install: + - choco install visualstudio2019buildtools --package-parameters "--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64" - name: "Linux" os: linux dist: focal @@ -20,7 +22,7 @@ before_script: - cd build script: - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmake -G "Visual Studio 15 2017 Win64" .. ; fi + - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmake -G "Visual Studio 16 2019 Win64" .. ; fi - if [[ "$TRAVIS_OS_NAME" != "windows" ]]; then cmake .. ; fi - cmake --build . --config Release - ctest -VV From fd1b5f78c5359a77555f3907a6edc50bcb2cbfa3 Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 18:24:56 +0530 Subject: [PATCH 07/10] [travis] fix vs2019 name --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cc88389..560afa2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,7 @@ before_script: - cd build script: - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmake -G "Visual Studio 16 2019 Win64" .. ; fi + - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmake -G "Visual Studio 16 2019" -A x64 .. ; fi - if [[ "$TRAVIS_OS_NAME" != "windows" ]]; then cmake .. ; fi - cmake --build . --config Release - ctest -VV From 77136291238d3f0f6a202979277b9bdedfb19f30 Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 21:02:22 +0530 Subject: [PATCH 08/10] Pass cmake build type to external project --- cmake/BuildSdk.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/BuildSdk.cmake b/cmake/BuildSdk.cmake index f685a49..e58c854 100644 --- a/cmake/BuildSdk.cmake +++ b/cmake/BuildSdk.cmake @@ -26,8 +26,8 @@ set(DEPS "${CMAKE_CURRENT_BINARY_DIR}/opencl_sdk") set(DEPS_BUILD "${DEPS}/build") file(MAKE_DIRECTORY ${DEPS} ${DEPS_BUILD}) file(WRITE "${DEPS}/CMakeLists.txt" "${CMAKE_LIST_CONTENT}") -execute_process(WORKING_DIRECTORY "${DEPS_BUILD}" COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ..) -execute_process(WORKING_DIRECTORY "${DEPS_BUILD}" COMMAND ${CMAKE_COMMAND} --build .) +execute_process(WORKING_DIRECTORY "${DEPS_BUILD}" COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ..) +execute_process(WORKING_DIRECTORY "${DEPS_BUILD}" COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE}) set(ENV{OCL_ROOT} "${SDK_ROOT}") From 8475345e39d629a2808568cc073a3587b9b3d04e Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 21:02:58 +0530 Subject: [PATCH 09/10] [travis] explicitly pass build type in windows --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 560afa2..c2e2598 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,7 @@ before_script: - cd build script: - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmake -G "Visual Studio 16 2019" -A x64 .. ; fi + - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=Release .. ; fi - if [[ "$TRAVIS_OS_NAME" != "windows" ]]; then cmake .. ; fi - cmake --build . --config Release - ctest -VV From 53c0596bea4cfb2deaf1b807c27817767892a426 Mon Sep 17 00:00:00 2001 From: Krishnaraj Bhat Date: Sun, 6 Feb 2022 21:35:09 +0530 Subject: [PATCH 10/10] Update CI links in readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9c3e46a..8b3d98e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # clpeak -[![Build Status](https://travis-ci.com/krrishnarraj/clpeak.svg?branch=master)](https://travis-ci.com/krrishnarraj/clpeak) -[![Snap Status](https://build.snapcraft.io/badge/krrishnarraj/clpeak.svg)](https://build.snapcraft.io/user/krrishnarraj/clpeak) +[![Build Status](https://app.travis-ci.com/krrishnarraj/clpeak.svg?branch=master)](https://app.travis-ci.com/github/krrishnarraj/clpeak) +[![Snap Status](https://snapcraft.io/clpeak/badge.svg)](https://snapcraft.io/clpeak) A synthetic benchmarking tool to measure peak capabilities of opencl devices. It only measures the peak metrics that can be achieved using vector operations and does not represent a real-world use case