54 gko::ptr_param<GinkgoMatrix> mtx,
55 const std::array<bool, 3> activeAxis,
56 gko::ptr_param<GinkgoMatrix> supportPoints,
57 gko::ptr_param<GinkgoMatrix> targetPoints,
61 unsigned int extraDims)
63 auto k_mtx = map_data<MemorySpace>(mtx.get());
64 auto k_supportPoints = map_data<MemorySpace>(supportPoints.get());
65 auto k_targetPoints = map_data<MemorySpace>(targetPoints.get());
69 if (std::is_same_v<MemorySpace, Kokkos::HostSpace>) {
72 "create_rbf_system_matrix_row_major",
73 Kokkos::MDRangePolicy<
typename MemorySpace::execution_space, Kokkos::Rank<2>>{{0, 0}, {mtx->get_size()[0], mtx->get_size()[1]}},
74 KOKKOS_LAMBDA(
const int &i,
const int &j) {
82 const bool *deviceActiveAxis = activeAxis.data();
85 for (
size_t k = 0; k < activeAxis.size(); ++k) {
86 if (deviceActiveAxis[k]) {
87 double diff = k_supportPoints(j, k) - k_targetPoints(i, k);
91 dist = Kokkos::sqrt(dist);
92 k_mtx(i, j) = f(dist, rbf_params);
97 "create_rbf_system_matrix_col_major",
98 Kokkos::MDRangePolicy<
typename MemorySpace::execution_space, Kokkos::Rank<2>>{{0, 0}, {mtx->get_size()[0], mtx->get_size()[1]}},
99 KOKKOS_LAMBDA(
const int &i,
const int &j) {
104 const bool *deviceActiveAxis = activeAxis.data();
107 for (
size_t k = 0; k < activeAxis.size(); ++k) {
108 if (deviceActiveAxis[k]) {
109 double diff = k_supportPoints(k, j) - k_targetPoints(k, i);
113 dist = Kokkos::sqrt(dist);
114 k_mtx(i, j) = f(dist, rbf_params);
122 gko::ptr_param<GinkgoMatrix> mtx,
123 const std::array<bool, 3> activeAxis,
124 gko::ptr_param<GinkgoMatrix> supportPoints,
125 gko::ptr_param<GinkgoMatrix> targetPoints,
129 unsigned int extraDims)
131#ifdef KOKKOS_ENABLE_SERIAL
132 if (std::dynamic_pointer_cast<const gko::ReferenceExecutor>(exec)) {
137#ifdef PRECICE_WITH_OPENMP
138 if (std::dynamic_pointer_cast<const gko::OmpExecutor>(exec)) {
143#ifdef PRECICE_WITH_CUDA
144 if (std::dynamic_pointer_cast<const gko::CudaExecutor>(exec)) {
153#ifdef PRECICE_WITH_HIP
154 if (std::dynamic_pointer_cast<const gko::HipExecutor>(exec)) {
188 gko::ptr_param<GinkgoMatrix> mtx,
189 gko::ptr_param<const GinkgoMatrix> x,
190 const unsigned int dims)
193 auto k_mtx = map_data<MemorySpace>(mtx.get());
194 auto k_x = map_data<MemorySpace>(x.get());
196 if (std::is_same_v<MemorySpace, Kokkos::HostSpace>) {
197 Kokkos::parallel_for(
198 "fill_polynomial_matrix_row_major",
199 Kokkos::MDRangePolicy<
typename MemorySpace::execution_space, Kokkos::Rank<2>>{{0, 0}, {mtx->get_size()[0], mtx->get_size()[1]}},
200 KOKKOS_LAMBDA(
const int &i,
const int &j) {
210 Kokkos::parallel_for(
211 "fill_polynomial_matrix_col_major",
212 Kokkos::MDRangePolicy<
typename MemorySpace::execution_space, Kokkos::Rank<2>>{{0, 0}, {mtx->get_size()[0], mtx->get_size()[1]}},
213 KOKKOS_LAMBDA(
const int &i,
const int &j) {
227 gko::ptr_param<GinkgoMatrix> mtx,
228 gko::ptr_param<const GinkgoMatrix> x,
229 const unsigned int dims)
231#ifdef KOKKOS_ENABLE_SERIAL
232 if (std::dynamic_pointer_cast<const gko::ReferenceExecutor>(exec)) {
237#ifdef PRECICE_WITH_OPENMP
238 if (std::dynamic_pointer_cast<const gko::OmpExecutor>(exec)) {
243#ifdef PRECICE_WITH_CUDA
244 if (
auto p = std::dynamic_pointer_cast<const gko::CudaExecutor>(exec); p) {
253#ifdef PRECICE_WITH_HIP
254 if (std::dynamic_pointer_cast<const gko::HipExecutor>(exec)) {