From a6d5855baa64f55bc90d95922f74c88927c141d9 Mon Sep 17 00:00:00 2001 From: Incardona Pietro <incardon@mpi-cbg.de> Date: Mon, 8 Nov 2021 00:43:48 +0100 Subject: [PATCH] Fixing enable-cuda on clang M1 --- .../Vector/cuda/vector_dist_operators_cuda.cuh | 16 ++++++++-------- src/Operators/Vector/vector_dist_operators.hpp | 14 +++++++++++++- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/Operators/Vector/cuda/vector_dist_operators_cuda.cuh b/src/Operators/Vector/cuda/vector_dist_operators_cuda.cuh index 5f9227be..a8689cf3 100644 --- a/src/Operators/Vector/cuda/vector_dist_operators_cuda.cuh +++ b/src/Operators/Vector/cuda/vector_dist_operators_cuda.cuh @@ -398,7 +398,7 @@ struct vector_dist_op_compute_op<prp,false,comp_host> template<unsigned int prp, unsigned int dim ,typename vector, typename expr> __global__ void compute_expr_ker_vv(vector vd, expr v_exp) { - int p = threadIdx.x + blockIdx.x * blockDim.x; + unsigned int p = threadIdx.x + blockIdx.x * blockDim.x; if (p >= vd.size()) {return;} @@ -411,7 +411,7 @@ __global__ void compute_expr_ker_vv(vector vd, expr v_exp) template<unsigned int prp, typename vector, typename expr> __global__ void compute_expr_ker_v(vector vd, expr v_exp) { - int p = threadIdx.x + blockIdx.x * blockDim.x; + unsigned int p = threadIdx.x + blockIdx.x * blockDim.x; if (p >= vd.size()) {return;} @@ -421,7 +421,7 @@ __global__ void compute_expr_ker_v(vector vd, expr v_exp) template<unsigned int prp, typename vector, typename expr> __global__ void compute_expr_ker(vector vd, expr v_exp) { - int p = threadIdx.x + blockIdx.x * blockDim.x; + unsigned int p = threadIdx.x + blockIdx.x * blockDim.x; if (p >= vd.size_local()) {return;} @@ -433,7 +433,7 @@ __global__ void compute_expr_ker_slice(vector vd, expr v_exp, Point<n,int> comp) { typedef typename std::remove_const<typename std::remove_reference<decltype(pos_or_propL<vector,prp>::value_type(std::declval<vector>(),vect_dist_key_dx(0)))>::type>::type property_act; - int p = threadIdx.x + blockIdx.x * blockDim.x; + unsigned int p = threadIdx.x + blockIdx.x * blockDim.x; if (p >= vd.size_local()) {return;} @@ -443,7 +443,7 @@ __global__ void compute_expr_ker_slice(vector vd, expr v_exp, Point<n,int> comp) template<unsigned int prp, typename vector> __global__ void compute_double_ker(vector vd, double d) { - int p = threadIdx.x + blockIdx.x * blockDim.x; + unsigned int p = threadIdx.x + blockIdx.x * blockDim.x; if (p >= vd.size_local()) {return;} @@ -455,7 +455,7 @@ __global__ void compute_double_ker(vector vd, double d) template<unsigned int prp, unsigned int dim ,typename vector, typename NN_type, typename expr> __global__ void compute_expr_ker_sort_vv(vector vd, NN_type NN, expr v_exp) { - int p; + unsigned int p; GET_PARTICLE_SORT(p,NN); @@ -468,7 +468,7 @@ __global__ void compute_expr_ker_sort_vv(vector vd, NN_type NN, expr v_exp) template<unsigned int prp, typename vector, typename NN_type, typename expr> __global__ void compute_expr_ker_sort_v(vector vd, NN_type NN, expr v_exp) { - int p; + unsigned int p; GET_PARTICLE_SORT(p,NN); @@ -478,7 +478,7 @@ __global__ void compute_expr_ker_sort_v(vector vd, NN_type NN, expr v_exp) template<unsigned int prp, typename vector, typename expr, typename NN_type> __global__ void compute_expr_ker_sort(vector vd, NN_type NN, expr v_exp) { - int p; + unsigned int p; GET_PARTICLE_SORT(p,NN); diff --git a/src/Operators/Vector/vector_dist_operators.hpp b/src/Operators/Vector/vector_dist_operators.hpp index 7823d2c4..f135c802 100644 --- a/src/Operators/Vector/vector_dist_operators.hpp +++ b/src/Operators/Vector/vector_dist_operators.hpp @@ -980,7 +980,19 @@ public: * \return the result of the expression * */ - __device__ inline auto value(const unsigned int & k) const -> decltype(pos_or_propR<vector,prp>::value(v.v,k)) + __device__ __host__ inline auto value(const unsigned int & k) const -> decltype(pos_or_propR<vector,prp>::value(v.v,k)) + { + return pos_or_propR<vector,prp>::value(v.v,k); + } + + /*! \brief Evaluate the expression + * + * \param k where to evaluate the expression + * + * \return the result of the expression + * + */ + __device__ __host__ inline auto value(const unsigned int & k) -> decltype(pos_or_propR<vector,prp>::value(v.v,k)) { return pos_or_propR<vector,prp>::value(v.v,k); } -- GitLab