From 84039066a1e04754ad1dc4b7f74fa28e212cc557 Mon Sep 17 00:00:00 2001 From: Tobias Ribizel Date: Wed, 15 Sep 2021 10:43:08 +0200 Subject: [PATCH 1/4] remove support for cuda < 9.2 and add 11.4 CI job --- .gitlab-ci.yml | 105 +++++++++----------- .gitlab/image.yml | 6 ++ cuda/base/cusparse_bindings.hpp | 129 ------------------------- cuda/solver/common_trs_kernels.cuh | 121 +---------------------- cuda/test/solver/lower_trs_kernels.cpp | 4 +- cuda/test/solver/upper_trs_kernels.cpp | 3 - 6 files changed, 54 insertions(+), 314 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fcfd7824651..2c57b3b9b85 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -254,65 +254,6 @@ trigger_pipeline: # Build jobs # Job with example runs. -build/cuda90/gcc/all/debug/shared: - <<: *default_build - extends: - - .quick_test_condition - - .use_gko-cuda90-gnu5-llvm39 - variables: - <<: *default_variables - BUILD_OMP: "ON" - BUILD_CUDA: "ON" - BUILD_TYPE: "Debug" - FAST_TESTS: "ON" - RUN_EXAMPLES: "ON" - CUDA_ARCH: 35 - -build/cuda90/clang/all/release/static: - <<: *default_build - extends: - - .full_test_condition - - .use_gko-cuda90-gnu5-llvm39 - variables: - <<: *default_variables - C_COMPILER: "clang" - CXX_COMPILER: "clang++" - BUILD_OMP: "ON" - BUILD_CUDA: "ON" - BUILD_TYPE: "Release" - BUILD_SHARED_LIBS: "OFF" - CUDA_ARCH: 35 - -# cuda 9.1 and friends -build/cuda91/gcc/all/debug/static: - <<: *default_build - extends: - - .full_test_condition - - .use_gko-cuda91-gnu6-llvm40 - variables: - <<: *default_variables - BUILD_OMP: "ON" - BUILD_CUDA: "ON" - BUILD_TYPE: "Debug" - FAST_TESTS: "ON" - BUILD_SHARED_LIBS: "OFF" - CUDA_ARCH: 35 - -build/cuda91/clang/all/release/shared: - <<: *default_build - extends: - - .full_test_condition - - .use_gko-cuda91-gnu6-llvm40 - variables: - <<: *default_variables - C_COMPILER: "clang" - CXX_COMPILER: "clang++" - BUILD_OMP: "ON" - BUILD_CUDA: "ON" - BUILD_TYPE: "Release" - CUDA_ARCH: 35 - - # cuda 9.2 and friends build/cuda92/gcc/all/release/shared: <<: *default_build_with_test @@ -325,6 +266,7 @@ build/cuda92/gcc/all/release/shared: BUILD_CUDA: "ON" BUILD_HIP: "ON" BUILD_TYPE: "Release" + RUN_EXAMPLES: "ON" CUDA_ARCH: 61 # cuda 10.0 and friends @@ -552,6 +494,51 @@ build/cuda110/intel/cuda/debug/static: BUILD_SHARED_LIBS: "OFF" CUDA_ARCH: 61 +# cuda 11.4 and friends +build/cuda114/gcc/cuda/debug/shared: + <<: *default_build_with_test + extends: + - .full_test_condition + - .use_gko_cuda114-gnu11-llvm12-intel2020 + variables: + <<: *default_variables + BUILD_OMP: "ON" + BUILD_CUDA: "ON" + BUILD_TYPE: "Debug" + FAST_TESTS: "ON" + CUDA_ARCH: 61 + +build/cuda114/clang/cuda/release/static: + <<: *default_build_with_test + extends: + - .full_test_condition + - .use_gko_cuda114-gnu11-llvm12-intel2020 + variables: + <<: *default_variables + C_COMPILER: "clang" + CXX_COMPILER: "clang++" + BUILD_OMP: "ON" + BUILD_CUDA: "ON" + BUILD_TYPE: "Release" + BUILD_SHARED_LIBS: "OFF" + CUDA_ARCH: 61 + +build/cuda114/intel/cuda/debug/static: + <<: *default_build_with_test + extends: + - .quick_test_condition + - .use_gko_cuda114-gnu11-llvm12-intel2020 + variables: + <<: *default_variables + C_COMPILER: "icc" + CXX_COMPILER: "icpc" + BUILD_OMP: "ON" + BUILD_CUDA: "ON" + BUILD_TYPE: "Debug" + FAST_TESTS: "ON" + BUILD_SHARED_LIBS: "OFF" + CUDA_ARCH: 61 + # HIP AMD build/amd/gcc/hip/debug/shared: <<: *default_build_with_test diff --git a/.gitlab/image.yml b/.gitlab/image.yml index a2afe0fcd53..188234c190e 100644 --- a/.gitlab/image.yml +++ b/.gitlab/image.yml @@ -66,6 +66,12 @@ - private_ci - nvidia-gpu +.use_gko_cuda114-gnu11-llvm12-intel2020: + image: localhost:5000/cuda_114_8bbf535a_gko-cuda114-gnu11-llvm12-intel2020 + tags: + - private_ci + - nvidia-gpu + .use_gko-amd-gnu8-llvm7: image: ginkgohub/rocm:gnu8-llvm7 tags: diff --git a/cuda/base/cusparse_bindings.hpp b/cuda/base/cusparse_bindings.hpp index 3d871de39fe..5bfb8629240 100644 --- a/cuda/base/cusparse_bindings.hpp +++ b/cuda/base/cusparse_bindings.hpp @@ -850,10 +850,6 @@ inline void destroy(cusparseSpMatDescr_t descr) #endif -// CUDA versions 9.2 and above have csrsm2. -#if (defined(CUDA_VERSION) && (CUDA_VERSION >= 9020)) - - inline csrsm2Info_t create_solve_info() { csrsm2Info_t info{}; @@ -868,27 +864,6 @@ inline void destroy(csrsm2Info_t info) } -// CUDA_VERSION<=9.1 do not support csrsm2. -#elif (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) - - -inline cusparseSolveAnalysisInfo_t create_solve_info() -{ - cusparseSolveAnalysisInfo_t info{}; - GKO_ASSERT_NO_CUSPARSE_ERRORS(cusparseCreateSolveAnalysisInfo(&info)); - return info; -} - - -inline void destroy(cusparseSolveAnalysisInfo_t info) -{ - GKO_ASSERT_NO_CUSPARSE_ERRORS(cusparseDestroySolveAnalysisInfo(info)); -} - - -#endif - - inline csrilu02Info_t create_ilu0_info() { csrilu02Info_t info{}; @@ -917,10 +892,6 @@ inline void destroy(csric02Info_t info) } -// CUDA versions 9.2 and above have csrsm2. -#if (defined(CUDA_VERSION) && (CUDA_VERSION >= 9020)) - - #define GKO_BIND_CUSPARSE32_BUFFERSIZEEXT(ValueType, CusparseName) \ inline void buffer_size_ext( \ cusparseHandle_t handle, int algo, cusparseOperation_t trans1, \ @@ -1076,106 +1047,6 @@ GKO_BIND_CUSPARSE64_CSRSM2_SOLVE(ValueType, detail::not_implemented); #undef GKO_BIND_CUSPARSE64_CSRSM2_SOLVE -// CUDA_VERSION<=9.1 do not support csrsm2. -#elif (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) - - -#define GKO_BIND_CUSPARSE32_CSRSM_ANALYSIS(ValueType, CusparseName) \ - inline void csrsm_analysis( \ - cusparseHandle_t handle, cusparseOperation_t trans, size_type m, \ - size_type nnz, const cusparseMatDescr_t descr, \ - const ValueType* csrVal, const int32* csrRowPtr, \ - const int32* csrColInd, cusparseSolveAnalysisInfo_t factor_info) \ - { \ - GKO_ASSERT_NO_CUSPARSE_ERRORS( \ - CusparseName(handle, trans, m, nnz, descr, as_culibs_type(csrVal), \ - csrRowPtr, csrColInd, factor_info)); \ - } \ - static_assert(true, \ - "This assert is used to counter the false positive extra " \ - "semi-colon warnings") - -#define GKO_BIND_CUSPARSE64_CSRSM_ANALYSIS(ValueType, CusparseName) \ - inline void csrsm_analysis( \ - cusparseHandle_t handle, cusparseOperation_t trans, size_type m, \ - size_type nnz, const cusparseMatDescr_t descr, \ - const ValueType* csrVal, const int64* csrRowPtr, \ - const int64* csrColInd, cusparseSolveAnalysisInfo_t factor_info) \ - GKO_NOT_IMPLEMENTED; \ - static_assert(true, \ - "This assert is used to counter the " \ - "false positive extra " \ - "semi-colon warnings") - -GKO_BIND_CUSPARSE32_CSRSM_ANALYSIS(float, cusparseScsrsm_analysis); -GKO_BIND_CUSPARSE32_CSRSM_ANALYSIS(double, cusparseDcsrsm_analysis); -GKO_BIND_CUSPARSE32_CSRSM_ANALYSIS(std::complex, - cusparseCcsrsm_analysis); -GKO_BIND_CUSPARSE32_CSRSM_ANALYSIS(std::complex, - cusparseZcsrsm_analysis); -GKO_BIND_CUSPARSE64_CSRSM_ANALYSIS(float, cusparseScsrsm_analysis); -GKO_BIND_CUSPARSE64_CSRSM_ANALYSIS(double, cusparseDcsrsm_analysis); -GKO_BIND_CUSPARSE64_CSRSM_ANALYSIS(std::complex, - cusparseCcsrsm_analysis); -GKO_BIND_CUSPARSE64_CSRSM_ANALYSIS(std::complex, - cusparseZcsrsm_analysis); -template -GKO_BIND_CUSPARSE32_CSRSM_ANALYSIS(ValueType, detail::not_implemented); -template -GKO_BIND_CUSPARSE64_CSRSM_ANALYSIS(ValueType, detail::not_implemented); -#undef GKO_BIND_CUSPARSE32_CSRSM_ANALYSIS -#undef GKO_BIND_CUSPARSE64_CSRSM_ANALYSIS - -#define GKO_BIND_CUSPARSE32_CSRSM_SOLVE(ValueType, CusparseName) \ - inline void csrsm_solve( \ - cusparseHandle_t handle, cusparseOperation_t trans, size_type m, \ - size_type n, const ValueType* one, const cusparseMatDescr_t descr, \ - const ValueType* csrVal, const int32* csrRowPtr, \ - const int32* csrColInd, cusparseSolveAnalysisInfo_t factor_info, \ - const ValueType* rhs, int32 rhs_stride, ValueType* sol, \ - int32 sol_stride) \ - { \ - GKO_ASSERT_NO_CUSPARSE_ERRORS( \ - CusparseName(handle, trans, m, n, as_culibs_type(one), descr, \ - as_culibs_type(csrVal), csrRowPtr, csrColInd, \ - factor_info, as_culibs_type(rhs), rhs_stride, \ - as_culibs_type(sol), sol_stride)); \ - } \ - static_assert(true, \ - "This assert is used to counter the false positive extra " \ - "semi-colon warnings") - -#define GKO_BIND_CUSPARSE64_CSRSM_SOLVE(ValueType, CusparseName) \ - inline void csrsm_solve( \ - cusparseHandle_t handle, cusparseOperation_t trans1, size_type m, \ - size_type n, const ValueType* one, const cusparseMatDescr_t descr, \ - const ValueType* csrVal, const int64* csrRowPtr, \ - const int64* csrColInd, cusparseSolveAnalysisInfo_t factor_info, \ - const ValueType* rhs, int64 rhs_stride, ValueType* sol, \ - int64 sol_stride) GKO_NOT_IMPLEMENTED; \ - static_assert(true, \ - "This assert is used to counter the false positive extra " \ - "semi-colon warnings") - -GKO_BIND_CUSPARSE32_CSRSM_SOLVE(float, cusparseScsrsm_solve); -GKO_BIND_CUSPARSE32_CSRSM_SOLVE(double, cusparseDcsrsm_solve); -GKO_BIND_CUSPARSE32_CSRSM_SOLVE(std::complex, cusparseCcsrsm_solve); -GKO_BIND_CUSPARSE32_CSRSM_SOLVE(std::complex, cusparseZcsrsm_solve); -GKO_BIND_CUSPARSE64_CSRSM_SOLVE(float, cusparseScsrsm_solve); -GKO_BIND_CUSPARSE64_CSRSM_SOLVE(double, cusparseDcsrsm_solve); -GKO_BIND_CUSPARSE64_CSRSM_SOLVE(std::complex, cusparseCcsrsm_solve); -GKO_BIND_CUSPARSE64_CSRSM_SOLVE(std::complex, cusparseZcsrsm_solve); -template -GKO_BIND_CUSPARSE32_CSRSM_SOLVE(ValueType, detail::not_implemented); -template -GKO_BIND_CUSPARSE64_CSRSM_SOLVE(ValueType, detail::not_implemented); -#undef GKO_BIND_CUSPARSE32_CSRSM_SOLVE -#undef GKO_BIND_CUSPARSE64_CSRSM_SOLVE - - -#endif - - template void create_identity_permutation(cusparseHandle_t handle, IndexType size, IndexType* permutation) GKO_NOT_IMPLEMENTED; diff --git a/cuda/solver/common_trs_kernels.cuh b/cuda/solver/common_trs_kernels.cuh index 9173b2155f6..2c01e6a76f5 100644 --- a/cuda/solver/common_trs_kernels.cuh +++ b/cuda/solver/common_trs_kernels.cuh @@ -59,16 +59,13 @@ namespace solver { struct SolveStruct { - virtual void dummy() {} + virtual ~SolveStruct() {} }; namespace cuda { -#if (defined(CUDA_VERSION) && (CUDA_VERSION >= 9020)) - - struct SolveStruct : gko::solver::SolveStruct { int algorithm; csrsm2Info_t solve_info; @@ -113,44 +110,6 @@ struct SolveStruct : gko::solver::SolveStruct { }; -#elif (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) - - -struct SolveStruct : gko::solver::SolveStruct { - cusparseSolveAnalysisInfo_t solve_info; - cusparseMatDescr_t factor_descr; - SolveStruct() - { - GKO_ASSERT_NO_CUSPARSE_ERRORS( - cusparseCreateSolveAnalysisInfo(&solve_info)); - GKO_ASSERT_NO_CUSPARSE_ERRORS(cusparseCreateMatDescr(&factor_descr)); - GKO_ASSERT_NO_CUSPARSE_ERRORS( - cusparseSetMatIndexBase(factor_descr, CUSPARSE_INDEX_BASE_ZERO)); - GKO_ASSERT_NO_CUSPARSE_ERRORS( - cusparseSetMatType(factor_descr, CUSPARSE_MATRIX_TYPE_GENERAL)); - GKO_ASSERT_NO_CUSPARSE_ERRORS( - cusparseSetMatDiagType(factor_descr, CUSPARSE_DIAG_TYPE_NON_UNIT)); - } - - SolveStruct(const SolveStruct&) = delete; - - SolveStruct(SolveStruct&&) = delete; - - SolveStruct& operator=(const SolveStruct&) = delete; - - SolveStruct& operator=(SolveStruct&&) = delete; - - ~SolveStruct() - { - cusparseDestroyMatDescr(factor_descr); - cusparseDestroySolveAnalysisInfo(solve_info); - } -}; - - -#endif - - } // namespace cuda } // namespace solver @@ -163,19 +122,7 @@ namespace { void should_perform_transpose_kernel(std::shared_ptr exec, bool& do_transpose) { -#if (defined(CUDA_VERSION) && (CUDA_VERSION >= 9020)) - - do_transpose = false; - - -#elif (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) - - - do_transpose = true; - - -#endif } @@ -201,10 +148,6 @@ void generate_kernel(std::shared_ptr exec, cuda_solve_struct->factor_descr, CUSPARSE_FILL_MODE_UPPER)); } - -#if (defined(CUDA_VERSION) && (CUDA_VERSION >= 9020)) - - ValueType one = 1.0; { @@ -238,25 +181,6 @@ void generate_kernel(std::shared_ptr exec, cuda_solve_struct->policy, cuda_solve_struct->factor_work_vec); } - - -#elif (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) - - - { - cusparse::pointer_mode_guard pm_guard(handle); - cusparse::csrsm_analysis( - handle, CUSPARSE_OPERATION_NON_TRANSPOSE, - matrix->get_size()[0], matrix->get_num_stored_elements(), - cuda_solve_struct->factor_descr, matrix->get_const_values(), - matrix->get_const_row_ptrs(), matrix->get_const_col_idxs(), - cuda_solve_struct->solve_info); - } - - -#endif - - } else { GKO_NOT_SUPPORTED(solve_struct); } @@ -282,11 +206,6 @@ void solve_kernel(std::shared_ptr exec, dynamic_cast(solve_struct)) { ValueType one = 1.0; auto handle = exec->get_cusparse_handle(); - - -#if (defined(CUDA_VERSION) && (CUDA_VERSION >= 9020)) - - x->copy_from(gko::lend(b)); { cusparse::pointer_mode_guard pm_guard(handle); @@ -301,44 +220,6 @@ void solve_kernel(std::shared_ptr exec, cuda_solve_struct->solve_info, cuda_solve_struct->policy, cuda_solve_struct->factor_work_vec); } - - -#elif (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) - - - { - cusparse::pointer_mode_guard pm_guard(handle); - if (b->get_stride() == 1) { - cusparse::csrsm_solve( - handle, CUSPARSE_OPERATION_NON_TRANSPOSE, - matrix->get_size()[0], b->get_stride(), &one, - cuda_solve_struct->factor_descr, - matrix->get_const_values(), - matrix->get_const_row_ptrs(), - matrix->get_const_col_idxs(), - cuda_solve_struct->solve_info, b->get_const_values(), - b->get_size()[0], x->get_values(), x->get_size()[0]); - } else { - dense::transpose(exec, b, trans_b); - dense::transpose(exec, x, trans_x); - cusparse::csrsm_solve( - handle, CUSPARSE_OPERATION_NON_TRANSPOSE, - matrix->get_size()[0], trans_b->get_size()[0], &one, - cuda_solve_struct->factor_descr, - matrix->get_const_values(), - matrix->get_const_row_ptrs(), - matrix->get_const_col_idxs(), - cuda_solve_struct->solve_info, trans_b->get_values(), - trans_b->get_size()[1], trans_x->get_values(), - trans_x->get_size()[1]); - dense::transpose(exec, trans_x, x); - } - } - - -#endif - - } else { GKO_NOT_SUPPORTED(solve_struct); } diff --git a/cuda/test/solver/lower_trs_kernels.cpp b/cuda/test/solver/lower_trs_kernels.cpp index 224d4b0cd8a..1cba5558312 100644 --- a/cuda/test/solver/lower_trs_kernels.cpp +++ b/cuda/test/solver/lower_trs_kernels.cpp @@ -127,9 +127,7 @@ TEST_F(LowerTrs, CudaLowerTrsFlagCheckIsCorrect) { bool trans_flag = true; bool expected_flag = false; -#if (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) - expected_flag = true; -#endif // (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) + gko::kernels::cuda::lower_trs::should_perform_transpose(cuda, trans_flag); ASSERT_EQ(expected_flag, trans_flag); diff --git a/cuda/test/solver/upper_trs_kernels.cpp b/cuda/test/solver/upper_trs_kernels.cpp index 0b0bc7baa34..78f1954ee3b 100644 --- a/cuda/test/solver/upper_trs_kernels.cpp +++ b/cuda/test/solver/upper_trs_kernels.cpp @@ -128,9 +128,6 @@ TEST_F(UpperTrs, CudaUpperTrsFlagCheckIsCorrect) bool trans_flag = true; bool expected_flag = false; -#if (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) - expected_flag = true; -#endif // (defined(CUDA_VERSION) && (CUDA_VERSION < 9020)) gko::kernels::cuda::upper_trs::should_perform_transpose(cuda, trans_flag); ASSERT_EQ(expected_flag, trans_flag); From 580739ad48acc3277db3310c78250eaaa6b53839 Mon Sep 17 00:00:00 2001 From: Tobias Ribizel Date: Wed, 15 Sep 2021 11:46:37 +0200 Subject: [PATCH 2/4] fix compilation issues * CUDA 11.4 prints many spurious errors * clang/icpc and CUDA 11.4 don't play nice together * GCC 11 needs a workaround for GTest -Werror --- .gitlab-ci.yml | 37 +++++-------------------------------- .gitlab/image.yml | 4 ++-- 2 files changed, 7 insertions(+), 34 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2c57b3b9b85..3f9402ee4cc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -496,47 +496,20 @@ build/cuda110/intel/cuda/debug/static: # cuda 11.4 and friends build/cuda114/gcc/cuda/debug/shared: - <<: *default_build_with_test - extends: - - .full_test_condition - - .use_gko_cuda114-gnu11-llvm12-intel2020 - variables: - <<: *default_variables - BUILD_OMP: "ON" - BUILD_CUDA: "ON" - BUILD_TYPE: "Debug" - FAST_TESTS: "ON" - CUDA_ARCH: 61 - -build/cuda114/clang/cuda/release/static: - <<: *default_build_with_test - extends: - - .full_test_condition - - .use_gko_cuda114-gnu11-llvm12-intel2020 - variables: - <<: *default_variables - C_COMPILER: "clang" - CXX_COMPILER: "clang++" - BUILD_OMP: "ON" - BUILD_CUDA: "ON" - BUILD_TYPE: "Release" - BUILD_SHARED_LIBS: "OFF" - CUDA_ARCH: 61 - -build/cuda114/intel/cuda/debug/static: <<: *default_build_with_test extends: - .quick_test_condition - - .use_gko_cuda114-gnu11-llvm12-intel2020 + - .use_gko_cuda114-gnu11-llvm12 variables: <<: *default_variables - C_COMPILER: "icc" - CXX_COMPILER: "icpc" BUILD_OMP: "ON" BUILD_CUDA: "ON" BUILD_TYPE: "Debug" FAST_TESTS: "ON" - BUILD_SHARED_LIBS: "OFF" + # fix gtest issue https://github.com/google/googletest/issues/3514 + CXX_FLAGS: "-Wno-error=maybe-uninitialized" + # disable spurious unused argument warning + EXTRA_CMAKE_FLAGS: "-DCMAKE_CUDA_FLAGS=-diag-suppress=177" CUDA_ARCH: 61 # HIP AMD diff --git a/.gitlab/image.yml b/.gitlab/image.yml index 188234c190e..a1d7ca795b0 100644 --- a/.gitlab/image.yml +++ b/.gitlab/image.yml @@ -66,8 +66,8 @@ - private_ci - nvidia-gpu -.use_gko_cuda114-gnu11-llvm12-intel2020: - image: localhost:5000/cuda_114_8bbf535a_gko-cuda114-gnu11-llvm12-intel2020 +.use_gko_cuda114-gnu11-llvm12: + image: localhost:5000/cuda_114_bdc58a80_gko-cuda114-gnu11-llvm12 tags: - private_ci - nvidia-gpu From 8f57642c7b34e5da900d7404432e7f5ce3d5323c Mon Sep 17 00:00:00 2001 From: Tobias Ribizel Date: Mon, 4 Oct 2021 12:53:11 +0200 Subject: [PATCH 3/4] use published image --- .gitlab/image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/image.yml b/.gitlab/image.yml index a1d7ca795b0..9f7e4eb6406 100644 --- a/.gitlab/image.yml +++ b/.gitlab/image.yml @@ -67,7 +67,7 @@ - nvidia-gpu .use_gko_cuda114-gnu11-llvm12: - image: localhost:5000/cuda_114_bdc58a80_gko-cuda114-gnu11-llvm12 + image: ginkgohub/cuda:114-gnu11-llvm12 tags: - private_ci - nvidia-gpu From eca1fc776dec5f2bc8edf44ebd3ff836e8e0b995 Mon Sep 17 00:00:00 2001 From: Tobias Ribizel Date: Tue, 5 Oct 2021 11:46:55 +0200 Subject: [PATCH 4/4] update CUDA requirements in README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7ee7d11cb53..18efd8d32b2 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ For Ginkgo core library: The Ginkgo CUDA module has the following __additional__ requirements: -* _CUDA 9.0+_ +* _CUDA 9.2+_ * Any host compiler restrictions your version of CUDA may impose also apply here. For the newest CUDA version, this information can be found in the [CUDA installation guide for Linux](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html) @@ -87,7 +87,7 @@ __NOTE:__ Need to add `--autocrlf=input` after `git clone` in _Cygwin_. The Ginkgo CUDA module has the following __additional__ requirements: -* _CUDA 9.0+_ +* _CUDA 9.2+_ * _Microsoft Visual Studio_ * Any host compiler restrictions your version of CUDA may impose also apply here. For the newest CUDA version, this information can be found in the