From 0b8e292fdfa6ca2e27a05afe0ed463b1b00ec083 Mon Sep 17 00:00:00 2001 From: Francesco Rizzi Date: Fri, 20 May 2022 10:28:00 +0200 Subject: [PATCH 1/3] blas2: update kokkos include header and cmakelist for tests --- tests/kokkos-based/CMakeLists.txt | 73 +++++++++++++++++++ .../include/experimental/linalg_kokkoskernels | 2 + 2 files changed, 75 insertions(+) diff --git a/tests/kokkos-based/CMakeLists.txt b/tests/kokkos-based/CMakeLists.txt index b0840a75..54c2db88 100644 --- a/tests/kokkos-based/CMakeLists.txt +++ b/tests/kokkos-based/CMakeLists.txt @@ -106,3 +106,76 @@ linalg_add_test_kokkos( linalg_add_test_kokkos( copy_kokkos "copy: kokkos impl") + +# +# blas2 (according to P1673) +# + +linalg_add_test_kokkos( + overwriting_matrix_vector_product + "overwriting_matrix_vector_product: kokkos impl") +linalg_add_test_kokkos( + updating_matrix_vector_product + "updating_matrix_vector_product: kokkos impl") + +linalg_add_test_kokkos( + overwriting_symmetric_matrix_vector_product + "overwriting_symmetric_matrix_vector_product_lower: kokkos impl" USE_LOWER lower) +linalg_add_test_kokkos( + overwriting_symmetric_matrix_vector_product + "overwriting_symmetric_matrix_vector_product_upper: kokkos impl" USE_UPPER upper) +linalg_add_test_kokkos( + updating_symmetric_matrix_vector_product + "updating_symmetric_matrix_vector_product_lower: kokkos impl" USE_LOWER lower) +linalg_add_test_kokkos( + updating_symmetric_matrix_vector_product + "updating_symmetric_matrix_vector_product_upper: kokkos impl" USE_UPPER upper) + +linalg_add_test_kokkos( + overwriting_hermitian_matrix_vector_product + "overwriting_hermitian_matrix_vector_product_lower: kokkos impl" USE_LOWER lower) +linalg_add_test_kokkos( + overwriting_hermitian_matrix_vector_product + "overwriting_hermitian_matrix_vector_product_upper: kokkos impl" USE_UPPER upper) +linalg_add_test_kokkos( + updating_hermitian_matrix_vector_product + "updating_hermitian_matrix_vector_product_lower: kokkos impl" USE_LOWER lower) +linalg_add_test_kokkos( + updating_hermitian_matrix_vector_product + "updating_hermitian_matrix_vector_product_upper: kokkos impl" USE_UPPER upper) + + +linalg_add_test_kokkos( + overwriting_triangular_matrix_vector_product + "overwriting_triangular_matrix_vector_product_lower: kokkos impl" USE_LOWER lower) +linalg_add_test_kokkos( + overwriting_triangular_matrix_vector_product + "overwriting_triangular_matrix_vector_product_upper: kokkos impl" USE_UPPER upper) +linalg_add_test_kokkos( + updating_triangular_matrix_vector_product + "updating_triangular_matrix_vector_product_lower: kokkos impl" USE_LOWER lower) +linalg_add_test_kokkos( + updating_triangular_matrix_vector_product + "updating_triangular_matrix_vector_product_upper: kokkos impl" USE_UPPER upper) + + +# add tests for triangular_matrix_vector_solve + +# FRIZI: leaving these commented out because they don't compile for me +# so Mikolaj is going to finalize them +# linalg_add_test_kokkos( +# matrix_rank1_update_kokkos +# "matrix_rank1_update_kokkos: kokkos impl") +# linalg_add_test_kokkos( +# symmetric_matrix_rank1_update_kokkos +# "symmetric_matrix_rank1_update_kokkos: kokkos impl") +# linalg_add_test_kokkos( +# hermitian_matrix_rank1_update_kokkos +# "hermitian_matrix_rank1_update_kokkos: kokkos impl") + +# linalg_add_test_kokkos( +# symmetric_matrix_rank2_update_kokkos +# "symmetric_matrix_rank2_update_kokkos: kokkos impl") +# linalg_add_test_kokkos( +# hermitian_matrix_rank2_update_kokkos +# "hermitian_matrix_rank2_update_kokkos: kokkos impl") diff --git a/tpl-implementations/include/experimental/linalg_kokkoskernels b/tpl-implementations/include/experimental/linalg_kokkoskernels index 47494f58..10f858e7 100644 --- a/tpl-implementations/include/experimental/linalg_kokkoskernels +++ b/tpl-implementations/include/experimental/linalg_kokkoskernels @@ -23,3 +23,5 @@ #include "__p1673_bits/kokkos-kernels/blas2_matrix_rank_2_update.hpp" #include "__p1673_bits/kokkos-kernels/blas2_gemv_kk.hpp" #include "__p1673_bits/kokkos-kernels/blas2_symv_kk.hpp" +#include "__p1673_bits/kokkos-kernels/blas2_hemv_kk.hpp" +#include "__p1673_bits/kokkos-kernels/blas2_triangular_mat_vec_product.hpp" \ No newline at end of file From 2a4d810f62afad230a819a03595e30d74b79561d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Zuzek?= Date: Tue, 24 May 2022 21:22:48 +0200 Subject: [PATCH 2/3] blas3: update kokkos include header --- .../include/experimental/linalg_kokkoskernels | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tpl-implementations/include/experimental/linalg_kokkoskernels b/tpl-implementations/include/experimental/linalg_kokkoskernels index 10f858e7..468780f6 100644 --- a/tpl-implementations/include/experimental/linalg_kokkoskernels +++ b/tpl-implementations/include/experimental/linalg_kokkoskernels @@ -24,4 +24,11 @@ #include "__p1673_bits/kokkos-kernels/blas2_gemv_kk.hpp" #include "__p1673_bits/kokkos-kernels/blas2_symv_kk.hpp" #include "__p1673_bits/kokkos-kernels/blas2_hemv_kk.hpp" -#include "__p1673_bits/kokkos-kernels/blas2_triangular_mat_vec_product.hpp" \ No newline at end of file +#include "__p1673_bits/kokkos-kernels/blas2_triangular_mat_vec_product.hpp" + +// blas3 (according to P1673) +#include "__p1673_bits/kokkos-kernels/blas3_overwriting_gemm_kk.hpp" +#include "__p1673_bits/kokkos-kernels/blas3_matrix_rank_k_update.hpp" +#include "__p1673_bits/kokkos-kernels/blas3_matrix_rank_2k_update.hpp" +#include "__p1673_bits/kokkos-kernels/blas3_matrix_product_kk.hpp" +#include "__p1673_bits/kokkos-kernels/blas3_triangular_matrix_matrix_solve.hpp" From a95dd224285e859bca8a2ea9c51df24f6c049fb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Zuzek?= Date: Tue, 24 May 2022 21:23:48 +0200 Subject: [PATCH 3/3] kokkos: update blas2 and blas3 cmake tests --- tests/kokkos-based/CMakeLists.txt | 98 ++++++++++++++++++++++++------- 1 file changed, 77 insertions(+), 21 deletions(-) diff --git a/tests/kokkos-based/CMakeLists.txt b/tests/kokkos-based/CMakeLists.txt index 54c2db88..a0c805d5 100644 --- a/tests/kokkos-based/CMakeLists.txt +++ b/tests/kokkos-based/CMakeLists.txt @@ -83,6 +83,7 @@ linalg_add_test_kokkos( linalg_add_test_kokkos( vector_sum_of_squares_kokkos "vector_sum_of_squares: kokkos impl") + linalg_add_test_kokkos( vector_abs_sum_kokkos "vector_abs_sum: kokkos impl") @@ -118,6 +119,7 @@ linalg_add_test_kokkos( updating_matrix_vector_product "updating_matrix_vector_product: kokkos impl") +# symmetric_matrix_vector_product linalg_add_test_kokkos( overwriting_symmetric_matrix_vector_product "overwriting_symmetric_matrix_vector_product_lower: kokkos impl" USE_LOWER lower) @@ -131,6 +133,7 @@ linalg_add_test_kokkos( updating_symmetric_matrix_vector_product "updating_symmetric_matrix_vector_product_upper: kokkos impl" USE_UPPER upper) +# hermitian_matrix_vector_product linalg_add_test_kokkos( overwriting_hermitian_matrix_vector_product "overwriting_hermitian_matrix_vector_product_lower: kokkos impl" USE_LOWER lower) @@ -144,7 +147,7 @@ linalg_add_test_kokkos( updating_hermitian_matrix_vector_product "updating_hermitian_matrix_vector_product_upper: kokkos impl" USE_UPPER upper) - +# triangular_matrix_vector_product linalg_add_test_kokkos( overwriting_triangular_matrix_vector_product "overwriting_triangular_matrix_vector_product_lower: kokkos impl" USE_LOWER lower) @@ -158,24 +161,77 @@ linalg_add_test_kokkos( updating_triangular_matrix_vector_product "updating_triangular_matrix_vector_product_upper: kokkos impl" USE_UPPER upper) +linalg_add_test_kokkos( + matrix_rank1_update_kokkos + "matrix_rank1_update: kokkos impl") + +linalg_add_test_kokkos( + symmetric_matrix_rank1_update_kokkos + "symmetric_matrix_rank1_update: kokkos impl") +linalg_add_test_kokkos( + hermitian_matrix_rank1_update_kokkos + "hermitian_matrix_rank1_update: kokkos impl") + +linalg_add_test_kokkos( + symmetric_matrix_rank2_update_kokkos + "symmetric_matrix_rank2_update: kokkos impl") +linalg_add_test_kokkos( + hermitian_matrix_rank2_update_kokkos + "hermitian_matrix_rank2_update: kokkos impl") + +# +# blas3 (according to P1673) +# + +# matrix_product +linalg_add_test_kokkos( + gemm_C_AB + "gemm_C_AB_product: kokkos impl") +linalg_add_test_kokkos( + gemm_C_ABT + "gemm_C_ABT_product: kokkos impl") +linalg_add_test_kokkos( + gemm_C_ATB + "gemm_C_ATB_product: kokkos impl") + +linalg_add_test_kokkos( + triangular_matrix_left_product_kokkos + "triangular_matrix_left_product_kokkos: kokkos impl") +linalg_add_test_kokkos( + triangular_matrix_right_product_kokkos + "triangular_matrix_right_product_kokkos: kokkos impl") + +# {symmetric,hermitian}_matrix_{left} +linalg_add_test_kokkos( + symmetric_matrix_left_product_kokkos + "symmetric_matrix_left_product: kokkos impl") +linalg_add_test_kokkos( + symmetric_matrix_right_product_kokkos + "symmetric_matrix_right_product: kokkos impl") +linalg_add_test_kokkos( + hermitian_matrix_left_product_kokkos + "hermitian_matrix_left_product: kokkos impl") +linalg_add_test_kokkos( + hermitian_matrix_right_product_kokkos + "hermitian_matrix_right_product: kokkos impl") + +linalg_add_test_kokkos( + triangular_matrix_matrix_left_solve + "triangular_matrix_matrix_left_solve: kokkos impl") +linalg_add_test_kokkos( + triangular_matrix_matrix_right_solve + "triangular_matrix_matrix_right_solve: kokkos impl") + +linalg_add_test_kokkos( + symmetric_matrix_rank_2k_update_kokkos + "symmetric_matrix_rank_2k_update: kokkos impl") +linalg_add_test_kokkos( + hermitian_matrix_rank_2k_update_kokkos + "hermitian_matrix_rank_2k_update: kokkos impl") -# add tests for triangular_matrix_vector_solve - -# FRIZI: leaving these commented out because they don't compile for me -# so Mikolaj is going to finalize them -# linalg_add_test_kokkos( -# matrix_rank1_update_kokkos -# "matrix_rank1_update_kokkos: kokkos impl") -# linalg_add_test_kokkos( -# symmetric_matrix_rank1_update_kokkos -# "symmetric_matrix_rank1_update_kokkos: kokkos impl") -# linalg_add_test_kokkos( -# hermitian_matrix_rank1_update_kokkos -# "hermitian_matrix_rank1_update_kokkos: kokkos impl") - -# linalg_add_test_kokkos( -# symmetric_matrix_rank2_update_kokkos -# "symmetric_matrix_rank2_update_kokkos: kokkos impl") -# linalg_add_test_kokkos( -# hermitian_matrix_rank2_update_kokkos -# "hermitian_matrix_rank2_update_kokkos: kokkos impl") +linalg_add_test_kokkos( + symmetric_matrix_rank_k_update_kokkos + "symmetric_matrix_rank_k_update: kokkos impl") +linalg_add_test_kokkos( + hermitian_matrix_rank_k_update_kokkos + "hermitian_matrix_rank_k_update: kokkos impl") \ No newline at end of file