Skip to content

Commit 7c7fc42

Browse files
author
Terry Cojean
authored
Merge Add new Intel CI support
Make DPC++ tests work with the new system. The new Intel CI system adds two new checks: the integrated and discrete GPU. Some changes to the DPC++ tests are required: + Make the DPCPP executor tests work with GPUs. + Allow compiling and running the DPC++ tests for float only (double is not supported in either GPU). + Also fix a few small unrelated issues. Related PR: #736
2 parents 00cf350 + ceb124a commit 7c7fc42

25 files changed

Lines changed: 276 additions & 145 deletions

.gitlab-ci.yml

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ include:
3131
BUILD_HIP: "OFF"
3232
BUILD_HWLOC: "ON"
3333
FAST_TESTS: "OFF"
34+
DPCPP_SINGLE_MODE: "OFF"
3435
RUN_EXAMPLES: "OFF"
3536
CONFIG_LOG: "ON"
3637
CXX_FLAGS: ""
@@ -64,7 +65,6 @@ include:
6465
CUDA_HOST_STR=-DCMAKE_CUDA_HOST_COMPILER=$(which ${CXX_COMPILER});
6566
export CUDA_VISIBLE_DEVICES=$((RANDOM % 2));
6667
fi
67-
- if [ ! -z ${SYCL_DEVICE_TYPE+x} ]; then export SYCL_DEVICE_TYPE; fi
6868
- cmake ${CI_PROJECT_DIR}${CI_PROJECT_DIR_SUFFIX}
6969
-GNinja
7070
-DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${CXX_COMPILER}
@@ -79,9 +79,9 @@ include:
7979
-DGINKGO_FAST_TESTS=${FAST_TESTS}
8080
-DGINKGO_RUN_EXAMPLES=${RUN_EXAMPLES}
8181
-DGINKGO_CONFIG_LOG_DETAILED=${CONFIG_LOG}
82+
-DGINKGO_DPCPP_SINGLE_MODE=${DPCPP_SINGLE_MODE}
8283
-DGINKGO_EXPORT_BUILD_DIR=${EXPORT_BUILD_DIR}
8384
- ninja -j${NUM_CORES} -l${CI_LOAD_LIMIT} install
84-
- if [ ! -z ${SYCL_DEVICE_TYPE+x} ]; then unset SYCL_DEVICE_TYPE; fi
8585
- if [ "${EXPORT_BUILD_DIR}" == "ON" ]; then ninja test_exportbuild; fi
8686
dependencies: []
8787
except:
@@ -98,7 +98,7 @@ include:
9898
CUDA_HOST_STR=-DCMAKE_CUDA_HOST_COMPILER=$(which ${CXX_COMPILER});
9999
export CUDA_VISIBLE_DEVICES=$((RANDOM % 2));
100100
fi
101-
- if [ ! -z ${SYCL_DEVICE_TYPE+x} ]; then export SYCL_DEVICE_TYPE; fi
101+
- if [ -n "${SYCL_DEVICE_FILTER}" ]; then export SYCL_DEVICE_FILTER; fi
102102
- cmake ${CI_PROJECT_DIR}${CI_PROJECT_DIR_SUFFIX}
103103
-GNinja
104104
-DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${CXX_COMPILER}
@@ -112,6 +112,7 @@ include:
112112
-DGINKGO_BUILD_TESTS=ON -DGINKGO_BUILD_EXAMPLES=ON
113113
-DGINKGO_FAST_TESTS=${FAST_TESTS}
114114
-DGINKGO_CONFIG_LOG_DETAILED=${CONFIG_LOG}
115+
-DGINKGO_DPCPP_SINGLE_MODE=${DPCPP_SINGLE_MODE}
115116
-DGINKGO_RUN_EXAMPLES=${RUN_EXAMPLES}
116117
-DGINKGO_EXPORT_BUILD_DIR=${EXPORT_BUILD_DIR}
117118
- ninja -j${NUM_CORES} -l${CI_LOAD_LIMIT} install
@@ -143,7 +144,7 @@ include:
143144
ninja validate_all_examples
144145
fi
145146
fi
146-
- if [ ! -z ${SYCL_DEVICE_TYPE+x} ]; then unset SYCL_DEVICE_TYPE; fi
147+
- if [ -n "${SYCL_DEVICE_FILTER}" ]; then unset SYCL_DEVICE_FILTER; fi
147148
- if [ "${EXPORT_BUILD_DIR}" == "ON" ]; then ninja test_exportbuild; fi
148149
dependencies: []
149150
except:
@@ -680,6 +681,52 @@ build/nocuda/intel/omp/release/static:
680681
BUILD_TYPE: "Release"
681682
BUILD_SHARED_LIBS: "OFF"
682683

684+
685+
build/dpcpp/cpu/release/static:
686+
<<: *default_build_with_test
687+
extends:
688+
- .quick_test_condition
689+
- .use_gko-oneapi-cpu
690+
variables:
691+
<<: *default_variables
692+
C_COMPILER: "gcc"
693+
CXX_COMPILER: "dpcpp"
694+
BUILD_DPCPP: "ON"
695+
BUILD_TYPE: "Release"
696+
BUILD_SHARED_LIBS: "ON"
697+
SYCL_DEVICE_FILTER: "CPU"
698+
699+
build/dpcpp/igpu/release/static:
700+
<<: *default_build_with_test
701+
extends:
702+
- .full_test_condition
703+
- .use_gko-oneapi-igpu
704+
variables:
705+
<<: *default_variables
706+
C_COMPILER: "gcc"
707+
CXX_COMPILER: "dpcpp"
708+
BUILD_DPCPP: "ON"
709+
BUILD_TYPE: "Release"
710+
BUILD_SHARED_LIBS: "OFF"
711+
DPCPP_SINGLE_MODE: "ON"
712+
SYCL_DEVICE_FILTER: "GPU"
713+
714+
build/dpcpp/dgpu/debug/shared:
715+
<<: *default_build_with_test
716+
image: localhost:5000/gko-oneapi
717+
extends:
718+
- .quick_test_condition
719+
- .use_gko-oneapi-dgpu
720+
variables:
721+
<<: *default_variables
722+
C_COMPILER: "gcc"
723+
CXX_COMPILER: "dpcpp"
724+
BUILD_DPCPP: "ON"
725+
BUILD_TYPE: "Debug"
726+
DPCPP_SINGLE_MODE: "ON"
727+
SYCL_DEVICE_FILTER: "Level_Zero:GPU"
728+
729+
683730
# Job with important warnings as error
684731
warnings:
685732
<<: *default_build

.gitlab/image.yml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,21 @@
7575
- amdci
7676
- gpu
7777

78-
.use_gko-oneapi:
78+
.use_gko-oneapi-cpu:
7979
image: ginkgohub/oneapi:latest
8080
tags:
8181
- private_ci
82-
- bwuni
82+
- intelci-igpu
8383
- cpu
84+
85+
.use_gko-oneapi-igpu:
86+
image: ginkgohub/oneapi:latest
87+
tags:
88+
- private_ci
89+
- intel-igpu
90+
91+
.use_gko-oneapi-dgpu:
92+
image: ginkgohub/oneapi:latest
93+
tags:
94+
- private_ci
95+
- intel-dgpu

CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
cmake_minimum_required(VERSION 3.9)
1+
cmake_minimum_required(VERSION 3.13)
22

33
# Use *_ROOT environment variables for find_package calls
4-
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
5-
cmake_policy(SET CMP0074 NEW)
6-
endif()
4+
cmake_policy(SET CMP0074 NEW)
75

86
# Let CAS handle the CUDA architecture flags (for now)
97
# Windows still gives CMP0104 warning if putting it in cuda.
@@ -54,6 +52,11 @@ set(GINKGO_VERBOSE_LEVEL "1" CACHE STRING
5452
if(MSVC)
5553
set(GINKGO_COMPILER_FLAGS "" CACHE STRING
5654
"Set the required CXX compiler flags, mainly used for warnings. Current default is ``")
55+
elseif(GINKGO_BUILD_DPCPP OR CMAKE_CXX_COMPILER MATCHES "dpcpp")
56+
# For now always use `-ffp-model=precise` with DPC++. This can be removed when
57+
# the floating point issues are fixed.
58+
set(GINKGO_COMPILER_FLAGS "-Wpedantic;-ffp-model=precise" CACHE STRING
59+
"Set the required CXX compiler flags, mainly used for warnings. Current default is `-Wpedantic;-ffp-model=precise`")
5760
else()
5861
set(GINKGO_COMPILER_FLAGS "-Wpedantic" CACHE STRING
5962
"Set the required CXX compiler flags, mainly used for warnings. Current default is `-Wpedantic`")
@@ -78,6 +81,7 @@ if(MSVC OR WIN32 OR CYGWIN OR APPLE)
7881
else()
7982
option(GINKGO_BUILD_HWLOC "Build Ginkgo with HWLOC. Default is ON. If a system HWLOC is not found, then we try to build it ourselves. Switch this OFF to disable HWLOC." ON)
8083
endif()
84+
option(GINKGO_DPCPP_SINGLE_MODE "Do not compile double kernels for the DPC++ backend." OFF)
8185
option(GINKGO_INSTALL_RPATH "Set the RPATH when installing its libraries." ON)
8286
option(GINKGO_INSTALL_RPATH_ORIGIN "Add $ORIGIN (Linux) or @loader_path (MacOS) to the installation RPATH." ON)
8387
option(GINKGO_INSTALL_RPATH_DEPENDENCIES "Add dependencies to the installation RPATH." OFF)

benchmark/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ function(ginkgo_add_single_benchmark_executable name use_lib_linops macro_def)
6565
add_executable("${name}" ${ARGN})
6666
target_link_libraries("${name}" ginkgo gflags rapidjson)
6767
target_compile_definitions("${name}" PRIVATE "${macro_def}")
68+
target_compile_options("${name}" PRIVATE ${GINKGO_COMPILER_FLAGS})
6869
ginkgo_benchmark_add_tuning_maybe("${name}")
6970
if("${use_lib_linops}")
7071
if (GINKGO_BUILD_CUDA)

cmake/build_type_helpers.cmake

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,9 @@ foreach(_LANG IN LISTS ENABLED_LANGUAGES ITEMS "HIP")
8888
${PROJECT_NAME}_${_LANG}_${_TYPE}_SUPPORTED)
8989
else()
9090
if(DEFINED ${PROJECT_NAME}_${_LANG}_${_TYPE}_SUPPORTED)
91-
message(STATUS "Skipping ${_LANG}, not supported by build_type.cmake script")
91+
message(STATUS "Skipping ${_LANG}, not supported by build_type_helpers.cmake script")
9292
endif()
9393
set(${PROJECT_NAME}_${_LANG}_${_TYPE}_SUPPORTED FALSE)
94-
continue()
9594
endif()
9695
if(${PROJECT_NAME}_${_LANG}_${_TYPE}_SUPPORTED)
9796
if(_LANG STREQUAL "HIP" AND GINKGO_HIP_PLATFORM MATCHES "${HIP_PLATFORM_NVIDIA_REGEX}")

cmake/create_test.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ function(ginkgo_create_test test_name)
44
string(REPLACE "/" "_" TEST_TARGET_NAME "${REL_BINARY_DIR}/${test_name}")
55
add_executable(${TEST_TARGET_NAME} ${test_name}.cpp)
66
target_compile_features("${TEST_TARGET_NAME}" PUBLIC cxx_std_14)
7+
target_compile_options("${TEST_TARGET_NAME}" PRIVATE ${GINKGO_COMPILER_FLAGS})
78
target_include_directories("${TEST_TARGET_NAME}"
89
PRIVATE
910
"$<BUILD_INTERFACE:${Ginkgo_BINARY_DIR}>"
@@ -13,6 +14,9 @@ function(ginkgo_create_test test_name)
1314
if (GINKGO_FAST_TESTS)
1415
target_compile_definitions(${TEST_TARGET_NAME} PRIVATE GINKGO_FAST_TESTS)
1516
endif()
17+
if (GINKGO_COMPILING_DPCPP_TEST AND GINKGO_DPCPP_SINGLE_MODE)
18+
target_compile_definitions("${TEST_TARGET_NAME}" PRIVATE GINKGO_DPCPP_SINGLE_MODE=1)
19+
endif()
1620
if (GINKGO_CHECK_CIRCULAR_DEPS)
1721
target_link_libraries(${TEST_TARGET_NAME} PRIVATE "${GINKGO_CIRCULAR_DEPS_FLAGS}")
1822
endif()
@@ -27,6 +31,9 @@ function(ginkgo_create_dpcpp_test test_name)
2731
add_executable(${TEST_TARGET_NAME} ${test_name}.dp.cpp)
2832
target_compile_features("${TEST_TARGET_NAME}" PUBLIC cxx_std_17)
2933
target_compile_options("${TEST_TARGET_NAME}" PRIVATE "${GINKGO_DPCPP_FLAGS}")
34+
if (GINKGO_DPCPP_SINGLE_MODE)
35+
target_compile_definitions("${TEST_TARGET_NAME}" PRIVATE GINKGO_DPCPP_SINGLE_MODE=1)
36+
endif()
3037
target_include_directories("${TEST_TARGET_NAME}"
3138
PRIVATE
3239
"$<BUILD_INTERFACE:${Ginkgo_BINARY_DIR}>"
@@ -51,6 +58,7 @@ function(ginkgo_create_thread_test test_name)
5158
string(REPLACE "/" "_" TEST_TARGET_NAME "${REL_BINARY_DIR}/${test_name}")
5259
add_executable(${TEST_TARGET_NAME} ${test_name}.cpp)
5360
target_compile_features("${TEST_TARGET_NAME}" PUBLIC cxx_std_14)
61+
target_compile_options("${TEST_TARGET_NAME}" PRIVATE ${GINKGO_COMPILER_FLAGS})
5462
target_include_directories("${TEST_TARGET_NAME}"
5563
PRIVATE
5664
"$<BUILD_INTERFACE:${Ginkgo_BINARY_DIR}>"
@@ -74,6 +82,7 @@ function(ginkgo_create_test_cpp_cuda_header test_name)
7482
string(REPLACE "/" "_" TEST_TARGET_NAME "${REL_BINARY_DIR}/${test_name}")
7583
add_executable(${TEST_TARGET_NAME} ${test_name}.cpp)
7684
target_compile_features("${TEST_TARGET_NAME}" PUBLIC cxx_std_14)
85+
target_compile_options("${TEST_TARGET_NAME}" PRIVATE ${GINKGO_COMPILER_FLAGS})
7786
target_include_directories("${TEST_TARGET_NAME}"
7887
PRIVATE
7988
"$<BUILD_INTERFACE:${Ginkgo_BINARY_DIR}>"

core/test/log/logger.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3939
#include <gtest/gtest.h>
4040

4141

42+
#include <ginkgo/core/log/convergence.hpp>
4243
#include <ginkgo/core/log/record.hpp>
4344
#include <ginkgo/core/log/stream.hpp>
4445

@@ -65,8 +66,8 @@ TEST(DummyLogged, CanAddLogger)
6566
auto exec = gko::ReferenceExecutor::create();
6667
DummyLoggedClass c;
6768

68-
c.add_logger(
69-
gko::log::Record::create(exec, gko::log::Logger::all_events_mask));
69+
c.add_logger(gko::log::Convergence<>::create(
70+
exec, gko::log::Logger::all_events_mask));
7071

7172
ASSERT_EQ(c.get_num_loggers(), 1);
7273
}
@@ -77,8 +78,8 @@ TEST(DummyLogged, CanAddMultipleLoggers)
7778
auto exec = gko::ReferenceExecutor::create();
7879
DummyLoggedClass c;
7980

80-
c.add_logger(
81-
gko::log::Record::create(exec, gko::log::Logger::all_events_mask));
81+
c.add_logger(gko::log::Convergence<>::create(
82+
exec, gko::log::Logger::all_events_mask));
8283
c.add_logger(gko::log::Stream<>::create(
8384
exec, gko::log::Logger::all_events_mask, std::cout));
8485

@@ -124,8 +125,8 @@ TEST(DummyLogged, CanRemoveLogger)
124125
{
125126
auto exec = gko::ReferenceExecutor::create();
126127
DummyLoggedClass c;
127-
auto r = gko::share(
128-
gko::log::Record::create(exec, gko::log::Logger::all_events_mask));
128+
auto r = gko::share(gko::log::Convergence<>::create(
129+
exec, gko::log::Logger::all_events_mask));
129130
c.add_logger(r);
130131
c.add_logger(gko::log::Stream<>::create(
131132
exec, gko::log::Logger::all_events_mask, std::cout));

core/test/multigrid/amgx_pgm.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class AmgxPgmFactory : public ::testing::Test {
7272
std::unique_ptr<typename MgLevel::Factory> amgxpgm_factory;
7373
};
7474

75-
TYPED_TEST_CASE(AmgxPgmFactory, gko::test::ValueIndexTypes);
75+
TYPED_TEST_SUITE(AmgxPgmFactory, gko::test::ValueIndexTypes);
7676

7777

7878
TYPED_TEST(AmgxPgmFactory, FactoryKnowsItsExecutor)

core/test/solver/cb_gmres.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ using TestTypes =
143143
std::tuple<std::complex<double>, st_r2>,
144144
std::tuple<std::complex<float>, st_keep>>;
145145

146-
TYPED_TEST_CASE(CbGmres, TestTypes);
146+
TYPED_TEST_SUITE(CbGmres, TestTypes);
147147

148148

149149
TYPED_TEST(CbGmres, CbGmresFactoryKnowsItsExecutor)

core/test/solver/idr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class Idr : public ::testing::Test {
8989
}
9090
};
9191

92-
TYPED_TEST_CASE(Idr, gko::test::ValueTypes);
92+
TYPED_TEST_SUITE(Idr, gko::test::ValueTypes);
9393

9494

9595
TYPED_TEST(Idr, IdrFactoryKnowsItsExecutor)

0 commit comments

Comments
 (0)